崩溃日志有的时候线上版本会出现隐性Bug并且debug不能大概率复现,造成难以断点调试。这个时候测试会丢过来一个.ips的文件包,需要手动定位。
准备动作
-
将
.ips
文件后缀改成.crash
。 -
发布版本的
.app.dSYM
文件。一定要是你产生报错日志的版本。获取方式:Window -> Organizer 找到你发包版本 右键 show in Finder 。.xcarchive
文件下显示包内容 dSYMs -> 获取。
- 新建的一个文件夹例如:Crash。将
xxx.app.dSYM
和.crash
放入新建的文件夹中。
打开终端
1:先获取symbolicatecrash
工具,
去如下路径/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
去复制symbolicatecrash
到crash文件夹内。这个时候你crash文件夹内有三个文件如下图:
15459741693652.jpg
2:终端命令解析
-
cd到你的创建的crash文件夹
-
./symbolicatecrash ./xxx.crash ./xxx.app.dSYM > log.crash
(symbolicatecrash路径 空格 .crash路径 空格 .app.dSYM路径 输出log的crash格式文件)
可能会出现如下错误:
Error: "DEVELOPER_DIR" is not defined at /Users/snailchen/Desktop/crash/symbolicatecrash line 69.
-
xcode-select -print-path
检查一下:如果不是/Applications/Xcode.app/Contents/Developer/
则输入export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer
-
验证
xcode-select -print-path
- 重复步骤2,会新生成一个log.crash文件
3:打开后就是一些堆栈的日志
这里我就不分析一些常见的bug了有兴趣的可以去Google/Baidu一下:Watchdog timeout
、User force-quit
、Low Memory termination
等等
- 这里分享两个文档:CrashReporter 、 Understanding...
如上图可以定位到如下,可以看出这个错误,上面只给出了一个内容地址,连大概的错误原因都没有,一般情况下如果是数组越界,空值等等会显示一个基本提示。但是就算如此也是不够的,我们需要进一步定位。
12 xxxx 0x00000001001a20fc 0x100070000 + 1253628
13 xxxx 0x00000001003fe9b0 0x100070000 + 3729840
14 xxxx 0x00000001004ced48 0x100070000 + 4582728
15 xxxx 0x00000001005e6608 0x100070000 + 5727752
进一步定位
路径前往至发布版本的
dSYMs
文件夹下,显示包内容
我们 cd 到该文件目录下
atos -arch arm64 -o xxxx 0x100070000 (xxxx:为你APP即如上图的SDKTest)
网友评论