導航:首頁 > 操作系統 > tombstoneandroid

tombstoneandroid

發布時間:2024-01-17 16:53:42

1. 如何調試分析Android中發生的tombstone

Android中較容易出現以下三類問題:Force close / ANR / Tombstone

前兩者主要是查看當前的進程或者系統框架層的狀態和堆棧就基本可以分析出來,本文主要討論一下tombstone的情況。

tombstone一般是由Dalvik錯誤、狀態監視調試器、C層代碼以及libc的一些問題導致的。


系統發生tombstone的時候,kernel首先會上報一個嚴重的警告信號(signal),上層接收到之後,進程的調試工具會把進程中當時的調用棧
現場保存起來,並在系統創建了data/tombstones目錄後把異常時的進程信息寫在此目錄裡面,開發者需要通過調用棧來分析整個調用流程來找出出
問題的點。

基本工具:

prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin

在分析的時候仔細讀取匯編會獲得更多有用的異常發生時的信息。

1.arm-eabi-addr2line 將類似libxxx.so 0x00012345的調用棧16進制值翻譯成文件名和函數名

arm-eabi-addr2line -e libxxx.so 0x00012345

2.arm-eabi-nm 列出文件的符號信息

arm-eabi-nm -l -C -n -S libdvm.so > dvm.data

3.arm-eabi-objmp 列出文件的詳細信息

arm-eabi-objmp -C -d libc.so > libc.s

通過以上工具的分析 ,我們可以得到較完整的調用棧以及調用邏輯的匯編碼。

然後需要結合ARM架構及ARM匯編的知識(有些情況下可能需要使用gdb)

來分析出現tombstone的原因,以下是本人遇到過的一些tombstone的情況:

1.無效的函數指針:指針為NULL或者已經被重新賦值

2.strlen崩潰:導致不完全的棧信息,棧被破壞
3.FILE操作:因為stdio並非線程安全的,多線程操作時,容易出現異常。

閱讀全文

與tombstoneandroid相關的資料

熱點內容
安卓游戲充錢充錯帳號怎麼辦 瀏覽:201
有什麼是綁定手機號的app 瀏覽:496
phpredis事務 瀏覽:935
陰陽師pad怎麼登錄安卓賬號 瀏覽:734
bitlocker加密後讀取不了 瀏覽:176
演算法設計是指流程圖嗎 瀏覽:168
javaboot如何防止反編譯 瀏覽:118
python復合數據結構視頻 瀏覽:146
培訓學校需要用什麼雲伺服器 瀏覽:721
衛星鍋加密卡那裡收購 瀏覽:58
小米工具文件夾選項在哪裡 瀏覽:55
md5磁碟加密 瀏覽:642
單片機x地址 瀏覽:208
回車鍵失靈運行命令如何使用 瀏覽:984
電腦一鍵解壓縮的軟體 瀏覽:171
怎麼關閉手機通訊錄對外app 瀏覽:370
我的世界如何強行進入一個滿人的伺服器 瀏覽:653
什麼app可以查詢會考成績 瀏覽:389
程序員能創造的價值 瀏覽:261
伺服器上的redis是什麼意思 瀏覽:381