网站首页 > 博客文章 正文
但是很多ARM Linux专用设备是没有图形界面和显示器的,当出现问题时,可以在ARM设备上运行gdbserver,然后在PC机上运行vscode图形调试界面进行图形化调试就成一种重要排查手段,近年来ARM CPU往往是双核,四核,性能跟小电脑一样,这种远程调试不算太慢。这一次我排查是一个RV1126 上应用的段错误问题,就用上这个手段。
开发环境
首先要在ARM板上移植gdb和gdbserver ,然后把gdb布署到RV1126板上
具体过程可以参考我的另一篇文章
《瑞芯微 RV1126上gdb移植和调试,适用于所有armv7的CPU》
然后在PC机上安装 gdb-multiarch
sudo apt install gdb-multiarch
当然还要安装vscode
编译和调试准备
首先所有代码要用-g参数加入调试信息,为了保险可以用-O0 取消所有优化。
在vscode中要新建一个launch.json.json的执行文件来配置远程调试
点击左侧运行和调试,点击“创建launch.json文件"
通常会提供一个模板给你改写,但我只有两行,所以直接拷贝进去如下模板
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb)",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/bin/track",
"stopAtEntry": true,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"launchCompleteCommand": "exec-run",
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb-multiarch",
"miDebuggerServerAddress": "192.168.144.99:6666",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
这里你需要调整是"program",即你要调试程序在pc机上路径
miDebuggerPath是pc上调试器,这里我选gdb-multiarch
miDebuggerServerAddress 是ARM的IP和gdbserver端口,这里是6666.
其余无需改动。
完整的调试流程
首先在RV1126运行gdbserver
gdbserver :6666 ./track
:6666 表示在6666端口监听,要与launch.json中的端口要一致。
./track是被调试的程序,一运行就等待远程的gdb接入
[root@RV1126_RV1109:/rktrack/bin]# gdbserver :6666 ./track
Process ./track created; pid = 919
Listening on port 6666
新建launch.json后,在vscode上左上角出现一个gdb的启动项,点击绿色三角即可进入远程调试,按常规会在main函数第一行停下, 在下面调试控制台会输出gdb相应输出。
如果是这样表示整个环境创建成功。
在vscode正上方有传统的调试按钮(继续,跳过,进入,跳出),在源码左侧可以点击设置断点。
继续运行可以看到在断点停下来,并且在下方的调试控制也有相应信息,甚至可以直接输入gdb 命令
可以把光标移动到变量看到当前值,也能在右键菜单下添加监视在左侧监视栏看到实时值
这个跟一般本地调试没有区别。
这个调试器看起来无法直接调试应用程序带的动态库的源码,这是gdb的问题。
希望这个文章能帮到你。
猜你喜欢
- 2024-12-23 Python 安装、Vscode IDE配置python开发环境
- 2024-12-23 Asp.net Core启动流程讲解(一)
- 2024-12-23 牛逼!竟然把VSCode玩成了IDEA的效果,有点哇塞
- 2024-12-23 WebCAD快速入门(在线CAD如何快速搭建和入门)网页浏览和编辑dwg
- 2024-12-23 VS Code 编译和调试C/C++程序也可以这么爽
- 2024-12-23 vscode使用vs2022 msvc编译器
- 2024-12-23 分布式/微服务必配APM系统,SkyWalking让你不迷路
- 2024-12-23 我用VS Code 开发工具来开发 自己的 Flutter 应用 工具快而轻
- 2024-12-23 Flutter 实战经验(五):在 VS Code 里开发 Flutter 应用
- 2024-12-23 人生苦短,不光要用 Python,还要在 VSCode 里用 | 原力计划
你 发表评论:
欢迎- 367℃用AI Agent治理微服务的复杂性问题|QCon
- 359℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 358℃初次使用IntelliJ IDEA新建Maven项目
- 351℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 346℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 342℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)