简介
- Linux系统常用GDB调试C代码,类似单片机的IDE。
- 可以使用GDB命令单步执行、跳入/跳出函数、设置断点、查看变量等等。
- Ubuntu资源充足,可以直接用gdb调试程序。
- 嵌入式Linux性能弱,一般PC上运行源码和GDB工具,可执行文件在开发板上运行。
- PC上通过gdb调试嵌入式程序,需要gdb和gdbServer两个工具,gdb运行PC上,gdbServer运行于开发板,通过网络进行连接。
- 网络需要能ping通目标板,且telnet可以访问。
在Ubuntu下简单体验GDB
在root用户权限下,执行apt-get install gdb指令,安装GDB
编译代码时,增加-g选项:
利用GDB调试运行程序
嵌入式GDB移植
(一)移植准备
要想在PC 上通过 gdb 调试嵌入式程序,那么需要两个东西:gdb 和gdbserver,其中 gdb 是运行在 PC 上的, gdbserver 需要我们移植到开发板上。
一般交叉编译已经自带了 gdb 和 gdbserver,比如我使用的Linaro 出品的交叉编译器,就自带gdb和gdbserver。如果交叉编译工具不自带有,则需要在gdb 官网上获取源码进行编译生成gdbserver。
(二)移植gdbserver
将gdbserver拷贝到开发板”/usr/bin”目录下,输入”gdbserver –version”可以查看版本
(三)使用GDB进行嵌入式程序的调试
编写测试代码gdbtest.c,代码如下:
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
unsigned int times = 0;
while(1) {
printf("runing times:%d\r\n", times);
times++;
sleep(1);
}
}
执行交叉编译,增加”-g”选项,生成可执行程序拷贝到开发板。
一切就绪,确保PC上的ubuntu和开发板可以正常通信。
在开发板上执行如下指令, 192.168.1.99是PC上ubuntu的IP,2001是端口号,随意一个。gdbtest是可执行程序。
在PC机的ubuntu上,可以开始调试!
GDB 常用命令参考
网络通信设置注意事项
开发板需要ping通VMWare中的虚拟机,VMware需要设置成桥接模式,且处于同一个网段。