前言
写文章的目的是想通过记录自己的学习过程,以便以后使用到相关的知识点可以回顾和参考。
一、获取gdb 和 gdbserver
一般情况下,交叉编译器都自带了gdb 和 gdbserver,因此可以不用移植,直接使用交叉编译器自带的即可。进入到交叉编译器/bin 目录,如下所示:
arm-linux-gnueabi-gdb 就是我们需要用到的工具,arm-linux-gnueabi是前缀,不同的交叉编译器,前缀会不一样。
gdbserver 也是在交叉编译器的文件中,在 /arm-linux-gnueabi/libc/usr/bin 文件中,不同的交叉编译器,可能 gdbserver 所在的位置不同,可以在交叉编译器根目录中使用如下指令查找:
find ./ -name gdbserver
二、移植 gdbserver
gdbserver 是在开发板上运行的,因此需要把它放到到开发板的/usr/bin 目录下。
三、使用gdb调试程序
把一个可执行程序发送到开发板中,下面我编写的可执行程序名字为gdbtest,源码为gdbtest.c。
!!!!重点:确保开发板跟pc端ubuntu网络连通,不然调试不了,可以先ping一下看看通不通。
开发板跟pc端ubuntu网络连通以后,在开发板端输入命令:
gdbserver 192.168.0.102:2001 gdbtest
上述命令中 192.168.1.253 为调试机的 IP 地址,也就是 ubuntu 的 IP 地址,2001 是端口号,可以任意给一个端口号,gdbtest 是要调试的可执行文件。
接着回到pc端ubuntu,输入如下命令启动gdb调试工具:
arm-linux-gdb gdbtest
在命令行输入如下命令:
target remote 192.168.0.103:2001 //连接到开发板上
上述命令表示连接到开发板上,其中 192.168.1.251 就是开发板 IP 地址,2001 就是开发板gdbserver 设置的端口号。
开发版端会提示如下链接信息:
远端调试机的 IP 地址为 192.168.1.253,也就是我们的 ubuntu 地址,连接成功以后就可以在 ubuntu 上进行代码调试了。
回到pc端ubuntu,在命令行输入命令就行了,下面是常用的常用的几个命令:
1、命令l:用于列出程序源码
2、命令b:用于设置断点
3、命令c:用于运行到断点处
4、命令s:单步运行执行,会进入到函数里面
5、命令n:也是单步运行,但是 n 命令不会进入到函数里面
6、命令p:用于打印某个变量值
7、命令q:用于退出调试