使用 symbolicatecrash 解析崩溃堆栈
xcode解crashlog工具symbolicatecrash的使用
在xocde编译app的时候会同时生成一个以dsym(该app对应的符号表)作为后缀的文件,每个app对应一个符号表。手机连接到电脑,用organizer 可以看到Device Logs,将某个crashlog直接拖出来,然后需要通过symbolicatecrash来查看,但是这个工具在xccode4.3的时候改变了存放的位置。
1.给xcode打一个补丁: 命令行运行 /usr/bin/xcode-select -print-path
如果输出”/Developer”或者其他非”/Applications/Xcode.app/Contents/Developer/”的内容,运行下面的命令:
sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/
否则就OK
2.查找symbolicatecrash:find /Applications/Xcode.app -name symbolicatecrash -type f
获取路径,我的是/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Devel-oper/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash
3、将symbolicatecrash设置连接,使得在任何位置都可以使用
sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Deve-loper/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/sy-mbolicatecrash /usr/bin/symbolicatecrash
4、将**.app.dsym文件(需要找到对应与crash app版本的dsym文件哦) 和 **.crash 文件 放到同一个文件夹中
我的是:XXX.app.dSYM 和 XXX.crash两个文件
在终端中进入到该文件夹,运行 symbolicatecrash XXX.crashXXX.app.dSYM >log.crash 即可解出crash log —log.crash。
如果看到Error: “DEVELOPER_DIR” is not defined at /usr/bin/symbolicatecrash line 53.
那么设置下 export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
4.3之前
1.直接find /Developer -name symbolicatecrash -type f 就可以进行接下来的步骤
其实发现在organizer直接看该crash log 也可以,据说这样会有些地址没解析出来,所以要用symbolicatecrash来解析一遍 不过暂时没发现区别 还真有区别
如果用organizer看不到目录 就用itools 在文件系统里找 需要越狱哦
真机上crash log 其中一个目录
/var/mobile/Library/Logs/CrashReporte
二、接下来进入正题:验证uuid:
a. Qzone.app/Qzone 的uuid
b. QZone.app.dSYM 的uuid
c. QZone.crash 的uuid
三者一致才能还原符号表。
1. 将 Qzone.app 、QZone.app.dSYM、 QZone.crash放在同一个目录:
2. 核对uuid是否一致:
三者一致。
3. 进行解析:
让解析后重新生成文件: log.crash。
ok ,结束。
4. 还原符号表之前与还原之后的对比:
还原前:
还原后:
over.