.crash文件分析相关的路径和命令行操作记录。
.crash
iTunes同步完成后,.crash文件路径:
~/Library/Logs/CrashReporter/MobileDevice
dSYM
每一个打包版本都有个对应的 Archives 文件,路径为:
/Users/<用户名>/Library/Developer/Xcode/Archives
文件名为打包对应的日期,.xcarchive显示包内容,dSYMs文件夹下的 AppName.app.dSYM文件。
Symbolicatecrash
Symbolicatecrash的文件路径:
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
Xcode不同版本间Symbolicatecrash的位置可能会有差异,如DVTFoundation.framework部分文件名不一样。
若找不到可以通过命令来查找:
find /Applications/Xcode.app -name symbolicatecrash -type f
UUID校验
确保文件之间彼此正确对应。Ps. HDPRO改为对应的AppName即可。
.crash
grep "HDPRO arm" *.crash
输出结果:
0x100054000 - 0x1008e3fff HDPRO arm64 <f960888bef2430e9b844732364819642> /var/containers/Bundle/Application/84FA640D-AC63-4848-9989-9C5D8FCA748A/HDPRO.app/HDPRO
dSYM
dwarfdump --uuid HDPRO.app.dSYM/Contents/Resources/DWARF/HDPRO
输出结果:
UUID: 271C3816-D14F-3FFE-93FA-D0A8F2912DF0 (armv7) HDPRO.app.dSYM/Contents/Resources/DWARF/HDPRO
UUID: F960888B-EF24-30E9-B844-732364819642 (arm64) HDPRO.app.dSYM/Contents/Resources/DWARF/HDPRO
.app
应用Archive生成的.ipa,将后缀改为.zip,解压生成Payload文件夹,里面有个与App同名文件,此时用命令行:
dwarfdump --uuid Payload/HDPRO.app/HDPRO
输出结果:
UUID: 271C3816-D14F-3FFE-93FA-D0A8F2912DF0 (armv7) Payload/HDPRO.app/HDPRO
UUID: F960888B-EF24-30E9-B844-732364819642 (arm64) Payload/HDPRO.app/HDPRO
对比UUID即可。
操作过程
将Symbolicatecrash、dSYM文件、.crash文件放在同一个文件夹内,命令行cd到这个文件夹中。
先运行:
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
否则会报错:
Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 60.
输入命令:
./symbolicatecrash HDPRO-2016-06-14-133332.crash HDPRO.app.dSYM > a.log
则最终生成的a.log文件即为崩溃时的具体信息。
— end —