您现在的位置: 爱51代码网 >> 范文 >> 文章正文
addr2line 定位so崩溃位置

02-04 15:17:31.520: I/DEBUG(24552):          #00  pc 5ce8eb10  /data/data/proj.syjt/app_libs/libsyjt.so
02-04 15:17:31.520: I/DEBUG(24552):          #01  lr 5cf69c1b  /data/data/proj.syjt/app_libs/libsyjt.so
02-04 15:17:31.520: I/DEBUG(24552): code around pc:
02-04 15:17:31.520: I/DEBUG(24552): 5ce8eaf0 e0562002 e0c73003 e1cc20f0 e8bd80f8  . V..0... ......
02-04 15:17:31.520: I/DEBUG(24552): 5ce8eb00 e92d40f8 e59f6028 e1a05000 e1a07001  .@-.(`...P...p..
02-04 15:17:31.520: I/DEBUG(24552): 5ce8eb10 e5954000 e1a02005 e1a00004 e0841007  .@... ..........
02-04 15:17:31.520: I/DEBUG(24552): 5ce8eb20 e12fff36 e3500000 1afffff8 e1a00004  6./...P.........
02-04 15:17:31.520: I/DEBUG(24552): 5ce8eb30 e8bd80f8 ffff0fc0 e92d40f8 e59f6028  .........@-.(`..
02-04 15:17:31.520: I/DEBUG(24552): code around lr:
02-04 15:17:31.520: I/DEBUG(24552): 5cf69bf8 fffffc9c 60012300 60830049 81831840  .....#.`I..`@...
02-04 15:17:31.520: I/DEBUG(24552): 5cf69c08 46c04770 2101b510 42491c04 f0d13008  pG.F...!..IB.0..
02-04 15:17:31.520: I/DEBUG(24552): 5cf69c18 2800fbe7 1c20dc02 fb92f0d1 46c0bd10  ...(.. ........F
02-04 15:17:31.520: I/DEBUG(24552): 5cf69c28 4b05b508 447b4a05 4298589b bd08d100  ...K.J{D.X.B....
02-04 15:17:31.520: I/DEBUG(24552): 5cf69c38 ffe8f7ff 46c0e7fb 002ad5ca fffffca0  .......F..*.....
02-04 15:17:31.520: I/DEBUG(24552): memory map around addr fffffffc:
02-04 15:17:31.520: I/DEBUG(24552): ffff0000-ffff1000 [vectors]
02-04 15:17:31.520: I/DEBUG(24552): (no map for address)
02-04 15:17:31.520: I/DEBUG(24552): (no map above)
02-04 15:17:31.520: I/DEBUG(24552): stack:
02-04 15:17:31.520: I/DEBUG(24552):     5bb7e708  02e1556a  [heap]

每次不同地方崩溃(不下十次),我用addr2line -C -f -e obj/local/armeabi/libsyjt.so 5ce8eb10 定位错误都显示
??
??:0

是不是5ce8eb10地址应该 减去 基地址 然后才是真正的地址啊?这个基地址用什么命令可以显示?

你都说是一个so动态库了,怎么可能通过一个地址能够得到具体代码的行数呢
动态库每次加载到不同的地址,你这么作是不行的
最简单的做法就是,如果有工作正常的版本,看因为啥改动成了这样
如果不行,只能用gdb之类的调试了吧,不过我没做过

libsyjt.so 这个库如果是带符号表的, 那用addr2line 就可以定位行号, 你显示 ?? 因为已经把符号表删掉了, 那样库的size会小点。
含符号表的lib, 编译后会放到out/target/product/<Your product name>/symbols/system/lib

有个工具叫 stack ,专门分析这种的。
使用方法也很简单,前提是你要有这个版本的编译环境和symbol即可,如果需要楼主给我留邮箱我发给你。

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    Hadoop2.2.0在eclipse控制台没有
    maven如何加自定义的包
    redhat 2.6 (santigo 5.6) vsftp
    shell如何实现自动填写操作执行下
    linux shell 文件配置sh:color:
    shell script语法一定要加path吗
    SecureCRT如何访问虚拟机vmWare中
    C#如何读取WINDOWS的放大系数
    cximge的图如何存入数据库并提取
    DBGRID控件显示查询结果文本类型
    Hadoop2.2.0在eclipse控制台没有
    maven如何加自定义的包
    redhat 2.6 (santigo 5.6) vsftp
    shell如何实现自动填写操作执行下
    linux shell 文件配置sh:color:
    shell script语法一定要加path吗
    SecureCRT如何访问虚拟机vmWare中
    C#如何读取WINDOWS的放大系数
    cximge的图如何存入数据库并提取
    DBGRID控件显示查询结果文本类型
    native用 NewByteArray()分配
    android-async-http框架的例
    wp8.0 button按下后变换背景
    如何在android手机上画折线图
    org.eclipse.swt.custom.Sty
    android如何做到后台服务不会
    android如何在一个activity中
    android中给Dialog设置动画自
    订单签名错误,请检查PARTNER
    C#给android通过Socket发送图
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |