使用gdb搭建嵌入式Linux调试环境,使用网络与开发板通信,调试应用程序
一、下载gdb源码
下载地址:ftp://ftp.gnu.org/gnu/gdb/
我使用的版本为:gdb-7.7.1.tar.gz
二、编译gdb client
(1)tar xvzf gdb-7.7.1.tar.gz
(2)./configure --target=arm-linux --prefix=/home/shirf/my_explore/linux_explore/debug_type/gdb_file/gdb_client
(其中编译、安装后的可执行文件放到/home/shirf/my_explore/linux_explore/debug_type/gdb_file/gdb_client,这个目录可自定义)
(3)make
(4)make install
(5)在目录/home/shirf/my_explore/linux_explore/debug_type/gdb_file/gdb_client/bin/下arm-linux-gdb就为在pc端运行的调试工具,可以通过
export PATH=$PATH:/home/shirf/my_explore/linux_explore/debug_type/gdb_file/gdb_client/bin/讲该目录添加到环境变量中。
三、编译gdb servercd
(1)还是进入解压完的gdb-7.7.1下的gdb/gdbserver/
(3) ./configure --target=arm-linux --host=arm-linux
(4)vi config.h
注释:#define HAVA_SYS_REG_H 变为//#define HAVA_SYS_REG_H
(5)make CC=arm-none-linux-gnueabi-gcc(其中arm-none-linux-gnueabi-gcc为我的编译器)
(6)gdbserver即为运行在板子上的gdb
四、实战
(1)源码
#include
int
func(int n){
int sum=0, i;
for (i=0; i
sum += i;
}
return sum;
}
int
main(void)
{
int i;
long result = 0;
for (i=0; i<=100; i++){
result += i;
}
printf("result[1-100] = %d /n", result);
printf("resutl[1-225] = %d /n", func(255));
return 0;
}
(2)编译源码
vi arm_gdb_test.c 并且复制源码
arm-none-linux-gnueabi-gcc -g arm_gdb_test.c -o arm_gdb_test
(3)复制arm_gdb_test和gdbserver
我是nfs文件系统与板子建立共享目录方式,进行文件复制
(4)开发板运行应用程序
./gdbserver 192.168.0.103:12340 arm_gdb_test
192.168.0.103为我PC机地址,12340为临时gdb使用的端口,可以自己指定
其实可以将192.168.0.103:12340 变为*:12340,通过netstat -an 发现开发板建立一个TCP监听端口为12340的套接字,
这个套接字可以接收任何地址的请求。
(5)在PC端调试程序
将/home/shirf/my_explore/e9_platform/arm_gdb/gdb_bin/bin/arm-linux-gdb复制到PC端生成的可执行文件处,用于调试用
./arm-linux-gdb arm_gdb_testtarget remote 192.168.0.200:12340(用于链接开发板)
此时就可以按照gdb方式调试应用程序了。