vscode远程调试

当开发linux应用时,一般的开发环境配置为:windows上完成编码,linux上完成编译加调试。但此种配置时,需要频繁的windows<=====>linux之间切换,对工作效率影响极大。vscodedebug特性完美的解决了这个问题,同时支持launch(启动调试)和attach(挂载调试)。

要求

vscode >= 1.35

安装vscode

https://code.visualstudio.com/

安装插件

Remote Development
C/C++

server端安装openssh-server

1
yum install openssh-server

client端安装openssh-client

win版本>=win10:自带,不需要安装;
win版本<win10:安装git,包含ssh-client(https://git-scm.com/download)

配置Linux无密码登录

1
2
3
4
#生成公私钥
ssh-keygen  -C "your_email@example.com"       #-C用于设置注释
#将公钥拷贝到服务器
ssh-copy-id  your_key.pub root@YOUR-SERVER-IP 

配置 - .vscode/launch.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            // 启动进程并调试
            "name": "Launch",
            "type": "cppdbg",
            "request": "launch",
            // 程序启动路径
            "program": "${workspaceFolder}/output/bin/adns",
            // 程序启动参数
            "args": [
                "-f",
                "${workspaceFolder}/output/etc/adns.conf"
            ],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            // 环境变量设置
            "environment": [
                {
                    "name": "LD_LIBRARY_PATH",
                    "value": "/usr/local/lib/:$LD_LIBRARY_PATH"
                }
            ],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        },
        {
            // 挂载已启动的进程
            "name": "Attach",
            "type": "cppdbg",
            "request": "attach",
            "program": "/root/zhaotao/adns-67/output/bin/adns",
            // 选择挂载的pid
            "processId": "${command:pickRemoteProcess}",
            "pipeTransport": {
                "pipeCwd": "",
                "pipeProgram": "/usr/bin/bash",
                "pipeArgs": [
                    "-c"
                ],
                "debuggerPath": "/usr/bin/gdb"
            },
            "linux": {
                "MIMode": "gdb",
                "miDebuggerPath": "/usr/bin/gdb"
            },
            // 指定源码路径
            //"sourceFileMap": {
            //    "/root/zhaotao/adns-67/src": "${workspaceFolder}/src"
            //}
        }
    ]
}