M1 Macbook VSCode中C程序无法正常运行(终端输入失效)
问题解决:M1 Mac VSCode C程序无法在终端接收输入
环境与问题
- M1 Macbook,通过Homebrew安装MinGW
- VSCode已安装Microsoft C/C++扩展、Code Runner扩展
- 程序运行时输出在调试控制台,无法在终端输入,即使已设置“Run in Terminal”
示例代码
#include<stdio.h> int main() { int a; printf("hi\n"); scanf("%d",&a); printf("%d",a); return 0; }
调试配置文件(launch.json)
{ "configurations": [ { "name": "C/C++: clang build and debug active file", "type": "cppdbg", "request": "launch", "program": "${fileDirname}/${fileBasenameNoExtension}", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": true, "MIMode": "lldb", "preLaunchTask": "C/C++: clang build active file" }, { "name": "C/C++: gcc build and debug active file", "type": "cppdbg", "request": "launch", "program": "${fileDirname}/${fileBasenameNoExtension}", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "lldb", "preLaunchTask": "C/C++: gcc build active file" }, { "name": "(lldb) Launch", "type": "cppdbg", "request": "launch", "program": "enter program name, for example ${workspaceFolder}/a.out", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "lldb" } ], "version": "2.0.0" }
调试错误日志
Warning: Debuggee TargetArchitecture not detected, assuming x86_64. =thread-selected,id="1" =library-unloaded,id="/Users/kartikeydoshi/Desktop/untitled folder/test4",target-name="/Users/kartikeydoshi/Desktop/untitled folder/test4",host-name="/Users/kartikeydoshi/Desktop/untitled folder/test4" Loaded '/usr/lib/dyld'. Symbols loaded. Loaded '/Users/kartikeydoshi/Desktop/untitled folder/test4'. Symbols loaded. Loaded '/usr/lib/libSystem.B.dylib'. Symbols loaded. Loaded '/usr/lib/system/libcache.dylib'. Symbols loaded. Loaded '/usr/lib/system/libcommonCrypto.dylib'. Symbols loaded. Loaded '/usr/lib/system/libcompiler_rt.dylib'. Symbols loaded. Loaded '/usr/lib/system/libcopyfile.dylib'. Symbols loaded. Loaded '/usr/lib/system/libcorecrypto.dylib'. Symbols loaded. Loaded '/usr/lib/system/libdispatch.dylib'. Symbols loaded. Loaded '/usr/lib/system/libdyld.dylib'. Symbols loaded. Loaded '/usr/lib/system/libkeymgr.dylib'. Symbols loaded. Loaded '/usr/lib/system/libmacho.dylib'. Symbols loaded. Loaded '/usr/lib/system/libquarantine.dylib'. Symbols loaded. Loaded '/usr/lib/system/libremovefile.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_asl.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_blocks.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_c.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_collections.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_configuration.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_containermanager.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_coreservices.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_darwin.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_dnssd.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_featureflags.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_info.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_m.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_malloc.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_networkextension.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_notify.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_product_info_filter.dylib'. Cannot find or open the symbol file. Loaded '/usr/lib/system/libsystem_sandbox.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_secinit.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_kernel.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_platform.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_pthread.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_symptoms.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_trace.dylib'. Symbols loaded. Loaded '/usr/lib/system/libunwind.dylib'. Symbols loaded. Loaded '/usr/lib/system/libxpc.dylib'. Symbols loaded. Loaded '/usr/lib/libc++abi.dylib'. Symbols loaded. Loaded '/usr/lib/libobjc.A.dylib'. Symbols loaded. Loaded '/usr/lib/liboah.dylib'. Symbols loaded. Loaded '/usr/lib/libc++.1.dylib'. Symbols loaded. hi 3 Unable to perform this action because the process is running.
编译成功日志
* Executing task: C/C++: gcc build active file Starting build... /usr/bin/gcc -fdiagnostics-color=always -g "/Users/kartikeydoshi/Desktop/untitled folder/test4.c" -o "/Users/kartikeydoshi/Desktop/untitled folder/test4" Build finished successfully. * Terminal will be reused by tasks, press any key to close it.
解决方案
1. 修正调试配置的externalConsole参数
当前C/C++: gcc build and debug active file配置中externalConsole为false,将其改为true,让调试时启动外部终端接收输入:
{ "name": "C/C++: gcc build and debug active file", "type": "cppdbg", "request": "launch", "program": "${fileDirname}/${fileBasenameNoExtension}", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": true, // 修改此处为true "MIMode": "lldb", "preLaunchTask": "C/C++: gcc build active file" }
2. 处理M1架构兼容性问题
日志中提示Warning: Debuggee TargetArchitecture not detected, assuming x86_64,说明存在架构不匹配。MinGW在M1上默认可能编译x86_64程序,需指定arm64架构编译:
- 修改tasks.json(若没有则通过C/C++扩展生成),在gcc编译命令中添加
-arch arm64参数:
{ "tasks": [ { "type": "cppbuild", "label": "C/C++: gcc build active file", "command": "/usr/bin/gcc", "args": [ "-fdiagnostics-color=always", "-g", "-arch", "arm64", // 添加此行 "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "Task generated by Debugger." } ], "version": "2.0.0" }
3. 确认Code Runner设置
打开VSCode设置,搜索Code Runner: Run In Terminal,确保勾选该选项;同时检查Code Runner: Executor Map中C的配置是否正确指向MinGW的gcc:
"code-runner.executorMap": { "c": "cd $dir && gcc -arch arm64 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt" }
4. 权限问题处理
调试时请求文件夹访问权限,需确保VSCode已获得该文件夹的访问权限:
- 打开系统偏好设置 → 安全性与隐私 → 隐私 → 文件与文件夹,找到VSCode并勾选对应文件夹的权限。
内容的提问来源于stack exchange,提问作者Kartikey Doshi
相关产品推荐
相关产品推荐

