对于如何在VSCode上调试C/C++,网上已经有足够多的方案,主要是在VSCode上安装:C/C++拓展和Code Runner,以及launch.json、tasks.json及c_cpp_properties.json相关的配置。
但是,按照网上的一套操作之后却运行不起来,我遇到了其他问题:
1. /bin/sh: 1: node: not found。 解决方法:安装nodejs。
sudo apt install nodejs
node --version
2. main.cc:(.text+0x21): undefined reference to `所调用的函数'。网上的方案是各种调整tasts.json中的"${file}"变量来解决,例如:
"args": [
"-fdiagnostics-color=always",
"-g",
// "${file}",
"${fileDirname}/*.cc",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
但是依然无法解决问题。经排查,我们是使用了Code Runner,其内部可能存在自有的编译设定,打开Code Runner的settings.json,找到cpp的编译命令行,
"code-runner.executorMap": {"javascript": "node","java": "cd $dir && javac $fileName && java $fileNameWithoutExt","c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt","zig": "zig run","cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
发现了端倪:$fileName是编译时所打开的带有main函数的文件,因此,命令行中并没有包含相同同文件夹下的其他cpp源文件。因此,注释将$fileName改为*.c*即可(如下图所示)。
// "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
"cpp": "cd $dir && g++ *.c* -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
下一步将摸索调用其他文件下的源文件。