当前位置: 首页 > news >正文

GDB Server使用方法(基于vscode的可视化调试)

0 GDB Server是什么?

GDB Server 是一个允许你在一个设备(称为“目标机”)上运行和调试另一个设备(称为“主机”)上的程序的“桥梁”程序。

1 配置GDB Server

1.1 在SDK/编译工具文件夹里找到用于开发板的gdbserver和用于linux_x86平台的gdb调试应用

本例gdbserver所在路径为/opt/atk-dlmp135-toolchain/arm-buildroot-linux-gnueabihf/debug-root/usr/bin,使用file命令查看可知其能在开发板上运行:
在这里插入图片描述
本例linux_x86平台gdb调试应用所在路径为/opt/atk-dlmp135-toolchain/usr/bin/arm-buildroot-linux-gnueabihf-gdb,使用file命令查看可知其能在linux_x86平台上运行:
在这里插入图片描述
将gdbserver放到开发板上。

1.2 编辑launch.json文件

(1)点击如下图标:
在这里插入图片描述
(2)创建一个新的launch.json文件,内容如下:

{"version": "0.2.0","configurations": [{"name": "Remote Debug","type": "cppdbg","request": "launch","program": "/home/alientek/linux/c_code/cmake/auto_start/build/auto_start_test","args": ["-g"],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"miDebuggerPath":"/opt/atk-dlmp135-toolchain/usr/bin/arm-buildroot-linux-gnueabihf-gdb","miDebuggerServerAddress": "192.168.1.117:2345"}]
}

其中需要修改的内容包括:
program:需要被调试的可执行文件名(在linux主机上的位置)
miDebuggerPath:用于linux_x86平台的gdb调试应用所在位置
miDebuggerServerAddress:开发板的IP和gdbserver使用的端口号

1.3 修改camke,生成支持调试的可执行文件

在cmake中添加如下两行即可:

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -g")  
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -g")

然后编译生成可执行文件,就是前面步骤中program指示的可执行文件。

1.4 将生成的可执行文件复制到开发板上,使用gdbserver运行

命令如下:

./gdbserver :2345 ../auto_start_test

2345即前文中miDebuggerServerAddress配置的端口号,可以根据实际情况更改为其它的。
在这里插入图片描述

2 使用GDB Server进行调试

添加断点:
在这里插入图片描述
在vscode依次点击如下图标:
在这里插入图片描述
此时程序停在断点位置:
在这里插入图片描述
点击顶部图标可以实现继续运行、逐过程、单步调试、单步跳出、重启、停止功能:
在这里插入图片描述
如下是单步执行,可以看到每步执行过程:
在这里插入图片描述

http://www.dtcms.com/a/532210.html

相关文章:

  • Retrieval Augmented Time Series Forecasting 论文笔记
  • Vscode中选择Conda环境
  • PyCharm无法启动jupyter server问题的解决
  • 手机考勤软件哪个好?10款APP测评
  • 小游戏网站建设网络规划设计师资格证
  • 网站建设钅金手指排名十五网站做app服务端
  • Docker 拉取镜像超时问题排查与解决实录
  • 找个做游戏的视频网站好WordPress加速优化方案
  • Kafka 生产者详解(上):消息发送流程与API,分区,吞吐量与数据可靠性
  • Chrome扩展安装插件教程,Edge安装插件扩展教程,浏览器安装扩展程序方法
  • 基于Swin Transformer的糖尿病视网膜病变影像分类与诊断系统
  • 从零开始:C++ 线程池 TCP 服务器实战(续篇)
  • 免费招工人在哪个网站传奇合成版2合1雷霆版
  • AJAX家政系统同城服务多商家小程序源码
  • 《string 类模拟实现(收尾):传统与现代写法对比及底层机制探析》
  • ISCSI存储服务
  • 选择排序详解
  • 暖色网站模板wordpress 翻译 每页
  • ProcDump 学习笔记(6.9):MiniPlus 转储(-mp)——轻量却够用的现场证据
  • 特乐网站建设如何用源码搭建网站源码
  • Java 大视界 -- Java 大数据实战:分布式架构重构气象预警平台(2 小时→2 分钟)(428)
  • 洗牌算法讲解——力扣384.打乱数组
  • 芋道源码:VUE3部署:避坑--验证码不现显示,管理后台无法访问后端接口等,完善中。。。
  • 前端速通—ajax篇
  • 济南建立网站湖南建筑工程信息平台
  • android 堆栈打印
  • 太原网站优化排名北京互联网排名
  • 2025-web集群-问题总结
  • CATWIFI
  • 智能旅行助手Agent实战:前后端分离的多Agent系统