You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 21:45:37