天天看點

android閃退 日志分析 SIGSEGV

之前一次測試 有很多閃退 大部分都是 SIGSEGV(SEGV_MAPERR) 

android閃退 日志分析 SIGSEGV
android閃退 日志分析 SIGSEGV

真是頭疼  從未涉及過這類問題  

撓撓頭 開始刨坑之旅 

這是U3D 5.2.2的版本

首先要解決這些這些看不懂的堆棧資訊 ,bugly意思是 送出制表符檔案 來解析 堆棧記憶體值來找到相應方法位置

這個制表符檔案讓我頭疼了一陣  我之前是解壓APK 找到lib檔案下的l.so檔案 通過bugly上面的方法來擷取制表符檔案送出到網站上  但是最後出來的 和上圖一樣 根本沒找到位置就這些閃退也就暫時擱置了

突然有一天我在用手機測試性能 進遊戲突然閃退 但是連接配接logcat 看到了一些堆棧資訊

android閃退 日志分析 SIGSEGV

心想這個問題機率太高 再嘗試下解決

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 突然我就興奮了 再執行上一步操作 堆棧出來了

android閃退 日志分析 SIGSEGV

果然如此行了 查問題吧 這個坑是抛出來了 開始抛下個坑吧