配置一下vscode里面的C/C++调试
主体是跟着菜鸟入门之一:在Ubuntu18.04下利用VS code编写C语言的配置_ubuntu 18.04 vs code 配置c语言-CSDN博客这个来的
有一些不好理解的地方,在这里为自己说明
(1)在创建tasks.json时候,按照他的步骤找到run tasks之后,选择第一个,这时候点击没有反应,右键再点击右侧的齿轮即可添加
(2)launch.json里面的
{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++ Runner: Debug Session",
"type": "cppdbg",
"request": "launch",
"args": [],
"stopAtEntry": false,
"externalConsole": false,
"cwd": "/home/gh/Desktop/test/NetassTest",
"program": "/home/gh/Desktop/test/NetassTest/client.out",
"MIMode": "gdb",
"miDebuggerPath": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: gcc-10 生成活动文件",
}
]
}
其中的program的路径与cwd的路径和文章所说的一样,需要二者保持一致,这里需要说明的是,在tasks文件里面,关于路径如下
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc-10 生成活动文件",
"command": "/usr/bin/gcc-10",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.out"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "编译器: /usr/bin/gcc-10"
}
]
}
可以看出,两个文件中关于路径的不同,此处理由也很简单,因为第一个是绝对路径,而第二个是基于自己所在的路径生成的,也就是说一个绝对一个相对,是不互相矛盾的。
(3)
tasks文件的作用就是相当于g++ -g main.cpp swap.cpp -o a.out,并且所有的都更改完毕以后是不用特地build的,只需要执行相关命令,执行构建任务就可以了,这里就是再次ctrl+shift+P,而后执行tasks: run task
(4)关于路径的说明
"${fileDirname}/${fileBasenameNoExtension}.out"
这里面
${fileDirname}
:这个变量表示当前打开文件的目录路径。如果正在编辑一个名为example.c
的文件,该文件位于/home/user/projects/myapp
目录下,那么${fileDirname}
的值就是/home/user/projects/myapp
。
${fileBasenameNoExtension}
:这个变量表示当前打开文件的基本名称(即文件名,但不包括其扩展名)。继续上面的例子,如果当前打开的文件是example.c
,那么${fileBasenameNoExtension}
的值就是example
。
将这两个变量组合起来,并添加一个.out
扩展名,
"${fileDirname}/${fileBasenameNoExtension}.out"
就构成了一个完整的路径和文件名,用于指定编译输出的可执行文件的位置和名称。继续上面的例子,输出文件的完整路径和名称将会是/home/user/projects/myapp/example.out
在tasks里面,
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.out"
这里面的${file}就是你自己写的代码文件,比如“client.c”,这里没写名称的原因和上文一样