標籤:iosbug分析
項目開發之初安卓和IOS都是使用Bugly來統計bug的後期IOS上線過程中被退回提示一個關於Bugly的upload的一個方法衝突,然後IOS就改用友盟的,不過比較頭疼的是捕獲的IOS問題並不像安卓一樣能夠清晰,只顯示記憶體位址,前期沒有經驗導致IOS打包人員沒有儲存xcarchive檔案,也就無法定位了。最新的版本上線了讓其發給我目前的版本的xcarchive來定位分析bug,在網上搜尋了一下,使用一個工具(dSYM檔案分析工具)來分析。
1、準備內容
dSYM檔案分析工具,當前發布版本的xcarchive檔案,當前發布版本的友盟Bug記錄
2、操作說明
開啟dSYM檔案分析工具(圖1),將xcarchive檔案拖到“請將dSYM檔案拖拽到視窗中並選中任意一個版本進行分析”,然後點擊拖拽的檔案,會出現圖2會自動填寫選中dSYM檔案的UUID。
圖1
圖2
開啟友盟選擇一個bug記錄,如下:
-[NSNull rangeOfCharacterFromSet:]: unrecognized selector sent to instance 0x197941e70(null)(0 CoreFoundation 0x00000001854802f4 <redacted> + 1601 libobjc.A.dylib 0x0000000196ca40e4 objc_exception_throw + 602 CoreFoundation 0x00000001854873a4 <redacted> + 03 CoreFoundation 0x0000000185484154 <redacted> + 9284 CoreFoundation 0x0000000185386ccc _CF_forwarding_prep_0 + 925 UIKit 0x000000018a236c44 <redacted> + 1046 UIKit 0x000000018a3a52c0 <redacted> + 767 UIKit 0x000000018a3a5380 <redacted> + 568 UIKit 0x000000018a3a5464 <redacted> + 369 QuartzCore 0x0000000189800884 <redacted> + 32010 UIKit 0x0000000189ed1f94 <redacted> + 16011 UIKit 0x0000000189f973d0 <redacted> + 34812 UIKit 0x000000018a1b5be8 <redacted> + 322013 UIKit 0x0000000189fa1268 <redacted> + 17214 UIKit 0x0000000189ebd760 <redacted> + 58015 QuartzCore 0x0000000189805e1c <redacted> + 15216 QuartzCore 0x0000000189800884 <redacted> + 32017 QuartzCore 0x0000000189800728 <redacted> + 3218 QuartzCore 0x00000001897ffebc <redacted> + 27619 QuartzCore 0x00000001897ffc3c <redacted> + 52820 QuartzCore 0x00000001897f9364 <redacted> + 8021 CoreFoundation 0x00000001854382a4 <redacted> + 3222 CoreFoundation 0x0000000185435230 <redacted> + 36023 CoreFoundation 0x0000000185435610 <redacted> + 83624 CoreFoundation 0x00000001853612d4 CFRunLoopRunSpecific + 39625 GraphicsServices 0x000000018eb776fc GSEventRunModal + 16826 UIKit 0x0000000189f26fac UIApplicationMain + 148827 ????????? 0x00000001000450c4 ????????? + 20090028 libdyld.dylib 0x0000000197322a08 <redacted> + 4)dSYM UUID: 95B2009C-C988-****-****-8393E7003FA8CPU Type: arm64Slide Address: 0x0000000100000000Binary Image: ???Base Address: 0x0000000100014000
首先對應bug中的dSYM UUID跟dSYM檔案分析工具中的UUID是否一樣。
在Bug記錄中一般帶有項目名稱的或者由於亂碼導致???的那行代碼就是項目錯誤行拷貝記憶體位址
0x00000001000450c4
和
Slide Address: 0x0000000100000000
到dSYM檔案分析工具中,點擊分析按鈕,在有可能錯誤的地方就會顯示當前記憶體位址對應的程式碼。
最後到項目中找到對應的行尋找問題就可以了。
IOS友盟統計Bug追蹤