国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

利用.dSYM和.app文件準確定位Crash位置

2019-11-09 15:03:55
字體:
來源:轉載
供稿:網友
當發布到iphone上的應用程序Crash之后,iPhone會自動生成一個Crash Log(*.crash),這個文件包含了一些有用的調試信息,但對于堆棧,它只記錄的函數地址,而無法顯示函數名。函數名保存在一個叫dSYM的二進制文件中,即一個調試符號表文件。首先,確保在release(Ad Hoc或者App Store)一個版本時,保存了對應的xxx.app和xxx.dSYM文件。

其次,驗證xxx.crash、xxx.app和xxx.dSYM三者的uuid是否一致。

驗證方法:

1)查看xxx.app的uuid。

[plain] view plaincopyPRint?在CODE上查看代碼片$ dwarfdump --uuid mobileguard.app/mobileguard  

2)查看xxx.dSYM的uuid。

[plain] view%20plaincopyprint?$ dwarfdump --uuid mobileguard.app.dSYM/Contents/Resources/DWARF/mobileguard  3)xxx.crash。

上面兩個UUID必須一樣,而且必須跟Crash%20Log里面的UUID一致。打開Crash%20Log文件,在”Binary%20Images:”段中,YourApp后面的尖括號內的字符串就是UUID了。 crash%20log%20uuid%20:%20armv7%20 <1dd5eb047491310f88cb7b1d7f61275c>%20/var/mobile/applications/581404D9-FF06-455F-8251-846D41D18B40/Note:

在這之前,需要找到對應的app和dSYM文件。這兩個文件是在后綴為.archive的文件中,在我的機器(Mac%20OS%2010.9.1,Xcode5.0.2)上,.archive文件在“/Users/mikelin/Library/Developer/Xcode/Archives/”文件夾下對應的日期文件夾中,也可以從Xcode%20>%20Organizer%20>%20Archive%20下找到對應的Archive包。

確保三者uuid一致以后,用symbolicatecrash工具生成易讀的日志信息。

首先找到symbollicatecrash工具在哪里:

find%20/Applications/Xcode.app%20-name%20symbolicatecrash%20-type%20f

你會找到:

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

方法一:使用.crash文件和dsym文件

先準備環境:

1)將symbolicatecrash文件拷貝到和那三個文件的同級目錄,此方法不需要.app文件。

2)設置xcode DEVELOPER_DIR。

[plain] view%20plaincopyprint?export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"  

然后執行命令:

[plain] view%20plaincopyprint?symbolicatecrash m.crash mobileguard.app.dSYM > n.crash  

轉載:http://blog.csdn.net/jinzhu117/article/details/20615991

方法二:使用.crash文件和.app文件

如果沒有完整的.crash格式的崩潰文件,只有局部的崩潰信息,如下:

[plain] view%20plaincopyprint?Thread%200%20Crashed:0%20  libobjc.A.dylib%20              0x00003ec0%20objc_msgSend%20+%20241%20  MyApp%20 %20 %20 %20 %20 %20 %20 %20 %20 %20 %20 %20 %20 0x000036d2%200×1000%20+%209938 其中:0x000036d2為棧地址,0×1000為偏移量。

我們可以在控制臺使用atos命令,解析出內存地址,此方法不需要.dsym文件。

[plain] view%20plaincopyprint?派生到我的代碼片$ atos -o MyApp.app/MyApp -arch arm64(崩潰日志中標明的架構) -l 0×1000(偏移量) 0x000036d2(棧地址) 結果示例:__24-[MyApp initBase]_block_invoke.243 (in MyApp) (MyAppStart.m:286) 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 尼勒克县| 漳州市| 宿松县| 双牌县| 客服| 武宣县| 宜城市| 小金县| 平原县| 顺平县| 南汇区| 乐安县| 衡水市| 安康市| 剑川县| 绿春县| 绥阳县| 兴国县| 崇文区| 漯河市| 德令哈市| 长宁县| 长春市| 徐闻县| 连江县| 岗巴县| 北宁市| 菏泽市| 沂水县| 兴山县| 铜山县| 门源| 西宁市| 米脂县| 百色市| 贺州市| 犍为县| 银川市| 锦屏县| 哈巴河县| 元朗区|