macOS下VSCode配置C代码调试失败,如何修复launch.json?
问题核心
错误根源是调试目标指向了C源文件(.c),但LLDB调试需要的是编译后的二进制可执行文件,同时配置里的文件名calcfreq.c和实际源文件hello.c不匹配,导致路径无效。
解决步骤
1. 编译生成带调试信息的可执行文件
打开终端进入项目目录~/Projects/CProjects,执行以下编译命令(macOS自带clang编译器):
# 基础编译(无自定义头文件) clang -g hello.c -o hello # 若要包含自定义头文件目录includes,用此命令 clang -g hello.c -I includes -o hello
-g:必须添加,用于生成调试符号信息,否则无法正常断点调试-o hello:指定输出的可执行文件名为hello-I includes:指定自定义头文件的搜索目录
2. 修改launch.json配置
删除无用的Attach配置,修正program字段为编译后的可执行文件路径,同时匹配正确的文件名。修改后的配置如下:
{ "configurations": [ { "name": "(lldb) Launch Hello", "type": "cppdbg", "request": "launch", // 指向编译后的可执行文件,而非源文件 "program": "${workspaceFolder}/hello", "args": [], "stopAtEntry": true, // 可选:设为true时,启动调试自动停在main函数开头 "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "lldb", // 可选:搭配下方tasks.json实现调试前自动编译 "preLaunchTask": "C Compile" } ] }
3. 可选:配置tasks.json实现自动编译
如果不想每次手动敲编译命令,可配置调试前自动编译:按Cmd+Shift+B,选择"创建tasks.json文件",选择clang模板后替换为以下内容:
{ "version": "2.0.0", "tasks": [ { "label": "C Compile", "type": "shell", "command": "clang", "args": [ "-g", "${file}", "-I", "${workspaceFolder}/includes", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"], "detail": "自动编译当前C文件并生成带调试信息的可执行文件" } ] }
验证调试
打开hello.c,点击VSCode左侧调试按钮,选择"(lldb) Launch Hello"启动调试,即可正常进入断点调试流程。
内容的提问来源于stack exchange,提问作者D Fries
相关产品推荐
相关产品推荐

