交叉编译gdb调试
编译环境:Ubuntu16.04 64位交叉编译工具:arm-hisiv500-linux-gcc在开发过程中总会遇到段错误之类的问题,交叉编译gdb方便在开发板上调试,这里记录一下编译流程。1. 交叉编译gdb下载合适版本的gdb源码包,我这里使用的是gdb-7.8.tar.gz,点击下载地址。交叉编译gdb过程中发现这个版本需要termcap的支持,这里先表之,下载termcap-1...
编译环境: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)