Linux中使用VS Code编译调试C++项目详解

2020-01-06 16:04:59于海丽

     c. 如果第一个target的文件不存在,或其依赖的.o 文件修改时间要比target这个文件新,则会执行紧接着的command来生成这个target文件;

     d. 如果第一个target所依赖的.o文件不存在,则会在makefile文件中找target为.o的依赖,如果找到则执行command,.o的依赖必是.h或.cpp,于是make可以生成 .o 文件了

     e. 回溯到b步执行最终目标

看一下执行结果


[xxx@xxx ~]$ make
g++ -g -c hw2.cpp
g++ -g -c solution.cpp
g++ -o build hw2.o solution.o #注意前面必须是tab,不能是空格
[xxx@xxx ~]$ ./build 
HI!
[xxx@xxx ~]$

由于makefile文件中加了-g这一选项,于是可以通过gdb进行调试,并且会命中断点,这里感兴趣可以再了解一下gdb的使用。

接下来我们要说到如何通过VS Code进行调试。

三、在VS Code中编译调试

首先安装完VS Code之后,还需要安装一下扩展cpptools,请自行完成。

vs,code,调试,linux,编译调试,vscode,c

点击菜单 查看-> 调试,或直接快捷键ctrl + shift + D

vs,code,调试,linux,编译调试,vscode,c

点击设置图标,在弹出的选择环境中选择C++(GDB/LLDB),会自动创建一个launch.json文件

vs,code,调试,linux,编译调试,vscode,c

顾名思义,laucn.json的作用是告诉VS Code如何执行启动任务,也就是我们要把什么文件启动起来,在上述例子中显然是build这个可执行文件了。修改一下json文件中波浪线的program节点,改成${workspaceRoot}/build,其余的暂时不变


1 {
 2  "version": "0.2.0",
 3  "configurations": [
 4   {
 5    "name": "C++ Launch",
 6    "type": "cppdbg",
 7    "request": "launch",
 8    "program": "${workspaceRoot}/build",
 9    "args": [],
10    "stopAtEntry": false,
11    "cwd": "${workspaceRoot}",
12    "environment": [],
13    "externalConsole": true,
14    "linux": {
15     "MIMode": "gdb"
16    },
17    "osx": {
18     "MIMode": "lldb"
19    },
20    "windows": {
21     "MIMode": "gdb"
22    }
23   },
24   {
25    "name": "C++ Attach",
26    "type": "cppdbg",
27    "request": "attach",
28    "program": "${workspaceRoot}/build",
29    "processId": "${command.pickProcess}",
30    "linux": {
31     "MIMode": "gdb"
32    },
33    "osx": {
34     "MIMode": "lldb"
35    },
36    "windows": {
37     "MIMode": "gdb"
38    }
39   }
40  ]
41 }