如何使用vscode附加到远程gdb?

时间:2018-11-28 12:37:45

标签: debugging visual-studio-code

我想使用vscode进行远程C / C ++ gdb调试。我在配置时使用“本地调试”扩展名。这是我的 launch.json 配置

{
        "type": "gdb",
        "request": "launch",
        "name": "Launch Program (SSH)",
        "target": "./hello",
        "cwd": "/home/root/test1/",
        "ssh": {
            "host": "192.168.15.130",
            "cwd": "/home/root/test1/",
            "password": "",
            "user": "root"
} 

目标运行

gdbserver localhost:2000 ./hello

很遗憾,我无法与远程设备连接进行调试。有没有配置此方面的经验?

2 个答案:

答案 0 :(得分:2)

您必须在远程计算机上安装gdbserver。例如

apt-get install gdbserver

在远程计算机上启动gdbserver

gdbserver :1234 ./mybinary

选择您喜欢的任何端口-在1234

通过键入

测试从本地计算机到gdbserver的连接
gdb
(gdb) target remote myremotehostname:1234

触发任何gdb命令以检查其是否有效-例如c(或continue)以继续运行mybinary

将以下内容放入您的.vscode/launch.json

    {
      "name": "C++ Launch",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceRoot}/mybinary",
      "miDebuggerServerAddress": "myremotehostname:1234",
      "cwd": "${workspaceRoot}",
      "externalConsole": true,
      "linux": {
        "MIMode": "gdb"
      }
    }

或使用其他答案中给出的"type": "gdb"启动配置。

为了使代码浏览和工作正常进行,使源目录在本地和远程端同步非常重要。使用网络文件系统,手动复制,git触发器或类似方法进行设置。

答案 1 :(得分:0)

我在这里找到了这个问题的答案: Is it possible to attach to a remote gdb target with vscode?

摘要:

首先,您需要为VS Code安装本机调试扩展。

然后编辑launch.json文件并添加:

{
    "type": "gdb",
    "request": "attach",
    "name": "Attach to gdbserver",
    "executable": "<path to the elf/exe file relative to workspace root in order to load the symbols>",
    "target": "X.X.X.X:9999",
    "remote": true,
    "cwd": "${workspaceRoot}", 
    "gdbpath": "path/to/your/gdb",
    "autorun": [
            "any gdb commands to initiate your environment, if it is needed"
        ]
}

然后,您可以重新启动VS Code并开始调试。 确保没有其他客户端连接到gdb服务器,否则您将收到超时错误。