使用Xcode工具symbolicatecrash将设备导出的 .crash 文件符号化 (Xcode7.3)

来源:互联网 发布:两大人工智能编程语言 编辑:程序博客网 时间:2024/06/03 14:00

xcode7.3   命令行工具 symbolicatecrash 在如下目录中

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources

接着需要三个文件

1. 崩溃日志xxx.crash:

Xcode->Window->Devices,选中设备,点击View Device Logs,然后可以看到好多日志,你可以根据时间来判断需要导出哪个日志,选中一个crash日志,右击选择Export log,然后就可以导出日志为aaa.crash,复制到crash文件。

2. 对应的 xxx.app.dSYM文件或者xxx.xcarchive :

打完包之后 注意 备份上述文件中的一个 (xxx.xcarchive  内部是包含 xxx.app.dSYM 的)。


3. symbolicatecrash工具:

/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash 


创建一个 crash文件目录吧,将上述三个文件放入 crash文件目录内。

然后,打开终端,cd到 crash文件目录(可以直接把文件拖到终端,就可以看到crash的路径)


可以用 dwarfdump --uuid xxx.app.dsym 命令先查看一下 dsym 的  uuid如下:

[plain] view plain copy
  1. $ dwarfdump --uuid imeituan.app.dSYM  
  2. UUID: 846F3B51-91C1-30BD-B725-E77E6544C285 (armv7) imeituan.app.dSYM/Contents/Resources/DWARF/imeituan  
  3. UUID: 50232D18-8497-388F-B949-F4128F174C9A (arm64) imeituan.app.dSYM/Contents/Resources/DWARF/imeituan  

将上面的 50232D18-8497-388F-B949-F4128F174C9A 去掉 中间横线后 和 

 和 xxx.crash 文件内部 Binary Images: 内对应 imeituan 段的 50232d188497388fb949f4128f174c9a 是一致的 。

[plain] view plain copy
  1. Binary Images:  
  2. 0x100038000 - 0x103607fff imeituan arm64  <50232d188497388fb949f4128f174c9a> /var/containers/Bundle/Application/C58C...  


如果不一致,说明 dsym 文件 不匹配。



接着输入

[plain] view plain copy
  1. ./symbolicatecrash ./xxx.crash ./xxx.app.dSYM > new_symbol.cash  

运行完上面这句可能会出现以下问题:Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 60.

解决方法是输入以下命令:export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"

然后再重复执行

[plain] view plain copy
  1. ./symbolicatecrash ./xxx.crash ./xxx.app.dSYM > new_symbol.cash  


没问题的话会 在  crash文件目录下 就多了个new_symbol.cash文件,这个就是符号化之后的crash文件了


0 0