之前一次測試 有很多閃退 大部分都是 SIGSEGV(SEGV_MAPERR)
真是頭疼 從未涉及過這類問題
撓撓頭 開始刨坑之旅
這是U3D 5.2.2的版本
首先要解決這些這些看不懂的堆棧資訊 ,bugly意思是 送出制表符檔案 來解析 堆棧記憶體值來找到相應方法位置
這個制表符檔案讓我頭疼了一陣 我之前是解壓APK 找到lib檔案下的l.so檔案 通過bugly上面的方法來擷取制表符檔案送出到網站上 但是最後出來的 和上圖一樣 根本沒找到位置就這些閃退也就暫時擱置了
突然有一天我在用手機測試性能 進遊戲突然閃退 但是連接配接logcat 看到了一些堆棧資訊
心想這個問題機率太高 再嘗試下解決
http://dev.qq.com/topic/5901b8df55c328b21aeb6d74 這個BUGLY上纖細介紹 上面的資訊的簡介
通過 各種神奇搜尋 準備使用 NDK庫來定位錯誤資訊位置
方法
1.下載下傳NDK (百度搜尋下 官網下載下傳即可)
2.解壓APK内的.so檔案(解壓後搜尋 下檔案夾下.so檔案 就是了)
3.通過指令行
進入 檔案夾 D:\android-ndk-r14b-windows-x86_64\android-ndk-r14b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\
執行這個指令
用這個addr2line 參數 -c -f -e .so的檔案 後面是堆棧位址(.so我就直接放到了同一個目錄)
bin>arm-linux-androideabi-addr2line -C -f -e libunity.so f7218610(可以輸入多個位址 會全部顯示出來)
失敗了。。傳回都是 ????問好
想想也是BUGLY内部的方法大概也是這樣 都沒輸出到位置 我這樣失敗也是正常
突然想到 這是release 版本 也許加密 混淆了 我就又打了debug版本的包 解壓APK
發現果然.so檔案從14M 變成了 20M 突然我就興奮了 再執行上一步操作 堆棧出來了
果然如此行了 查問題吧 這個坑是抛出來了 開始抛下個坑吧