vscode远程调试C++环境搭建


| 阅读 |,阅读约 2 分钟
| 复制链接:

Overview

环境准备

vscode官网说明

配置远程主机

  1. 安装 Remote Development vscode插件
  2. ssh-copy-id,将远程机器添加到免密登录列表中
  3. 远程连接到该机器
  4. 选择远程主机的代码路径(会打开一个新的vscode窗口)

远程主机配置

配置编译运行环境

  1. 安装C/C++插件(在新打开的vscode窗口上,插件也是会安装到远程机器上,安装完成会提示重新加载窗口

运行环境配置

  1. 创建task.json文件用于编译

shift+command+p,搜索Build task,回车会自动在当前目录的.vscode下生成task.json文件

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}
  1. 创建launch.json文件用于调试

远程主机上要先安装上gcc、gdb、make、zlib-devel(可选), yum install -y gcc-c++ make gdb zlib-devel

左侧调试菜单,选择新建launch.json,并选择下拉框的C++,回车就自动在.vscode目录下生成launch.json文件

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}
  1. 配置launch.json的前置步骤为task.json

添加preLaunchTask,value为task.json中的label

1{
2  ...
3  // 这里配置调试前需要执行的操作,名称是前面的task.json中设置的label
4  "preLaunchTask": "build",
5  ...
6}
  1. 按F5开始调试代码

其他注意事项

编译时,启动debug信息

编译优化会导致调试时源码信息和断点信息不匹配,并且变量做过优化,无法看到真实值。所以有必要将编译参数改成不优化,调试时才能得到准确的信息

1# -j表示启动的线程数
2# -O0表示不作编译优化
3make -j10 -e CPPFLAGS=-O0