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

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/libimobiledevice
    • https://testerhome.com/topics/15447
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值