iOS符号化崩溃日志

在我们拿到奔溃日志时,里面都是一些看不懂的”乱码“,此时我们就需要对日志进行符号化解析成我们能看懂的类名,方法名和具体的代码行数。

主要用到3个文件
1.xx.crash
2.xxx.app..dSYM
3.symbolicatecrash

一.获取xxx.crash奔溃日志

1).xocde菜单

选择 Window——>Organizer. 选择 crashes

2).当手机连接Xcode进行测试时,可以直接查看崩溃信息。

具体方法打开 window->Devices & Simulators

然后点击View Device Logs

3).手机:

设置——>隐私——>分析——>分析数据

可以找到应用程序崩溃信息。是 .ips文件将数据可以通过qq分享 然后将.ips 文件修改为.crash 文件。(注意 找这个文件是按照你项目名称首字母进行排序的 不是按时间)

二.获取dSYM文件是iOS编译后保存16进制函数地址映射信息的文件

找到方法:
打开 Xcode -> Window -> Organizer -> CrashDemo -> Archives -> 刚打的包 -> 右键 -> Show in Finder, 在 .xcarchive 中找到。

如果你没有dSYM文件在工程里设置一下:
在build settings -> build options -> Debug Information Format 设置为DWARF with dSYM File即可

三.获得symbolicatecrash工具

Xcode有自带的symbolicatecrash工具,可以通过dSYM文件将crash文件中的16进制地址转换成可读的函数地址。symbolicatecrash工具位于:

找到位置:

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

将获取的工具拷贝到一个自己创建的文件夹内。注意 xcode版本不同位置可能不一样。

四.以上获取的三个文件在符号化前最好先检查一下xxx.app.dSYM和xxx.crash的uuid是否一致。

查看xxx.app.dSYM文件的uuid的指令:
dwarfdump --uuid xxx.app.dSYM (xxx工程名)

xxx.crash的uuid位于crash日志中的Binary Images:中的第一行尖括号内。如:armv7 <2e6fe8ab6be3336288282c634b76f06d>

把这个三个文件放到同一个文件夹内进行日志解析
./symbolicatecrash ./*.crash ./*.app.dSYM > log.crash
之后就会出现一个log.crash的文件就是我们符号化的日志文件

可能会出现以下错误:
1.Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69.
此时只要告诉终端”DEVELOPER_DIR“的位置
export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"
然后在执行解析日志的命令就可以了.
2.如果报错:No symbolic information found
可能是你的xxx.app.dSYM和xxx.crash的uuid不一致

你可能感兴趣的:(iOS符号化崩溃日志)