arm板gdb调试移植

arm板gdb调试移植

arm板上对程序在线调试,一般使用的就是gdb+gdbserver。而我们的交叉编译工具链中,都带有gdb(arm-linux-gnueabihf-gdb),所以我们移植的时候,只需要移植gdbserver就行。下面是两者的关系。

  1. arm-linux-gnueabihf-gdb 即gdb,运行在电脑端,人机交互界面。arm板端不需要,所以不用移植到arm板中。
  2. gdbserver 运行在arm板端,用于和gdb交互。所以需要移植。

下载GDB源码

这里用的GDB源码版本为gdb-8.1.tar.gz

  1. 官方下载地址:http://ftp.gnu.org/gnu/gdb/
  2. 笔者资源,其中包含编译好的gdbserver以及gdb手册。https://download.csdn.net/download/qq_23274715/11997953

gdbserver移植

  1. 解压源码tar -zxvf gdb-8.1.tar.gz
  2. 进入gdbserver目录。cd gdb-8.1/gdb/gdbserver/
  3. 配置./configure --host=arm-linux-gnueabihf.
  4. make -j4
  5. 编译成功后就会在当前目录中生成gdbserver.然后将其复制到arm开发板便可使用。
    1. 可以使用命令arm-linux-gnueabihf-strip gdbserver先对gdbserver的大小进行裁剪。笔者的裁剪前为3.8M,而裁剪后只有268K.然后再复制到开发板。
    2. 下面是笔者自己编译生成的可执行文件。可以直接拷贝到arm端使用。连接.

gdbserver+gdb进行调试

  1. 编写测试文件gdb_test.c.
  2. 交叉编译测试文件。arm-linux-gnueabihf-gcc -g gdb_test.c -o gdb_test.o.
    1. 注意: 对于要进行调试的文件,编译时要用-g选项。否则在调试的时候会遇到查不到变量的值等一系列问题。
  3. 复制gdb_test.o到arm板。注意此文件要有可执行权限。
  4. arm板中启动gdbserver../gdbserver 192.168.1.12:6000 ./gdb_test.o
    1. 192.168.1.12为电脑端的ip地址。
    2. 6000为端口号。
    3. ./gdb_test.o为要调试的程序。
  5. 如果启动成功,会显示如下提示

    Process ./gdb_test.o created; pid = 622
    Listening on port 6000

  6. 在电脑中启动gdb.arm-linux-gnueabihf-gdb,进入GDB调试器。如下

    (gdb)

  7. 在调试器中输入target remote 192.168.1.10:6000
    1. 192.168.1.10为arm端的ip地址。
    2. 6000为gdbserver调试时创建的端口号。
  8. 如果连接成功,会出现如下显示

    (gdb)

  9. 这是就可以进行调试了。可以使用如下命令进行简单调试。
    1. l 查看源代码。list的缩写。
    2. p 变量 查看变量的值。pprint的缩写。
      1. 如果提示No symbol "i" in current context。可能原因是程序编译时没有加-g选项。
    3. b 添加断点。如b main给main函数添加断点。b 20第20行添加断点。
    4. c 继续运行。continue的缩写。
    5. n 单步运行。
    6. q 退出调试。

关于技术交流

此处后的文字已经和题目内容无关,可以不看。
qq群:825695030
微信公众号:嵌入式的日常
如果上面的文章对你有用,欢迎打赏、点赞、评论。二维码

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

theboynoName

感谢鼓励

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

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

打赏作者

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

抵扣说明:

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

余额充值