查看日志Xcode 版本:12.4
点击菜单栏的 Window
,然后选中下图圈红的选项,设备和模拟器一栏
日志文件中一些关键字的解读
获取到日志,解析后才能变成我们可以看懂的日志文件,需要三个前提:
*.crash 文件(上图中的日志)symbolicatecrash(解析的工具)*.dSYM(存 16 进制函数地址映射信息的中转文件)接下来,在桌面创建一个文件夹 dumpCrash
,名称随意,用于存放解析日志的上面三个文件
进入 View Device Logs
页面后,选中要查看的日志,右键 export
导出到上面创建的文件夹内,得到一个 *.crash
文件
这是 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欢迎分享,转载请注明来源:内存溢出
评论列表(0条)