解析iOS应用的崩溃堆栈

一、源代码

    如果自己是开发者,有源代码在手,那就最方便了,大家都知道

 

二、App崩溃

    如果是安装到用户手机上的应用崩溃了,那该怎么办呢?

 

   把应用崩溃的手机连到Xcode, Devices -> View Device Logs

    

   就能看到该设备对应的所有crash

    

 

  点击"Re-Symbolicate Log",把符号做一些解析

  

 

 导出crash log

  

1.1 debug版本

按理说,符号都在App中,"Re-Symbolicate Log"应该能把所有符号解析出来,但事实却不是这样

 

系统库的符号是解析了,但是App的符号没有解析

1.1.1 atos工具

       将对应版本的myapp.app文件和crash文件放在同一个文件夹下 。

       注意,一定要是该应用正确版本的app, 因为每次打包, 符号表的映射关系都有可能不同,如果不对应的话是没法符号化的.

然后运行: atos -arch arm64 -o iOSDemoViewController.app/iOSDemoViewController  -l 0x100648000 0x10064df84

       

       解析结果不是很完整,没有具体的行号信息

       https://blog.csdn.net/bravegogo/article/details/50634619

1.2 release版本

       如果直接从App的生成目录安装App(包含dSYM文件)

       

      打开崩溃日志等一会,或者"Re-Symbolicate Log"后会得到准确的堆栈信息          

    

       注意: 如果是在同一台mac上打包,导入crash log时候Xcode会自动将backtrace符号化,可以看到方法名, 文件名和行号。跟安装位置没关系,就算把App移到其他位置安装也是可以看到解析后的堆栈

 

       如果发版的包不是在你的mac上打包的,xcode找不到对应的符号表,这个时候就需要手动解析了

 

1.2.1 atos工具

 

     atos -o dysm文件路径 -l 模块load地址 调用方法的地址

    上面的0x182274000就是模块load地,0x0000000182399900就是调用方法的地址 

1.2.2 symbolicatecrash命令

     

   https://www.cnblogs.com/qingche/p/4450448.html

   https://blog.csdn.net/weiguang_123/article/details/50725865

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值