Ubuntu系统下VSCode无法运行/调试C代码:程序不存在错误的配置排查求助
解决VS Code调试C/C++时提示
a.out不存在的问题 兄弟,我看了你的问题和配置文件,立马就找到俩核心问题——这俩配置错了,导致调试器找不到你明明存在的a.out!咱一步步来改:
1. 先把launch.json的致命错误改掉
你现在的launch.json里program字段还是默认的示例文本,这就是调试器报错的直接原因!调试器根本不知道要运行哪个文件啊!
修改launch.json里的program字段:
"program": "${workspaceFolder}/a.out",
${workspaceFolder}是VS Code当前打开的工作目录,也就是你~/Documents/Drexel这个文件夹,这样调试器就能精准找到你在终端生成的a.out了。- 另外
cwd字段保持${fileDirname}就好,它会自动定位到当前打开的代码文件所在目录,和你终端的工作目录一致。
修改后的完整launch.json参考:
{ "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/a.out", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }
2. 把tasks.json换成Linux下的编译配置
你现在的tasks.json用了msbuild——这是Windows平台的MSVC编译工具啊!Linux下咱得用g++或者gcc来编译C/C++代码,完全不兼容的!
直接替换成下面的tasks.json内容:
{ "version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "g++", "args": [ "${file}", "-o", "${fileDirname}/a.out" ], "group": { "kind": "build", "isDefault": true }, "presentation": { "reveal": "silent" }, "problemMatcher": "$gcc" } ] }
- 这个配置会编译当前打开的代码文件(
${file}),并在同一目录生成a.out可执行文件,和你终端手动敲g++ helloworld.c的效果完全一样。 - 你可以按
Ctrl+Shift+B直接运行这个编译任务,不用每次去终端敲命令。
3. 优化c_cpp_properties.json(可选,但更整洁)
你的这个配置文件里有两个重复的配置(Linux和gcc),其实留一个就行,完全不影响功能,但改了更清爽:
{ "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**" ], "defines": [], "compilerPath": "/usr/bin/gcc", "cStandard": "gnu17", "cppStandard": "gnu++14", "intelliSenseMode": "linux-gcc-x64" } ], "version": 4 }
最后验证步骤
- 打开你的
helloworld.c或者ccadd.c文件; - 按
Ctrl+Shift+B运行编译任务,生成a.out; - 点击VS Code左侧的调试按钮(或按
F5)启动调试,这时候就不会再报错找不到a.out了!
额外提示
如果你想让调试前自动编译,还可以在launch.json里加一行"preLaunchTask": "build",这样每次按F5调试时,VS Code会先帮你编译代码,省得手动跑编译任务。
内容的提问来源于stack exchange,提问作者ProfHariSeldon




