嵌入式远程调试工具gdbserver

嵌入式远程调试工具gdbserver

在嵌入式开发时,我们经常使用printf来调试,printf足以应对大部分小型项目调试,但是当我们遇到难以解决的bug时,gdb才是解决问题最根本的方法。尤其是调试别人的代码,设置断点、单步,比单纯的打印和锻炼视力,更加的友好。

工具准备

  • gdbserver的移植:之前移植过gdbserver,但是没有记录下过程,以后移植时候再补充吧。
  • arm-linux-gdb、arm-linux-gcc(g++):一般对应芯片的厂商会提供,而且toolchain的编译非常繁琐,不建议大家入坑尝试,好钢应该用在刀刃上。
  • nfs:不是必须项,但是嵌入式调试还是自己搭一下吧,方便调试

使用方法

主机ip:192.168.0.88
板子ip:192.168.0.33

  1. 使用arm-linux-gcc -g test.c -o test编译应用程序
  2. 把程序通过nfs共享至板子
  3. 在板子上执行命令gdbserver 192.168.0.33:8888 ./test
    执行命令
  4. 本地主机执行arm-linux-gdb ./test (gdb)target remote 192.168.0.33:8888
    本地主机执行
    连接成功后显示
    连接成功后显示
    之后就可以在本地主机执行gdb命令来进行调试了
    注意:执行target remote 后,板子上面的程序已经在运行,本地不能使用run命令,而能用continue命令。
    调试命令在本地输入,调试结果在板子上输出。

原理

在板子上面的gdbserver会启动一个子进程,然后用测试程序替换子进程,自身作为父进程,接收来自PC机上面arm-ling-gdb的调试命令输入

猜你喜欢

转载自blog.csdn.net/sinat_36544290/article/details/80910097