通过CRASH文件查找崩溃代码

http://liujun.me/?p=110


xcode提供了两个工具来将crash文件的内存地址转换到代码中的具体位置: symbolicatecrash和dwarfdump

symbolicatecrash可以将crash文件中的内存地址转换成代码中类和方法,使用方法如下:

symbolicatecrash + 崩溃日志 + APP对应的.dSYM文件 + > + 输出到的文件

symbolicatecrash的位置似乎不是固定的,可以使用find命令查找一下,需要注意的是,第一次使用的时候,需要配置环境变量

export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"

dwarfdump的作用是查看每个内存地址对应的代码。首先查看crash log中的崩溃线程,假如是这样的:

Thread 0 Crashed:
0   libobjc.A.dylib                0x00003ec0 objc_msgSend + 24
1   MyApp               0x000036d2 0×1000 + 9938

我们得到了用户发生崩溃情况的内存地址:0x000036d2
然后回到我们应用程序的build目录,目录下一定要包含MyApp.app 和MyApp.app.dSYM两个文件。
在该目录下使用命令:

dwarfdump –lookup 0x000036d2 MyApp.app.dSYM

ok, 这会就能定位到bug位置了

And one more thing is,如果是调试当中遇到了异常崩溃情况,但是在栈信息中定位不到代码位置,可以通过设置断点的方式来捕获崩溃位置:

Xcode -> Debug -> BreakPoints -> Create Exception BreakPoint…

这个断点可以捕获所有异常抛出的事件,一般的数组越界,空指针异常都能搞定


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值