You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu系统下VSCode无法运行/调试C代码:程序不存在错误的配置排查求助

解决VS Code调试C/C++时提示a.out不存在的问题

兄弟,我看了你的问题和配置文件,立马就找到俩核心问题——这俩配置错了,导致调试器找不到你明明存在的a.out!咱一步步来改:

1. 先把launch.json的致命错误改掉

你现在的launch.jsonprogram字段还是默认的示例文本,这就是调试器报错的直接原因!调试器根本不知道要运行哪个文件啊!

修改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(可选,但更整洁)

你的这个配置文件里有两个重复的配置(Linuxgcc),其实留一个就行,完全不影响功能,但改了更清爽:

{
 "configurations": [
 {
 "name": "Linux",
 "includePath": [
 "${workspaceFolder}/**"
 ],
 "defines": [],
 "compilerPath": "/usr/bin/gcc",
 "cStandard": "gnu17",
 "cppStandard": "gnu++14",
 "intelliSenseMode": "linux-gcc-x64"
 }
 ],
 "version": 4
}

最后验证步骤

  1. 打开你的helloworld.c或者ccadd.c文件;
  2. Ctrl+Shift+B运行编译任务,生成a.out
  3. 点击VS Code左侧的调试按钮(或按F5)启动调试,这时候就不会再报错找不到a.out了!

额外提示

如果你想让调试前自动编译,还可以在launch.json里加一行"preLaunchTask": "build",这样每次按F5调试时,VS Code会先帮你编译代码,省得手动跑编译任务。

内容的提问来源于stack exchange,提问作者ProfHariSeldon

火山引擎 最新活动