一文掌握vscode远程gdb调试

0 背景

最近在同事的安利下,尝试了用 vscode 做 gdb 调试,用完之后,“真香”。

话不多说,本文要实现的是:在 windows 端远程调试 linux 服务器和 arm 嵌入式设备上的 c++ 代码,对 gdb 调试的配置及使用进行一个整理。

其它:《一文掌握vscode远程调试python代码

1 远程连接

首先需要实现远程连接服务器,在插件库中搜索 “remote-ssh”,双击下载安装即可(下图中我已安装好),安装好之后在侧边栏出现远程资源管理器

点击 + 号,在弹出的命令窗口中输入 ssh 登陆指令,按照提示,输入密码并确认,即可连接成功

2 配置 GDB 环境

在服务端创建一个 c++ 代码,这里以《Linux之C++获取系统用户名》中的代码为例,很简单

  1. #include <unistd.h>
  2. #include <pwd.h>
  3. #include <iostream>
  4. int main()
  5. {
  6. struct passwd* pwd;
  7. uid_t userid;
  8. userid = getuid();
  9. pwd = getpwuid(userid);
  10. std::cout << "pw_name:" << pwd->pw_name << std::endl;
  11. std::cout << "pw_passwd:" << pwd->pw_passwd << std::endl;
  12. std::cout << "pw_uid:" << pwd->pw_uid << std::endl;
  13. std::cout << "pw_gid:" << pwd->pw_gid << std::endl;
  14. std::cout << "pw_gecos:" << pwd->pw_gecos << std::endl;
  15. std::cout << "pw_dir:" << pwd->pw_dir << std::endl;
  16. std::cout << "pw_shell:" << pwd->pw_shell << std::endl;
  17. return 0;
  18. }

编译方法如下,注意一定要加上 -g 指令,否则无法 gdb 调试

g++ -g test.cpp -o test

然后点击 文件-打开文件夹,找到创建的代码路径,确定后,在左侧的资源管理器可以看到代码文件。

第一次运行需要安装 c++ 的扩展,在扩展页面中,安装 C/C++ 

 同时搜索 GDB Debug 并安装

 安装好之后,点击“运行和调试”按钮,“创建 launch.json” 文件,

 选择 C++(GDB/LLDB)项,自动生成 launch.json 文件,内容如下

  1. {
  2. // 使用 IntelliSense 了解相关属性。
  3. // 悬停以查看现有属性的描述。
  4. // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
  5. "version": "0.2.0",
  6. "configurations": []
  7. }

按照下边的内容,对应的修改一下

  1. {
  2. // 使用 IntelliSense 了解相关属性。
  3. // 悬停以查看现有属性的描述。
  4. // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
  5. "version": "0.2.0",
  6. "configurations": [
  7. {
  8. "name": "(gdb) 启动", //配置名称,显示在配置下拉菜单中
  9. "type": "cppdbg", //配置类型
  10. "request": "launch", //请求配置类型,可以是启动或者是附加
  11. "program": "${workspaceFolder}/test", //程序可执行文件的完整路径,${workspaceFolder}表示远程连接的初始路径
  12. "args": [], //传递给程序的命令行参数
  13. "stopAtEntry": false,//可选参数,如果为true,调试程序应该在入口(main)处停止
  14. "cwd": "${workspaceFolder}", //目标的工作目录
  15. "environment": [], //表示要预设的环境变量
  16. "externalConsole": false,//如果为true,则为调试对象启动控制台
  17. "MIMode": "gdb",//要连接到的控制台启动程序
  18. "setupCommands": [ //为了安装基础调试程序而执行的一个或多个GDB/LLDB命令
  19. {
  20. "description": "为 gdb 启用整齐打印",
  21. "text": "-enable-pretty-printing",
  22. "ignoreFailures": true
  23. }
  24. ]
  25. }
  26. ]
  27. }

至此环境配置完毕

3 GDB 调试方法

在源代码中直接点击行数左侧,即可增加断点,设置好断点之后,点击“运行和调试”--(gdb)启动,如下

即可进入调试页面

可以在变量区直接看到变量值,完成调试目的。

常用的调试按键如下

F5    开始调试

F10   单步跳过

F11   单步调试

shift + F11   单步跳出

ctrl + shift + F5  重启调试

shift + F5  停止调试

4 问题汇总

如果之前连接过某台设备,后续更换设备是同一个IP,或者说设备重装过系统,但IP没变,重连的时候会报错,原因是主机将服务器 IP 列为known_host

 我们找到修改删除该 IP 然后重连即可

宗而研之
微信公众号
介绍轨道交通行业的人工智能发展现状,助力
  • 18
    点赞
  • 163
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

宗而研之

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

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

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

打赏作者

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

抵扣说明:

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

余额充值

举报

选择你想要举报的内容(必选)
  • 内容涉黄
  • 政治相关
  • 内容抄袭
  • 涉嫌广告
  • 内容侵权
  • 侮辱谩骂
  • 样式问题
  • 其他
点击我,总结本文并提问
只看
目录
隐藏
侧栏
新手
引导
客服 举报 返回
顶部
微信公众号
公众号名称:宗而研之 微信扫码关注或搜索公众号名称
复制公众号名称
历史记录
模型设置
暂无历史记录
新的对话

您好,欢迎使用ChatDOC 学习助手,您可以基于《一文掌握vscode远程gdb调试》相关内容进行对话,请进行提问开始学习吧~

本文介绍了如何使用VSCode进行gdb调试,并实现在Windows端远程调试Linux服务器和ARM嵌入式设备上的C++代码的配置和使用。首先需要安装远程连接插件"remote-ssh"并连接服务器。然后在服务器上创建一个C++代码文件,并使用"g++ -g"命令编译生成可执行文件。之后在VSCode中打开代码文件夹,并安装C/C++和GDB Debug插件。接着,通过"运行和调试"按钮创建launch.json文件,并根据内容进行相应的修改。配置完成后,在源代码中设置断点,并点击"(gdb) 启动"进行调试。调试过程中可以通过变量区查看变量的值。常用的调试按键包括F5开始调试、F10单步跳过、F11单步调试、shift + F11单步跳出、ctrl + shift + F5重启调试和shift + F5停止调试。在更换设备或重新安装系统后,如果连接报错,可以找到删除对应的IP,并重新连接。

提问示例:

  1. 怎么在windows端远程调试linux服务器和arm嵌入式设备上的c++代码?
  2. 怎么配置gdb环境?
  3. 怎么设置断点并进行调试?
  4. 常用的调试快捷键有哪些?
  5. 连接过一台设备后,更换设备或者重装系统后如何解决连接报错的问题?