有很多第三方如bugly
,fabric
等都提供了crash分析的功能,且如果xcode登录了app的开发者账号也可能通过xcode->Window->Organizer->Crashes
获取到苹果收集的crash信息,如果在应用提交时选择了上传符号文件,那么在这里直接可以看到已经符号化之后的日志。

其实原理都是一样的,就是通过dsym
文件,借助xcode提供的sybolicatecrash
将一堆地址转化为可读性代码字符串,另外要保证crash文件中的slice_uuid
与dysm
文件匹配才行,可通过MachOView
工具查看xxx.app.dysm->显示包内容->Contents->Resources->DWARF->xxx
该文件中的Load_Commands->LC_UUID
.


重点来了
为了方便,新建一个文件夹tmp
,将xxx.app.dSYM
放到文件夹
- 在终端输入命令
find /Applications/Xcode.app -name symbolicatecrash -type f
查找symbolicatecrash
的路径,可以看到将出输出多个路径/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/iOSSupport/Library/PrivateFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash /Applications/Xcode.app/Contents/Developer/Platforms/WatchSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash /Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
- 找到
SharedFrameworks
路径下的symbolicatecrash
并挎贝到tmp
目录下,可以使用命令cp 原路径 tmp/symbolicatecrash
; - cd到tmp目录下
➜ tmp ./sybolicatecrash ./PiaoWuTong-2020-12-18-135255.ips ./PiaoWuTong.app.dSYM >crash.log
符号化并输出结果到crash.log
文件中。 - 在第一次执行的时候会报错
Error: "DEVELOPER_DIR" is not defined at ./sybolicatecrash line 69.
,解决办法为在终端执行export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
,然后再次执行符号化命令即可。
image.png
网友评论