gdb+core 定位so崩溃

最近专门搞了一下so的调试。总结一下

关于core dump的输出准备:
执行程序的linux user一定要先打开core dump开关,注意:这个开关是与用户会话关联的,因此要先执行ulimit -c unlimited,在执行程序。可以用ulimit -c或ulimit -a查看一下。

关于程序的准备:
so必须编译成debug版,但是可执行文件不一定必须要debug。调试时一定要清楚so被哪个可执行程序调用,可执行程序哦~~~~
启动可执行程序没有什么特殊要求的,只是要注意一定要用开启了core dump开关的用户执行就可以了。启动后就静静地等待崩溃吧。。。。
崩溃产生的core dump文件会出现在可执行程序的执行命令所在目录。

如果core dump文件没有找到,可能是因为core dump开关、core dump文件大小限制、没有找到可执行文件目录。。。。

找到后使用gdb myexec core.XXXXXX 来查看崩溃
正常的话可以查到 Program terminated with signal 7, Bus error.
使用bt命令可以查看崩溃时的堆栈信息:
(gdb) bt
#0 0x00002aaaab0fc470 in google_breakpad::ExceptionHandler::HandleSignal (this=0x3e8, sig=1366325088, info=0x0, uc=0x27) at ../../common/linux/linux_syscall_support.h:2207 <----崩溃在这哦
#1 0x0000000000000000 in ?? ()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值