gdb编译及使用
gdb源码下载:ftp://sourceware.org/pub/gdb/releases/
1.下面为8.3的编译
进入gdb8.3目录下:
第一步:编译配置(若已经编译过一次,若要编译其他平台,请重新解压编译;因为编译过之后参数已经被修改,编译其他平台会报错)
1.编译在本机上运行gdb,处理的目标平台为arm-linux的gdb版本,生成的执行文件前缀为arm-linux-,安装目录为/usr/local/arm-gdb
./configure --target=arm-linux --program-prefix=arm-linux- --prefix=/usr/local/arm-gdb
编译选项说明:
--target=arm-linux意思是说目标平台是运行于ARM体系结构的linux内核;
--program-prefix=arm-linux-是指生成的可执行文件的前缀,比如arm-linux-gdb;
--prefix是指生成的可执行文件安装在哪个目录,这个目录需要根据实际情况作选择。如果该目录不存在,会自动创建,当然,权限足够的话。
--build=编译该软件所使用的平台
--host=该软件将运行的平台
--target=该软件所处理的目标平台
2.编译在arm-linux平台上运行的gdb,处理的目标平台为arm-linux的gdb版本,生成的执行文件前缀为arm-linux-,安装目录为/usr/local/arm-gdb
./configure --host=arm-linux --target=arm-linux --program-prefix=arm-linux- --prefix=/usr/local/arm-gdb
3.编译在本机上运行的gdb,处理的目标平台为本机的gdb版本,安装目录为/usr/local/gdb
./configure --host= --target= --program-prefix= --prefix=/usr/local/gdb
第二步:编译
make
第三部:安装
make install
2.gdbserver编译:
进入gdb8.3/gdb/gdbserver目录下:
第一步:编译
生成在arm-linux平台运行,执行arm-linux目标的gdbserver,安装路径为/user/local/gdbserver
./configure --host=arm-linux --target=arm-linux --prefix=/user/local/gdbserver
第二步:编译
make
第三步:安装
make install
3.使用方法:
3.1、在编译要进行调试的应用程序 加上 -g
测试程序如下(test_debug.c)
#include <stdio.h>
void C(int *p)
{
*p = 0x12;
}
void B(int *p)
{
C(p);
}
void A(int *p)
{
B(p);
}
void A2(int *p)
{
C(p);
}
int main(int argc, char **argv)
{
int a;
int *p = NULL;
A2(&a); // A2 > C
printf("a = 0x%x\n", a);
A(p); // A > B > C
return 0;
}
编译:
arm-linux-gcc -g -o test_debug test_debug.c
3.2、在目标机上(如开发板设备):
./gdbserver 192.168.1.10:1234 ./test_debug
打印出如下信息:
Process ./test_debug created; pid = 751
Listening on port 1234
注释:192.168.1.10:本开发板的ip
1234:端口号,自己随便写的
./test_debug:要调试的程序
3.3、在PC上输入:
./arm-linux-gdb ./test-debug
target remote 192.168.1.10:1234
3.4、正式调试!介绍几个常用的命令
(1)l:列出所有源代码
(2)break main:在main处打断点
break test_debug.c:11:在test_debug.c的11行打断点
(3)c:运行到断点处
(4)step:单步执行
(5)next:单步执行,但是step会进入函数里面,但是next不会
(6)print a:打印a这个变量的值
(7)quit:退出,输入此命令则开发板上的gdbserver也退出
(8) 详细的GDB调试命令
更多推荐
所有评论(0)