交叉编译gdb调试

编译环境:Ubuntu16.04 64位
交叉编译工具:arm-hisiv500-linux-gcc

在开发过程中总会遇到段错误之类的问题,交叉编译gdb方便在开发板上调试,这里记录一下编译流程。

1. 交叉编译gdb

下载合适版本的gdb源码包,我这里使用的是gdb-7.8.tar.gz,点击下载地址

交叉编译gdb过程中发现这个版本需要termcap的支持,这里先表之,下载termcap-1.3.1.tar.gz,点击下载地址

1.1 交叉编译termcap

cd ~/work
mkdir gdb.install
tar zxf termcap-1.3.1.tar.gz
cd termcap-1.3.1/
./configure --host=arm-hisiv500-linux- --prefix=/home/jerry/work/gdb.install
make CC=arm-hisiv500-linux-gcc
cp libtermcap.a ../gdb.install

生成的libtermcap.a就是所依赖的库。

1.2 交叉编译gdb

cd ../gdb-7.8/
./configure --host=arm-hisiv500-linux CC=arm-hisiv500-linux-gcc --prefix=/home/jerry/work/gdb.install LDFLAGS="-L/home/jerry/work/gdb.install/ -ltermcap -lm"
make
make install

生成的gdb位于…/gdb.install/bin目录。

2. 开发板上gdb调试流程

2.1 core文件开关

开发板执行命令ulimit -c,为0表示关闭;
执行命令ulimit -c unlimited打开core文件输出,并不限制文件大小。
如果想开机执行,修改/etc/profile,添加如下命令:

ulimit -S -c unlimited > /dev/null 2>&1

2.2 core文件命名和保存路径

core文件名默认是core,建议修改如下:

echo "/tmp/core-%e-%p-%t" > /proc/sys/kernel/core_pattern

命名的参数列表:
%p - insert pid into filename 添加pid
%u - insert current uid into filename 添加当前uid
%g - insert current gid into filename 添加当前gid
%s - insert signal that caused the coredump into the filename 添加导致产生core的信号
%t - insert UNIX time that the coredump occurred into filename 添加core文件生成时的unix时间
%h - insert hostname where the coredump happened into filename 添加主机名
%e - insert coredumping executable name into filename 添加命令名

2.3 调试

编译可执行程序时加入-g选项,如gcc -g core_test.c -o core_test
将之前编译生成的gdb拷贝到开发板

gdb [exec file] [core file] 然后执行bt看堆栈信息

转载请注明出处,如有错漏之处,敬请指正。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值