gdb交叉编译

依赖工具termcap编译 

下载地址:

https://mirrors.sjtug.sjtu.edu.cn/gnu/termcap/termcap-1.3.1.tar.gz

交叉编译:

./configure --host=xxxx --target=xxx  --prefix=xxxx//install 

交叉编译且install后,可以在编译gdb时指定外部连接库,也可以直接放进交叉工具链路径

cp -r install/include/termcap/*.h   /xxxxx/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/include/
cp install/lib/*.a /xxxx/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/lib/
 

gdb交叉编译

源码下载自行百度,不同的平台可能有些版本难编译过,此时可以多换几个版本编译,笔者用过7.10/7.6.1/7.8.1

./configure --target=xxx --host=xxx --prefix=$(pwd)/../gdb_out/  CC="xxx-gcc  --sysroot=libc路径"  CFLAGS=" -mfloat-abi=soft" 

 host/target

如果填arm时报错host/target无法识别可以填写交叉工具链的前几个字符,例如交叉工具链为arm-linux-gnueabihf-时,则可以填写arm-linux-gnueabihf, host/target指定的值是有要求的,一般截取交叉工具链前几个字段。一般来说填写arm就可以了。

CC

该变量的赋值需要携带sysroot的路径,如果交叉工具链安装路径中有sysroot目录则填写sysroot即可,没有的话则填写交叉工具链的libc目录即可

-mfloat-abi

一般来说这个字段不需要指定,如果有配置出错且涉及该问题时可以指定该字段。

其他

1.如果编译过程中出现错误,直接屏蔽错误即可。

2.使用交叉工具链自带的gdb分析core文件,不过该方法只有在应用进程出错时产生信号才能使用。core的产生需要执行如下两个配置。

ulimit -c unlimited    //设置core文件大小, 设置为unlimited时不限制xore文件大小
echo "./core.file"  > /proc/sys/kernel/core_pattern   //文件名字和路径随便定义

在虚拟机下按照如下执行即可进入gdb调试模式,core.MRApp.804为core文件

arm-linux-xx-gdb   MRApp   core.MRApp.804   

kill -s SEGV $$

该命令可以测试core文件是否产生,SEGV为信号(kill -l查看系统所有信号),可以换其他信号,测试完要重新配置core文件生成环境。

3.-fsanitize=address -fno-omit-frame-pointer -fsanitize=leak

该编译选项可以检测内存问题,该方法比gdb更为好用,出错误时可以把函数调用过程和内存信息打印出来,详细解释自行百度,遗憾的是有些平台可能不支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值