【iOS】如何通过Xcode查看闪退日志

【iOS】如何通过Xcode查看闪退日志,第1张

Xcode 版本:12.4

查看日志

点击菜单栏的 Window,然后选中下图圈红的选项,设备和模拟器一栏


日志文件中一些关键字的解读

日志解析

获取到日志,解析后才能变成我们可以看懂的日志文件,需要三个前提:

*.crash 文件(上图中的日志)symbolicatecrash(解析的工具)*.dSYM(存 16 进制函数地址映射信息的中转文件)

接下来,在桌面创建一个文件夹 dumpCrash,名称随意,用于存放解析日志的上面三个文件

.crash

进入 View Device Logs 页面后,选中要查看的日志,右键 export 导出到上面创建的文件夹内,得到一个 *.crash 文件

symbolicatecrash

这是 Xcode 自带的一个分析工具,可以通过中转文件把日志中的16进制地址替换成代码位置。

首先找到这个工具所在的位置,通过 find 命令进行查找,也可以根据 Xcode 版本自行百度查找

$ find /Applications/Xcode.app -name symbolicatecrash -type f

/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

选择 iPhoneSimulator 平台下的 symbolicatecrash,拷贝到 dumpCrash 文件夹内

$ cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash Desktop/dumpCrash
*.dSYM

打开 Xcode,进入 Window - Organizer - Product - Archives 查看

如果你跟我一样,是新编写的 APP,在这个页面提示 No Archives
那么,连接真机,点击菜单栏 Product - Archives,等待运行完成后,即可看到当前 APP 的 Archives
⚠️ 注意,如果连接模拟器,Archives 会置灰无法点击

右键,在 finder 中查看

生成了一个 *.xcarchive 文件,右键,选择显示包内容



将 dSYM 文件拷贝到 dumpCrash 文件夹内


这样,准备工作就完成了,然后开始执行解析命令

$ cd Desktop/dumpCrash
$ export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
$ symbolicatecrash ./*.crash ./*.app.dSYM > symbol.crash
执行报错
Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69.

没有添加到环境变量,执行 symbolicatecrash 命令前,执行一下

$ export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
No symbolic information found

原因:.crash 和 .dSYM 文件的 uuid 没有对应

重新装包获取闪退文件重新生成 archives - .dSYM 文件

确保一致后,再次执行命令

结果

总结

如果是开发人员,通常是在 debug 模式下,打一个全局断点,任何地方发生崩溃,堆栈信息会直接指向崩溃代码行,定位崩溃原因修改即可;

作为一名测试人员,到手的通常都是测试包,出现闪退后,需要连接 Xcode 从设备信息内捕获日志,由于没有 .xcarchive 文件,所以无法解析,只能提交给开发捕获到的日志;大部分问题都可以通过该日志定位到,如果定位不到,开发会去进行日志解析;

线上版本,一般都是集成了第三方的错误上报 SDK,eg:百度、bugly、友盟等。


如果非 MacOS 系统,没有 xcode 如何获取日志呢?

tidevice -> syslog https://github.com/alibaba/taobao-iphone-device libimobiledevice https://github.com/libimobiledevice/libimobiledevicehttps://testerhome.com/topics/15447

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/996736.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存