VS Code调试C程序提示program <path> does not exist报错求助
报错核心原因
弹出「program
- 你的
launch.json里写死的待调试程序路径,和实际编译生成的可执行文件路径不匹配,甚至路径里连Windows可执行文件必需的.exe后缀都没加 - 你贴的C代码存在大量语法、逻辑错误,根本没法成功编译出可执行文件,调试器找不到要启动的程序自然报错
解决步骤
1. 先修正调试配置
你现在用的是C/C++ Runner自动生成的默认配置,路径写死到了build/Debug/outDebug,但你根本没配对应的构建流程生成这个文件,按下面改:
- 最简单的方式:直接删掉当前的
.vscode/launch.json文件,打开你的计算器C源码,点击编辑器右上角运行按钮旁边的下拉箭头,选择「调试C/C++文件」,再选中你本地安装的MinGW对应的gcc/gdb环境,插件会自动生成匹配当前文件的正确配置,不需要手动写路径。 - 手动改配置的话,把
launch.json里的program字段改成实际编译输出的exe路径,比如你的源码放在c:/Users/ghazi/Desktop/calculator目录下、源码名叫calculator.c,就改成"program": "c:/Users/ghazi/Desktop/calculator/calculator.exe",记得必须加.exe后缀。 - 补加
"preLaunchTask": "C/C++: gcc 生成活动文件"配置项,确保每次启动调试前自动先编译最新代码,避免跑旧文件或者找不到文件。
2. 修复代码里的编译错误,不然永远生成不了可执行文件
配置改对了但代码编不过,还是会报同样的错,必须把下面这些问题全改了:
- 所有
scanf读取普通变量时必须传入变量地址,你现在写的scanf("%d",opt_i);、scanf("%c",opt_c);、scanf("%d",ntp);全漏了取地址符&,统一改成scanf("格式符", &变量名)的形式,比如scanf("%d", &opt_i);。 - C语言不允许在函数内部定义其他函数,你现在把
multiplication、addition的实现全写在main函数里了,还在函数名后面多写了分号,把这两个函数的实现全移到main函数外面;另外你声明了division、subtraction两个函数但完全没写实现,要么补上实现,要么先删掉没用的声明,不然链接阶段会报错。 - Windows环境下用
sleep函数必须引入头文件<windows.h>,不然编译找不到函数定义;另外你写的递归调用main的代码int main();是错的,直接写main();就行,不要在调用的时候加返回值类型。 - 乘5个数、加5个数的逻辑分支里,漏写了
num5的scanf读取逻辑,直接用未初始化的num5计算会得到随机结果,把读入代码补上。 - 菜单里的「Mutliply」是拼写错误,正确写法是
Multiply,不影响运行但建议修正。
3. 验证编译
改完后先在VS Code终端里手动执行编译命令验证:
gcc 你的源码文件名.c -o calculator.exe -g
执行完如果没有报错,当前目录下会生成calculator.exe文件,这时候再启动调试就不会报找不到程序的错误了。
如果你还没装MinGW编译环境,先把gcc、gdb安装好并配置到系统环境变量,不然所有配置改完也没法编译。
内容的提问来源于stack exchange,提问作者Ghazi Mohammed
相关产品推荐
相关产品推荐

