gdb调试coredump

1、addr2line工具使用(arm-linux-addr2line)
addr2line -e test 00400000

2、core文件调试方法:
(1)ulimit -c 查看是否开启了core文件功能(0表示未开启, ulimit -c unlimited开启, ulimit -c 0关闭)
(2)挂载或插入TF卡(生成的core文件一般比较大,可生成到nfs挂载目录,可使用haneWIN nfs服务器)
mount -t nfs 电脑ip:/c/public /mnt/nfs -o nolock,proto=tcp,nfsvers=3
(3)echo "/mnt/nfs/core-%e-%t" > /proc/sys/kernel/core_pattern  //改变core文件名称和生成路径
(4)启动应用程序./test,等待崩溃生成core文件core-xxx
(5)./arm-linux-gdb test core-xxx  //用gdb调试分析生成的core文件(或先gdb加载应用程序test,然后使用core-file core-xxx)
(6)在gdb下使用bt命令可查看程序崩溃时的堆栈信息(需要应用程序编译时加上-g选项,且未strip过,strip会去掉应用程序的调试信息)
(7)若还是无法显示地址信息,可能是崩溃在动态库中,此时需要设置动态库路径,在gdb下输入
set sysroot /data1/work/gdb/gdb_test    //设置库搜索路径(将动态库和no-strip版应用程序test放到此文件目录下),再使用bt命令
(8)info threads  -- 查看崩溃时刻的所有线程信息
(9)t ID  -- 进入某线程查看堆栈信息(ID为上一步info threads中显示的ID,如t 1)
(10)f n  -- 进入栈帧

注:gdb动态库搜索路径设置方法
1. set sysroot 与 set solib-absolute-prefix 是同一条命令,实际上,set sysroot是set solib-absolute-prefix 的别名。
2. set solib-search-path设置动态库的搜索路径,该命令可设置多个搜索路径,路径之间使用“:”隔开(在linux中为冒号,DOS和Win32中为分号)。
3. set solib-absolute-prefix 与 set solib-search-path 的区别:
总体上来说solib-absolute-prefix设置库的绝对路径前缀,只对绝对路径有效;而solib-search-path设置库的搜索路径,对绝对路径和相对路径均起作用。(编译器自动链接的so库多采用绝对路径)。
4. (gdb) info sharedlibrary #查看一下是不是所有的库都加载上了
5. (gdb) disassemble  #反汇编调试
6. readelf -S test |grep debug  查看可执行文件/动态库的调试信息
7. file test.so 查看文件是否strip过

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值