常見Android Native崩潰及錯誤原因


http://www.droidsec.cn/%E5%B8%B8%E8%A7%81android-native%E5%B4%A9%E6%BA%83%E5%8F%8A%E9%94%99%E8%AF%AF%E5%8E%9F%E5%9B%A0/

 

Android上的Crash可以分兩種:

1、Java Crash
java代碼導致jvm退出,彈出“程序已經崩潰”的對話框,最終用戶點擊關閉后進程退出。
Logcat 會在“AndroidRuntime”tag下輸出Java的調用棧。

2、Native Crash
通過NDK,使用C/C++開發,導致進程收到錯誤信號,發生Crash,Android 5.0之前進程直接退出(閃退) , Android 5.0之后會彈“程序已崩潰”的對話框。

Logcat 會在“debug”tag下輸出dump信息:

  • 錯誤信號:11是信號量sigNum,SIGSEGV是信號的名字,SEGV_MAPERR是SIGSEGV下的一種類型。
  • 寄存器快照:進程收到錯誤信號時保存下來的寄存器快照,其中PC寄存器存儲的就是下個要運行的指令(出錯的位置)。
  • 調用棧:#00是棧頂,#02是棧底,#02調用#01調用#00方法,#00的方法時libspirit.so中的Spirit類下的testCrash方法,出錯的地方是testCrash方法內匯編偏移17(不是行號哦!)

UKYUQA}TYQ(3SPXORCQAU$4

 


免責聲明!

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



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