iOS系统app崩溃日志手动符号化

iOS系统app崩溃日志手动符号化步骤:

方法一、使用symbolicatecrash工具进行符号化

1.在桌面建立一个crash文件夹,将symbolicatecrash工具、.crash文件、.dSYM文件放到该文件夹中

a.如何查询symbolicatecrash路径位置?

执行命令:find /Applications/Xcode.app -name symbolicatecrash -type f
然后将symbolicatecrash复制一份

例如:Xcode7.3的symbolicatecrash路径
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

b.crash文件为崩溃app对应版本的崩溃日志
c.dSYM文件为崩溃app对应版本的符号文件

2.在终端中进入到dsym文件夹下,执行命令:./symbolicatecrash *.crash *.dSYM > crash.log
'*'为app对应的名字
如果报错:
在当前窗口下执行命令:export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer
然后再次执行命令:./symbolicatecrash *.crash *.dSYM > crash.log

方法二、使用Xcode进行符号化

1.在桌面建立一个crash文件夹,将 *.crash文件、*.dSYM文件、*.app文件(将*.ipa的后缀改为zip,然后解压缩得到。经过尝试发现,没有*.app这个文件也是可以的) 放到该文件夹中

2.打开Xcode->Window->Devices页面,选中一个Device,点击“View Device Logs”按钮,进入设备crash日志展示页面。
3.将 *.crash文件拖进入,刷新即可。

方法三、使用命令行工具atos进行符号化

简单介绍:
每个crash日志都包含发生crash应用(app)的UUID以及crash发生的时间;每一个UUID对应工程的每一次build。简而言之,每个UUID对应一个应用app。
1.在桌面建立一个crash文件夹,将symbolicatecrash工具、.crash文件、.dSYM文件放到该文件夹中。
2.查询crash文件的UUID。
打开终端,进入crash文件夹目录下
运行命令:grep "appName armv" *crash 或者 grep --after-context=2 "Binary Images:" *crash
运行结果:
appName 2017-4-19 下午3-36_log.crash:Binary Images:
appName 2017-4-19 下午3-36_log.crash-0x100008000 - 0x1011b3fff appName arm64 <92c850cb21143c049c255c69af3a3010> /var/containers/Bundle/Application/2C08154B-E0AC-4007-A54C-DF1403BA45CE/appName.app/appName
appName 2017-4-19 下午3-36_log.crash-0x1022d4000 - 0x102307fff dyld arm64 <a63e8b89c75a3115b54b1f2f469f676a> /usr/lib/dyld
--
说明:“0x100008000”为模块加载地址, “0x1011b3fff”将要被符号化的地址
3.查询app的UUID。
运行命令:xcrun dwarfdump --uuid appName.app/appName
运行结果:UUID: 92C850CB-2114-3C04-9C25-5C69AF3A3010 (arm64) appName.app/appName

4.对比app的UUID 与 crash的UUID是一致,如果一致的话开始进入内存地址符号化
有三个命令可以进入使用:
xcrun atos -o appName.dSYM/Contents/Resources/DWARF/appName -l 0x100008000 -arch arm64 注释:0x100008000为模块加载地址

xcrun atos -o appName.dSYM/Contents/Resources/DWARF/appName -arch arm64
xcrun atos -o appName.app/appName -arch arm64

执行过上面命令后,接着就可以输入 需要符号化的地址了
abcdeMacBook-Pro:24 zhoufei$ xcrun atos -o appName.dSYM/Contents/Resources/DWARF/appName -l 0x192a28000 -arch arm64
0x0000000192a3b7ec

 
原文地址:https://www.cnblogs.com/zhou--fei/p/6060925.html