Map Dream  

方法一、在编译时保留xx.app, xx.app.dSYM在/user目录下,xcode->orgernize->Device Logs就能够自动部分定位地址

方法二、xcode 有自带的symbolicatecrash,可以将.crash文件中的16进制地址转换成可读的函数地址。

symbolicatecrash位于:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash(Xcode 4.5)

每一次Build之后会有相应的xxx.app, xxx.app.dSYM文件,.dSYM文件是将Build之后的文件16进制地址对应的函数地址储存起来之后的文件。

每一个xx.app, xxx.app.dSYM文件都拥有相应的uuidcrash文件也有uuid,只有三者uuid一至才表明之三者可以解析出正确的日志文件。

在terminal中输入命令:./symbolicatecrash xxx.crash xxx.app.dSYM > test.log

这样可以将.crash日志转换成test.logtest.log即可读的函数文件。

输入上述命令可能会出现Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 53.这个错误。

如果出现上述错误,输入命令:export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer

然后继续执行./symbolicatecrash xxx.crash xxx.app.dSYM > test.log可以成功

 方法三:采用atos逐行进行解析

进入app文件夹,

使用命令:atos -o xxx.app/xxx -arch armv7 0x38ad42f9 0x38ad42f9 0x38ad42f9(多个16进制地址,使用空格分开)

注意.app, .app.dSYM需要跟日志程序版本build一致

 

以上三个办法都无法解析的Symbol,只能使用gdb ***.app, 然后使用info line *0x...., 注意地址前要加*号,.app与.dsym文件要同在一个目录下。

崩溃地址的计算方法  崩溃地址-slider+image offset(0x1000), sliderAddress可以从崩溃日志中获得。

 

posted on 2013-07-05 16:33  Map Dream  阅读(1519)  评论(0)    收藏  举报