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

 
posted @   滴水微澜  阅读(599)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2015-11-14 隐藏uitabbar的代码
点击右上角即可分享
微信分享提示