vscode远程调试C++环境搭建
| 阅读 | 共 926 字,阅读约
Overview
环境准备
配置远程主机
- 安装 Remote Development vscode插件
- ssh-copy-id,将远程机器添加到免密登录列表中
- 远程连接到该机器
- 选择远程主机的代码路径(会打开一个新的vscode窗口)
配置编译运行环境
- 安装C/C++插件(在新打开的vscode窗口上,插件也是会安装到远程机器上,安装完成会提示重新加载窗口
- 创建task.json文件用于编译
shift+command+p,搜索Build task
,回车会自动在当前目录的.vscode下生成task.json文件
1{
2 "version": "2.0.0",
3 "tasks": [
4 {
5 // 唯一标识,后面配置launch.json时会用到
6 "label": "build",
7 // 该任务执行的命令,这里是执行make编译
8 "command": "/usr/bin/make",
9 // 执行命令的类型
10 "type": "shell",
11 // command对应的参数,这里我们设置CPPFLAGS为-O0,表示不需要编译器对代码做优化
12 "args": [
13 "ver=debug",
14 "-j10",
15 "-e",
16 "CPPFLAGS=-O0"
17 ],
18 "problemMatcher": [],
19 "group": {
20 "kind": "build",
21 "isDefault": true
22 }
23 }
24 ]
25}
- 创建launch.json文件用于调试
远程主机上要先安装上gcc、gdb、make、zlib-devel(可选), yum install -y gcc-c++ make gdb zlib-devel
左侧调试菜单,选择新建launch.json,并选择下拉框的C++,回车就自动在.vscode目录下生成launch.json文件
1{
2 // Use IntelliSense to learn about possible attributes.
3 // Hover to view descriptions of existing attributes.
4 // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5 "version": "0.2.0",
6 "configurations": [
7 {
8 "name": "(gdb) Launch",
9 "type": "cppdbg",
10 "request": "launch",
11 // 调试的入口程序,${workspaceFolder}是当前工作目录
12 "program": "${workspaceFolder}/src/processor/minidump_stackwalk",
13 // 启动程序的参数
14 "args": [
15 "-m",
16 "http://crash-file.glodon.com/ZPert/4.0.0.44/0273e0e2-458d-47af-8a5a-3661041eb3f7.gz",
17 "http://192.168.162.89:50070/webhdfs/v1/gcr/symbols",
18 "http://192.168.162.89:50070/webhdfs/v1/gcr/system_symbols",
19 "http://192.168.162.89:50070/webhdfs/v1/gcr/zpert/4.0.0.44/symbols",
20 "http://192.168.162.89:50070/webhdfs/v1/gcr/default_symbols/qt/x86",
21 "-c",
22 "http://gdl.glodon.com/download/symbols"
23 ],
24 "stopAtEntry": false,
25 "cwd": "${workspaceFolder}",
26 "environment": [],
27 "externalConsole": false,
28 // 调试用到的gdb,需要提前安装好
29 "MIMode": "gdb",
30 "setupCommands": [
31 {
32 "description": "Enable pretty-printing for gdb",
33 "text": "-enable-pretty-printing",
34 "ignoreFailures": true
35 }
36 ]
37 }
38 ]
39}
- 配置launch.json的前置步骤为task.json
添加preLaunchTask
,value为task.json中的label
1{
2 ...
3 // 这里配置调试前需要执行的操作,名称是前面的task.json中设置的label
4 "preLaunchTask": "build",
5 ...
6}
- 按F5开始调试代码
其他注意事项
编译时,启动debug信息
编译优化会导致调试时源码信息和断点信息不匹配,并且变量做过优化,无法看到真实值。所以有必要将编译参数改成不优化,调试时才能得到准确的信息
1# -j表示启动的线程数
2# -O0表示不作编译优化
3make -j10 -e CPPFLAGS=-O0