查看真机崩溃日志

1.Flex(所有机子)

2.View Device Logs(连接过XCode的测试机)

1.使用symbolicatecrash分析崩溃日志(客户使用的外部机子)

  1. 在你的桌面创建一个新文件夹,并且命名为"CrashReport"

  2. 打开终端输入 find /Applications/Xcode.app -name symbolicatecrash -type f,然后终端会返回这个文件的路径,只要找到symbolicatecrash文件, 复制然后粘贴到刚才创建的 "CrashReport" 文件夹里面.

  3. Xcode Archive的二进制文件中找到.dSYM文件和.app文件拷贝到刚才创建的 CrashReport 文件夹里面.

  4. 打开终端进入CrashReport文件夹,依次输入以下命令行:

  5. cd /Users/username/Desktop/CrashReport

  6. export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer

  7. ./symbolicatecrash ./*.crash ./*.app.dSYM > symbol.crash

   这时候终端将会进行处理,处理结果是生成一个新的文件symbol.crash。然后打开这个文件,你就会看到日志跟我们调试APP的控制台输出的内容一样了!

extention({

相信每个做iOS开发的TX都应该不会对symbolicatecrash陌生,我们第一次遇到真机上产生的崩溃日志时,在网上搜到的大部分教程都告诉我们说要用symbolicatecrash来解析crash log,我信了,所以相当长一段时间内,我都是用这个工具来解析crash log的。

每次都去敲命令来解析crash log本身就是一件很蛋疼的事情,但这还不是麻烦的,最麻烦的是用symbolicatecrash还经常遇到问题:怎么crash log又解析失败了?怎么批量解析crash log?

问题出在方法上,实际上我们完全用不着symbolicatecrash的,因为Xcode中自带的organizer就是很好的解析crash log工具了。

举个例子,如果我们的应用是在自己的机器上编译生成的,把应用装在真机上如果有崩溃产生,把真机通过数据线连接到Mac电脑上,打开Xcode菜单上的Window——Organizer,找到设备的device logs项中的crash log,稍等片刻,你就会发现这里的crash log已经被自动解析过了(大部分情况会自动解析,如果不行请右键点击选择Re-Sysbomlicate)。

但是如果应用不是在自己的编译上生成的,你会发现organizer不会自动解析crash log(除了系统函数)。怎么在这种情况下也让organizer也能自动解析crash log呢?

其实之前的organizer之所以能自动解析你设备上的crash log,是因为它能根据spotlight的索引来找到对应的.app和dSYM文件,对于这一点,我的猜测是在自己的Mac电脑上编译生成应用时,系统自动对其进行了索引。这个索引应该是根据app uuid来索引的。这个uuid可以执行下面的命令得到:

dwarfdump —uuid YourApp.app/YourApp 
dwarfdump —uuid YourApp.app.dSYM

如果要能解析出crash log,crash log中携带的uuid与dSYM文件的uuid必须与app uuid一致。

既然spotlight能自动进行索引,那是不是也可以手动进行索引呢?答案是能,这正是自动解析的关键。手动索引的命令是mdimport。比如,把iOS应用的.app和.dSYM文件放到一个文件夹中,执行命令mdimport foldername就可以。命令执行完成后再用刚才的organizer去查看crash log,你会发现也能自动解析了。

这意味着什么呢?意味着你把应用所有版本的.app和.dSYM文件放入一个专门的文件夹中,只要mdimpor这个文件夹,以后的organizer就能自动解析出你所有的crash log。

好处不仅仅是这一点。organizer还有一个import功能,借助这个功能,我们可以把其它Mac电脑上的crash log导入到自己电脑中的organizer,然后就可以自动解析。更好的是,用这个功能可以批量导入收集到的crash log,然后我们就可以批量解析所有的crash log。

比起用symbolicatecrash,这种方法简便了许多,从现在起,你可以抛弃symbolicatecrash了。但其实这还不是最好的方法,目前先进的方法是用crash report管理系统来管理所有的crash,比如使用QuincyKit, Crashlytics, Flurry等来进行管理,有时间自己也研究研究。

})

symbolicatecrash使用({

需要的文件:

dSYM文件

首先通过Xcode的Window->Organizer拿到.xcarchive文件。
通过显示包内容可以看到一个dSYMs文件夹,.dSYM文件就在这个文件夹下。
ps: 获取到的dSYM文件的UUID必须和crash文件中的UUID一致。可以通过dwarfdump --uuid *.dSYM得到dSYM文件的UUID。
symbolicatecrash工具

通过find找到symbolicatecrash工具的路径
find /Applications/Xcode.app -name symbolicatecrash -type f
拿到symbolicatecrash工具的路径后,可以使用Mac->前往->前往文件夹(快捷键:shift+command+G)获取到symbolicatecrash工具。
crash文件

获取crash文件有很多种方法,其中比较常用的是通过Xcode->Window->Devices and Simulators->View Device Logs获取到。

步骤:

步骤一:在桌面创建一个crash文件夹。

步骤二:将dSYM文件、symbolicatecrash工具、crash文件拷贝到crash文件夹下。

步骤三:执行命令解析crash文件。

./symbolicatecrash ./*.crash ./*.app.dSYM > symbol.crash
symbol.crash文件就是解析后的crash文件。

可能遇到的问题:

问题一:Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69.

解决方法:

终端执行下面的命令设置环境变量。

export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer

})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值