VSCode 远程 gdb server 开发调试(详细教程)

📢 前言

如何在远程服务器上安装GDB server,并在 VS Code 配置launch.json连接远程调试。


🖥️ 1. 在远程服务器上安装GDB server,配置launch.json连接远程调试

远程调试的核心思想是将代码的编辑与调试分开:

  • 本地(你的电脑):使用VS Code编辑代码并控制调试过程。

  • 远程(服务器):实际运行代码并通过GDB server提供调试支持。

为了实现这一功能:

  1. GDB server 是一个在远程服务器上运行的程序,它负责执行你的代码并接受本地调试工具的指令。

  2. launch.json 是VS Code中的调试配置文件,用于告诉VS Code如何连接到远程的GDB server并控制调试。

小贴士
换句话说,你在远程服务器上安装并运行GDB server,让它监听某个端口(例如1234),然后在本地通过launch.json配置VS Code,使其通过网络连接到该端口,从而实现远程代码的调试。这种方式特别适用于嵌入式开发或需要在远程服务器上运行代码的场景。


🔑 2. 实操步骤

以下是具体的操作流程,确保你能够从零开始设置并运行远程调试。

1. 在远程服务器上安装GDB server
  • 检查是否已安装

    • 在远程服务器上,打开终端,输入以下命令检查GDB server是否可用:
      gdbserver --version
    • 如果返回版本信息,说明已安装;否则需要安装。

  • 安装GDB server(以Linux服务器为例):

    • 对于Ubuntu/Debian系统,运行:
      sudo apt-get update
      sudo apt-get install gdbserver
    • 对于CentOS/RHEL系统,运行:
      sudo yum install gdb-gdbserver
    • 如果是其他系统或嵌入式设备,可能需要下载源码并编译安装(例如交叉编译适用于ARM设备的GDB server)。

  • 验证安装

    • 安装完成后再次运行gdbserver --version,确保安装成功。

2. 上传代码并启动GDB server
  • 上传代码到远程服务器

    • 使用scp命令将本地代码上传到服务器。例如:
      scp your_program user@remote_host:/path/to/destination
      • your_program是你编译好的可执行文件。

      • user@remote_host是远程服务器的用户名和地址(例如user@192.168.1.100)。

      • /path/to/destination是远程服务器上的目标路径。

    • 或者,你可以使用VS Code的“Remote - SSH”插件直接在远程服务器上编辑和操作代码。

  • 启动GDB server

    • 登录远程服务器(可以用ssh user@remote_host),进入代码所在目录。

    • 运行以下命令启动GDB server:
      gdbserver :1234 your_program
      • :1234是GDB server监听的端口号,可以根据需要改为其他未被占用的端口。

      • your_program是你的可执行程序名称。

    • 启动成功后,你会看到类似以下输出:
      Listening on port 1234
      这表示GDB server已运行并等待本地连接。
3. 在本地VS Code中配置launch.json
  • 创建launch.json

    • 打开VS Code,在你的项目文件夹中:

      1. 1. 点击左侧的“调试”图标(形似播放按钮)。

      2. 2. 点击“创建 launch.json 文件”。

      3. 3. 选择“C++ (GDB/LLDB)”环境,然后选择“gdb”作为调试器。

    • VS Code会生成一个默认的launch.json文件。

  • 编辑launch.json

    • 将其修改为以下内容,以连接远程GDB server:
      {
          "version":"0.2.0",
          "configurations":[
              {
                  "name":"Remote Debug",
                  "type":"cppdbg",
                  "request":"launch",
                  "program":"/path/to/your_program_on_remote",
                  "args":[],
                  "stopAtEntry":false,
                  "cwd":"/path/to/your_program_on_remote",
                  "environment":[],
                  "externalConsole":false,
                  "MIMode":"gdb",
                  "miDebuggerPath":"/usr/bin/gdb",
                  "miDebuggerServerAddress":"remote_host:1234",
                  "setupCommands":[
                      {
                          "description":"Enable pretty-printing for gdb",
                          "text":"-enable-pretty-printing",
                          "ignoreFailures":true
                      }
                  ]
              }
          ]
      }
    • 关键字段说明

      • "program":远程服务器上可执行文件的完整路径,例如/home/user/your_program

      • "cwd":远程服务器上的工作目录,通常与program路径一致。

      • "miDebuggerServerAddress":远程服务器的IP地址和GDB server端口,例如192.168.1.100:1234

      • "miDebuggerPath":本地GDB的路径,通常是/usr/bin/gdb(Linux/Mac)或交叉编译的GDB路径(例如针对ARM设备的arm-none-eabi-gdb)。

4. 启动调试
  • 确保网络连通

    • 确认本地和远程服务器之间的网络连接正常,且端口(例如1234)未被防火墙阻挡。

  • 运行调试

    • 在VS Code中:

      1. 选择“调试”面板中的“Remote Debug”配置。

      2. 点击“开始调试”按钮(绿色播放按钮)或按F5

    • VS Code会连接到远程GDB server,开始调试。你可以在VS Code中设置断点、查看变量值、单步执行代码等。


🚀 示例:调试远程服务器上的程序

假设:

  • 远程服务器IP为192.168.1.100

  • 程序名为my_app,位于远程路径/home/user/my_app

  • 你已在远程服务器上运行:
    gdbserver :1234 /home/user/my_app

本地launch.json配置如下:

{
    "version":"0.2.0",
    "configurations":[
        {
            "name":"Remote Debug",
            "type":"cppdbg",
            "request":"launch",
            "program":"/home/user/my_app",
            "args":[],
            "stopAtEntry":false,
            "cwd":"/home/user",
            "environment":[],
            "externalConsole":false,
            "MIMode":"gdb",
            "miDebuggerPath":"/usr/bin/gdb",
            "miDebuggerServerAddress":"192.168.1.100:1234",
            "setupCommands":[
                {
                    "description":"Enable pretty-printing for gdb",
                    "text":"-enable-pretty-printing",
                    "ignoreFailures":true
                }
            ]
        }
    ]
}

启动调试后,你就可以在VS Code中控制my_app的执行了。


👉 注意事项

  • 网络问题:如果连接失败,检查防火墙设置或使用ping remote_host测试连通性。

  • 权限:确保远程服务器上your_program和GDB server有执行权限(可以用chmod +x赋予权限)。

  • 调试符号:如果程序没有调试信息(例如未用-g编译),可能无法查看变量或设置断点。


🔒 总结

通过在远程服务器上安装并运行GDB server,然后在VS Code的launch.json中配置连接,你可以实现本地编辑、远程调试的无缝体验。这种方法简单高效,适用于各种开发场景。


如果这篇文章对你有帮助,记得点赞👍+ 关注

关注公众号,获取更多资讯、嵌入式开发技巧和技术干货🌱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

积步千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值