線上的應用只要用心點點都能發現些bug,連微信,QQ也不列外。但是bug中最嚴重的算是閃退了,這導致了用戶直接不能使用我們的app。
我們公司是特別注重用戶反饋和體驗的,我們會定期打電話咨詢用戶的使用情況。我們也有自己的天使用戶群,這些用戶會跟我們及時的反饋應用的使用情況,bug情況,還有他們的需求。
用戶不是技術人員他無法跟你清楚的描述怎么產生閃退的,於是我們需要一個bug統計的功能,我們公司采用友盟統計實現bug的記錄。我們在iOS應用中植入友盟統計的功能,我也經常在查看友盟的錯誤統計和錯誤趨勢排除項目中不穩定的點。用過友盟統計的都知道,我們只能看到一些16進制的地址,並不能清楚的知道到底哪里出現問題了。
友盟上的bug日志:
Application received signal SIGSEGV (null) (( 0 CoreFoundation 0x2d539feb <redacted> + 154 1 libobjc.A.dylib 0x37db2ccf objc_exception_throw + 38 2 CoreFoundation 0x2d539f15 <redacted> + 0 3 TheFirstClass 0x2928a1 TheFirstClass + 2680993 4 libsystem_platform.dylib 0x383d9f8b _sigtramp + 34 5 libsystem_malloc.dylib 0x3839c267 <redacted> + 2270 6 libsqlite3.dylib 0x3805bc67 sqlite3_exec + 2322 7 libsqlite3.dylib 0x3805b9b5 sqlite3_exec + 1632 8 libsqlite3.dylib 0x38094c6b sqlite3_prepare_v2 + 30 9 TheFirstClass 0xc020d TheFirstClass + 770573 10 TheFirstClass 0xc0689 TheFirstClass + 771721 11 TheFirstClass 0x103457 TheFirstClass + 1045591 12 TheFirstClass 0x103331 TheFirstClass + 1045297 13 TheFirstClass 0x18889d TheFirstClass + 1591453 14 libdispatch.dylib 0x382a07cb <redacted> + 26 15 TheFirstClass 0x188831 TheFirstClass + 1591345 16 TheFirstClass 0x10325d TheFirstClass + 1045085 17 TheFirstClass 0x1031e9 TheFirstClass + 1044969 18 TheFirstClass 0x10319d TheFirstClass + 1044893 19 libdispatch.dylib 0x382a260f <redacted> + 46 20 TheFirstClass 0x103157 TheFirstClass + 1044823 21 TheFirstClass 0x1209d TheFirstClass + 57501 22 TheFirstClass 0x115a3 TheFirstClass + 54691 23 TheFirstClass 0x10acf TheFirstClass + 51919 24 TheFirstClass 0x16c03f TheFirstClass + 1474623 25 TheFirstClass 0x293ef TheFirstClass + 152559 26 TheFirstClass 0x79d5b TheFirstClass + 482651 27 libdispatch.dylib 0x3829a833 <redacted> + 10 28 libdispatch.dylib 0x3829a81f <redacted> + 22 29 libdispatch.dylib 0x382a149f <redacted> + 278 30 CoreFoundation 0x2d5048f1 <redacted> + 8 31 CoreFoundation 0x2d5031c5 <redacted> + 1300 32 CoreFoundation 0x2d46df0f CFRunLoopRunSpecific + 522 33 CoreFoundation 0x2d46dcf3 CFRunLoopRunInMode + 106 34 GraphicsServices 0x323c6663 GSEventRunModal + 138 35 UIKit 0x2fdb916d UIApplicationMain + 1136 36 TheFirstClass 0x122f01 TheFirstClass + 1175297 37 libdyld.dylib 0x382bfab7 <redacted> + 2 ) dSYM UUID: 1ED274B4-8D63-3247-8168-FB884B9E88DA CPU Type: armv7 Slide Address: 0x00004000 Binary Image: TheFirstClass Base Address: 0x000bc000
bug查找步驟如下:
1.為了跟蹤友盟的bug日志,我們必須在應用打包的時候同時保存打包的“XX.xcarchive”,顯示XX.xcarchive的包內容,然后找到dSYMs文件夾下的“項目名.app.dSYM”放到桌面。
2.顯示“項目名.app.dSYM”的包內容,找到“項目名”文件同樣拷貝到桌面。
3.打開終端
a. 輸入 cd deskTop
b. dwarfdump --1ED274B4-8D63-3247-8168-FB884B9E88DA(這是dSYM UUID) 項目名.app.dSYM
c. dwarfdump --arch= armv7(armv7這是CPU Type) --lookup 0xc020d(0xc020d這是錯誤信息的地址) /Users/你的電腦/Desktop/項目名
通過上述的步驟就能定位到崩潰的代碼,至於為什么這行代碼產生崩潰,這就需要自己去分析解決了。這是我總結的查找友盟上bug的簡便方法,使用終端不用下載解析bug的圖像化插件,簡單幾句終端代碼也不麻煩。
