Android使用google breakpad捕獲分析native cash


Android 開發高手課 課后練習(1)

一、Chapter01 崩潰

https://time.geekbang.org/column/article/70602

https://github.com/AndroidAdvanceWithGeektime/Chapter01

1、遇到native cash時,生成.dmp文件

先檢查sdk/ndk環境

 

在local.properties配置sdk/ndk

打包運行效果

 

點擊CRASH按鈕后生成的.dmp文件

 

 2、利用breakpad的minidump_stackwalk分析,先獲取minidump_stackwalk

 https://github.com/google/breakpad

 先克隆

git clone https://github.com/google/breakpad.git 這個項目到本地

然后執行命令,即可拿到所需文件

文件位置,可以拷貝到項目tools/mac/minidump_stackwalk中使用,

 執行命令./tools/mac/minidump_stackwalk sdcard/crashDump/***.dmp >crashLog.txt  后出錯,先把.dmp文件拷貝到電腦上再執行該命令

 為了解決could not be read這個問題,可以使用adb pull sdcard/crashDump 拷貝手機文件到電腦上

 

使用命令分析文件,生成crashLog.txt,下面是一行代碼執行命令,不要分開多次執行

 ./tools/mac/minidump_stackwalk ./crashDump/***.dmp >crashLog.txt

 

 

3、分析

 arm64使用 aarch64-linux-android-4.9;   arm使用arm-linux-androideabi-4.9 ,千萬別看錯,不然執行報錯

而且aarch64-linux-android-addr2line的路徑、libcrash-lib.so的路徑要按照電腦、項目中的路徑保持一致

$ANDROID_NDK_ROOT/toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64/bin/aarch64-linux-android-addr2line -f -C -e sample/build/intermediates/transforms/mergeJniLibs/debug/0/lib/arm64-v8a/libcrash-lib.so 0x600
Crash()
/Users/apple/Documents/developer/Git/Chapter01/sample/.externalNativeBuild/cmake/debug/arm64-v8a/../../../../src/main/cpp/crash.cpp:10

  

輸出的結果是Crash,如圖

可以分析出Crash函數出現了問題

 

項目已經放到github:https://github.com/libill/Chapter01

添加了tools/mac/minidump_stackwalk、crashDump、crashLog.txt。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM