真机崩溃日志处理 定位行

来源:互联网 发布:淘宝数据魔方架构 编辑:程序博客网 时间:2024/06/13 21:22

首先,我们打开崩溃日志 操作步骤如下 崩溃日志操作截图

崩溃日志如下: crash log


下面是重点需要关注的地方了 crash log report

然后你要使用终端,cd到自己APP包的目录下面,如图所示: APP包路径

然后记住如下的命令行: xcrun atos -o 驾值网.app/驾值网 -arch armv7 -l 0xd1000 0x0026c02c 如下图所示: 终端图 armv7 :有可能是 arm64 或者是 armv7s 要看你项目的实际情况, 驾值网.app/驾值网: 需要换上自己项目的名称 0xd1000 0x0026c02c:如下图,需要倒置这两个内存地址 内存地址倒置

至此,项目就能找到相应的错误地址了:如下! +[AFURLConnectionOperation networkRequestThread] (in ) (AFURLConnectionOperation.m:173)

就能找到相应文件的相应行!

或者使用

用atos命令来符号化某个特定模块加载地址
命令是:
  1. atos [-o AppName.app/AppName] [-l loadAddress] [-arch architecture] 
 
亲测,下面3种都可以:
  1. xcrun atos -o appName.app.dSYM/Contents/Resources/DWARF/appName -l 0x4000 -arch armv7 
  2. xcrun atos -o appName.app.dSYM/Contents/Resources/DWARF/appName -arch armv7 
  3. xcrun atos -o appName.app/appName -arch armv7 
(注:这3行选任意一行执行都可以达到目的,其中0x4000是模块的加载地址,从上面的章节可以找到如何得到这个地址。)
 
文章开头提到crash文件中有如下两行,
  1. * 3 appName 0x000f462a 0x4000 + 984618  
  2. * 4 appName **0x00352aee** 0x4000 + 3468014   
 
在执行了上面的:
  1. xcrun atos -o appName.app.dSYM/Contents/Resources/DWARF/appName -l 0x4000 -arch armv7 
 
之后,输入如下地址:
  1. 0x00352aee 
 
(crash文件中的第4行:4 appName **0x00352aee** 0x4000 + 3468014)
 
可以得到结果:
  1. -[UIScrollView(UITouch) touchesEnded:withEvent:] (in appName) (UIScrollView+UITouch.h:26) 
 
这样就找到了应用种到底是哪个模块导致的crash问题。

0 0
原创粉丝点击