南宁网站建设方案书,单页营销分享网站,自己在家怎么学编程,网站优化方案怎么写文章目录 1. 使用 symbolicatecrash 解析 .ips 文件#xff1a;2. 使用 CrashSymbolicator.py 解析 ips 文件3. 使用 atos 解析 crash 文件4. Helps4.1 .ips 文件获取4.2 .crash 文件获取4.3 获取 .dSYM 和 .app 文件4.4 使用 dwarfdump 查询 uuid 5. Tips6. 总结 1. 使用 sym… 文章目录 1. 使用 symbolicatecrash 解析 .ips 文件2. 使用 CrashSymbolicator.py 解析 ips 文件3. 使用 atos 解析 crash 文件4. Helps4.1 .ips 文件获取4.2 .crash 文件获取4.3 获取 .dSYM 和 .app 文件4.4 使用 dwarfdump 查询 uuid 5. Tips6. 总结 1. 使用 symbolicatecrash 解析 .ips 文件
symbolicatecrash是Xcode自带的crash日志分析工具
步骤1. 找到symbolicatecrash打开Terminal执行
find /Applications/Xcode.app -name symbolicatecrash -type f稍等一会就会输出路径然后将路径复制右键 Finder - 前往文件夹 - 粘贴 - 回车就能找到symbolicatecrash将symbolicatecrash拷贝出来备用
步骤2. 将./symbolicatecrash、crash和dSYM文件放在同一文件夹里
步骤3. 执行解析命令
./symbolicatecrash 《crash文件绝对路径》 《拖入xx.app.dSYM里的xx文件》 log.crash 回车可能会报错
错误1Error: DEVELOPER_DIR is not defined at /Users/yourname/Downloads/crash/symbolicatecrash line 69. 解决执行export DEVELOPER_DIR/Applications/Xcode.app/Contents/Developer后重试 错误2No crash report version in /xxx.crash at ./symbolicatecrash line 1365. 原因Apple 在 Xcode13.3 已经废弃了symbolicatecrash 解决如果需要使用需要将.ips转化为之前的格式。可以使用 AppleCrashScripts 进行转化 步骤
下载AppleCrashScripts项目进入到项目目录下将 .ips 文件复制到AppleCrashScripts-master文件夹下执行
swift convertFromJSON.swift -i xxx.ips -o log.crash生成的log.crash就是旧格式的文件了再用 ./symbolicatecrash 进行解析。 2. 使用 CrashSymbolicator.py 解析 ips 文件
步骤1. 找到CrashSymbolicator.py文件 find /Applications/Xcode.app -name CrashSymbolicator.py -type f 结果 /Applications/Xcode.app/Contents/SharedFrameworks/CoreSymbolicationDT.framework/Versions/A/Resources/CrashSymbolicator.py
步骤2. 使用CrashSymbolicator.py和.dSYM 对.ips文件进行解析
python3 《CrashSymbolicator.p文件路径》 -d xxx.dSYM -p xxx.ips运行结果会直接显示在terminal里需要的可以复制出来保存一下。
步骤3. 分析
...
queue: com.apple.main-thread,
frames: [{imageOffset: 117622764,imageIndex: 0,symbol: __57-[QNBUALiveFeedCategoryChannelViewController viewDidLoad]_block_invoke,sourceFile: QNBUALiveFeedCategoryChannelViewController.m,sourceLine: 80,symbolLocation: 32},...]
...找到了崩溃时主线程正在执行的代码invoke了一个空的block。 3. 使用 atos 解析 crash 文件
命令格式
atos -arch Binary Architecture -o Path to dSYM file/Contents/Resources/DWARF/binary image name -l load address address to symbolicate操作
atos -arch arm64 -o 《拖入xxx.app.dSYM里的xxx文件》 -l 《基地址》《偏移后的地址》Tips: xxx 为项目名
如1
atos -arch arm64 -o ~/xxx.app.dSYM/Contents/Resources/DWARF/xxx 0x10b3e47ec 0x1043b8000atos -arch arm64 -o ~/xxx.app.dSYM/Contents/Resources/DWARF/xxx 0x104885ec0 0x1043b8000-[TTAttributedLabel encodeWithCoder:] (in xxx) (TTAttributedLabel.m:1534)
-[QNBUAPosterVerticalPaddingPicViewModel posterBackgroundOperation] (in xxx) (QNBUAPosterVerticalPaddingPicViewModel.m:115)4. Helps
4.1 .ips 文件获取
设备 - 设置 - 隐私与安全性 - 分析与改进 - 分析数据 - (对应app名时间点)TestFlight 的可以在 iTunes Connect 获取到崩溃日志 iTunes Connect - Manage Your Applications - 对应app - View Detail - Crash Reports (已符号化)Xcode - Window - Origanizer - Crash 获取 (需登录开发者账号) 需要用户共享分享才能获取到他的崩溃日志 官方提供的崩溃信息不是实时的只能查看两天前的崩溃信息需要试试可以使用第三方工具
4.2 .crash 文件获取
设备连接电脑 XCode - Windows - Device and Simulator - View Device Logs - (对应app名时间点) - 右键 Export Log
4.3 获取 .dSYM 和 .app 文件
.dSYM是十六进制函数地址映射信息的中转文件调试的symbols会包含在这个文件中symbols即类名、函数名等。
在Archives打包时应该保存每个正式版的dSYM和app文件以备定位线上问题使用
Window - Organizer - Archives - 右键(需要的包) - Show in Finder - 右键 .xcarchive 显示包内容
Tips:Archives包文件路径为~/Library/Developer/Xcode/Archives
debug模式获取
修改设置Xcode - Targets - Build Setting 2.1Debug Infomation Format - DWARF - DWARF with dSYM File 2.2Generate Debug Symbols - YES 用真机编译就能生成.dSYM和.app文件了在项目工程的Products文件夹里右键 xxx.app 文件 - Show in Finder - 就能找到
4.4 使用 dwarfdump 查询 uuid
查询.dSYM的uuid确保跟.ips或.crash文件的uuid一致
dwarfdump -u dSYM所在文件路径5. Tips
Tips1: Apple deprecated symbolicatecrash at Xcode13.3, use atos insteadTips2: 有些app有很多dSYM文件需要把所有dSYM文件都拷贝到待解析文件同一文件夹下Tips3: simulator不会生成crash文件Tips4: XCode设置生成dSYM文件并跑到真机上此时app产生的.ips文件会自动符号化
6. 总结
CrashSymbolicator.py解析结果显示在 Terminal 里且 没有保持原来的堆栈格式atos效率好低只能一个地址一个地址的解析symbolicatecrash被废弃了但文件进过转换还能用且会解析一整个文件还保留原来的堆栈格式推荐使用 参考: Diagnosing issues using crash reports and device logs Acquiring crash reports and diagnostic logs Understanding Crashes and Crash Logs iOS Debugging Magic iOS Crash 分析攻略
本文的描述很难不掺杂作者的主观意见如果对文章中的内容有疑问欢迎评论区提出不同的意见进行讨论