VSCode+gdb+gdbserver调试ARM程序丨【拜托了,物联网!】

举报
嵌入式大杂烩 发表于 2021/10/18 23:00:51 2021/10/18
【摘要】 嵌入式软件开发中,最常用的调试方法就是:log打印调试法及在线调试。log打印调试法相关文章:bug解决不了?使用日志法。开发STM32时,我们有IDE可以用,IDE中已经集成有调试器,配合仿真器使用起来很方便。而在Linux应用程序的开发中,常常直接在命令行使用gdb进行调试,或者可以使用VSCode+gdb进行调试。gdb调试相关文章:GDB调试器原来那么简单而在嵌入式Linux中,我们...

嵌入式软件开发中,最常用的调试方法就是:log打印调试法及在线调试。log打印调试法相关文章:

bug解决不了?使用日志法

开发STM32时,我们有IDE可以用,IDE中已经集成有调试器,配合仿真器使用起来很方便。而在Linux应用程序的开发中,常常直接在命令行使用gdb进行调试,或者可以使用VSCode+gdb进行调试。

gdb调试相关文章:GDB调试器原来那么简单

而在嵌入式Linux中,我们如何对开发板上的arm程序进行调试呢?

我们可以使用VSCode+gdb+gdbserver来调试我们arm开发板上的arm程序。下面简单介绍一下使用方法,前提是开发板与PC可以进行无线/有线通信。相关文章:实用 | 如何远程登录开发板?

1、准备arm格式的gdb及gdbserver工具

一般交叉编译工具链里都包含有,如果没有则需要自己下载gdb源码进行交叉编译,gdb下载源码下载链接:

http://www.gnu.org/software/gdb/download/

涉及到交叉编译的文章:

干货 | protobuf-c之嵌入式平台使用

实用 | 一个高性能通信库的简单使用分享

这里我使用的是交叉编译工具链里的gdb及gdbserver,如:

======001

======002

2、创建launch.json文件并修改

我们需要创建vscode的launch.json文件并进行一些修改:

======003

======004

======005

======006

其中需要修改"program",这是我们需要调试的程序,即我们交叉编译好的程序。还需要添加如下两个键值对:

"miDebuggerPath:"/opt/rv1126/bin/arm-linux-gnueabihf-gdb"
"miDebuggerServerAddress":"192.168.3.12:9001"

其中,miDebuggerPath表示的是arm格式gdb的路径;miDebuggerServerAddress表示的是我们server端的地址,如:192.168.3.12为开发板的ip,9001为端口号,可自行设置,其范围为:0~655360~1023 的端口一般由系统分配给特定的服务程序。

3、把gdbserver传到开发板上

我们需要交叉编译器路径下的gdbserver传到开发板上,如我这里放到开发板的/usr/bin路径下:

======007

4、启动gdbserver

我们首先需要启动开发板上的gdbserver,pc端才能连接进行调试,格式为:

gdbserver  开发板ip:端口号  要调试的程序

如:

======008

5、启动vscode的gdb进行调试

最后,启动vscode的gdb即可进行调试。如:

======009

======010

【拜托了,物联网!】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/299476

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。