起因是这样的,之前我用的vscode是用gcc作为c语言编译器,但是某一天,出现了下图的error. Unable to start debugging. Program path '***' is missing or invalid.
![0cd76237549c838357d4c669506dc745.png](https://img-blog.csdnimg.cn/img_convert/0cd76237549c838357d4c669506dc745.png)
很明显,我的源文件路径是全英文和数字,不含中文。每天第一次编译,必报这种error,重启电脑再去编译,又可以正常运行。之后我上网查了好多资料,也没能解决。
解决不了问题,我就跳过问题,走另一条路。于是我上网搜到了clang和tcc,经过一番尝试,我发现tcc可以用,再也没出现这样的Unable to start debugging. Program path '***' is missing or invalid.
干货开启。首先去tcc官网下载安装包,这个新的
![e66832e927e242c0bf7396f43dd209c7.png](https://img-blog.csdnimg.cn/img_convert/e66832e927e242c0bf7396f43dd209c7.png)
然后把tcc路径添加到环境变量。用windows自带的搜索搜
![1e8b8671c74ff55f8aa7800ca68755c0.png](https://img-blog.csdnimg.cn/img_convert/1e8b8671c74ff55f8aa7800ca68755c0.png)
![60bbe167119ba8e42eb7939bb7138319.png](https://img-blog.csdnimg.cn/img_convert/60bbe167119ba8e42eb7939bb7138319.png)
![478a042892c6e30dda8bfbce174fecbf.png](https://img-blog.csdnimg.cn/img_convert/478a042892c6e30dda8bfbce174fecbf.png)
![bededfc2f026d5a9e30f2f4a6b53b9eb.png](https://img-blog.csdnimg.cn/img_convert/bededfc2f026d5a9e30f2f4a6b53b9eb.png)
同样的方法配置mingw64bin的环境变量,等会儿gdb用的是mingw64里面的。
接下来就是进vscode改配置。这些配置里面有关目录要改成你自己的,我的目录只是参考。
c_cpp_properties.json
{
"configurations": [
{
"name": "Win32_TCC",
"includePath": [
"D:/programming/tcc/include"
],
//"compilerPath": "D:/programming/tcc/tcc.exe",//这一行注释之后,就不会每次出现后面output的error
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"intelliSenseMode": "${default}",
"cStandard": "c11",
"cppStandard": "c++20"
}
],
"version": 4
}
launch.json
"version": "0.2.0",
"configurations": [
{
"name": "tcc.exe - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "D:/programming/tcc",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:programmingmingw64bingdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: tcc.exe build active file"
}
]
}
tasks.json
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: tcc.exe build active file",
"command": "D:/programming/tcc/tcc.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "D:/programming/tcc"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}
settings.json的,在"code-runner.executorMap"中添加以下c和c++(我平时不用c++,所以我注释它)的语句,效果如下。
"code-runner.executorMap": {
"c": "cd $dir && tcc -run $fileName",
//"cpp": "cd $dir && g++ -std=c++2a -fconcepts $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt && rm *.exe"
},
尝试运行
![d7d851af4bd91e11469be6821bcb08d9.png](https://img-blog.csdnimg.cn/img_convert/d7d851af4bd91e11469be6821bcb08d9.png)
成功,没有报之前的error.
![33b5b4d4057b2ce47938bf80119e7ff5.png](https://img-blog.csdnimg.cn/img_convert/33b5b4d4057b2ce47938bf80119e7ff5.png)
可能配置之后,output(输出)会报这样2条信息。无所谓,实际能用tcc编译出二进制exe包就行。原因可看下图。
![b4f7f68e1c334e331d962dde35c1a78f.png](https://img-blog.csdnimg.cn/img_convert/b4f7f68e1c334e331d962dde35c1a78f.png)
前三个exe是我用tcc编译的,可以正常运行,文件大小是4KB。而后面gcc编译的文件是54KB。实践证明上上图那2条error(s) output不影响我用tcc编译源码。
我自己摸索出了改进的方法,在c_cpp_properties.json里把
"compilerPath": "D:/programming/tcc/tcc.exe",
这一行注释,以后就不会有output里那unable to resolve configuration with compilerpath这样的提示。