为了解析崩溃日志,因此在处理崩溃信息的过程中,往往会需要找到这次崩溃信息对应的是哪一次的构建结果,这要怎么做?每个可执行文件都有一个构建UUID,唯一标识它。crash日志包括崩溃的应用程序的构建UUID和崩溃时所加载的所有库。你需要验证构建版本的UUID和crash信息包含的UUID是否一致即可。
查看.ipa包、.dSYM、.crash的uuid
*查看crash日志的构建UUID
使用xcode连接崩溃设备,找到你的crash。
把崩溃日志放进相应文件夹
在终端执行以下命令。
//Example.crash。 crash的文件名
$ grep --after-context=2 "Binary Images:" Example.crash
你会看到类似这样的结果:
这里,构建UUID是270a9b9d7a333a4a9f1aaf8186f811111,和路径应用程序的可执行文件是Example.app/Example。
Binary Images:
0xb6000 - 0xb7fff +Example armv7 <270a9b9d7a333a4a9f1aaf8186f811111> /var/mobile/Applications/28D4F177-D312-4D3B-A76C-C2ACB4CB7DAD/Example.app/Example
0x2feb5000 - 0x2fed6fff dyld armv7 <4a817f3e0def30d5ae2032157d889c1d> /usr
注:也可以去Example.crash直接去搜索Binary Images 第一个对应的就是uuid。
*查看.ipa包的UUID
- 解压.ipa文件
$ cp Example.ipa Example.zip
$ unzip Example.zip- 解压结果查看
$ cd Payload
$ ls
Example.app- 在终端可以使用以下命令打印一个可执行的构建UUID
$ xcrun dwarfdump --uuid Example.app/Example- 示例结果:
UUID: 270A9B9D-7A33-3A4A-9F1A-AF81811111 (armv7) Example.app/Example
UUID: 7711EC60-C0B2-3608-A539-182C77AE01ED (armv64) Example.app/Example
*查看.dDYM文件的UUID
终端输入以下命令
$ dwarfdump --uuid /Users/wusuowei/Desktop/Example.dSYM
示例结果:
UUID: FEB022C4-F950-37DD-8D19-AF81811111(armv7) /Example.dSYM/Contents/Resources/DWARF/Example
UUID: 250F0F9E-7855-3347-900A-F555442C9F29 (arm64) /Example.dSYM/Contents/Resources/DWARF/Example
执行symbolicatecrash
打开终端用命令切换到桌面的crash目录下:
cd /Users/你的电脑名称/Desktop/crash
执行命令
./symbolicatecrash /Users/用户名/Desktop/文件夹名/111.crash /Users/用户名/Desktop/文件夹名/Control.app.dSYM(dsym) > Control_symbol.crash
这时候终端有可能会出现:Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 60.
输入命令:export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"
再执行./symbolicatecrash ./symbolicatecrash /Users/用户名/Desktop/文件夹名/111.crash /Users/用户名/Desktop/文件夹名/Control.app.dSYM > Control_symbol.crash
这时候终端将会进行处理了
网友评论