天天看點

android tombstone log分析

今天和大家一起聊聊android 中出現的 Tombstone問題,近期在定制pad 上分析裝置機率性重新開機,導出bugreport日志後,除了看到anr log外,同級目錄下還看到了tombstones

android tombstone log分析
android tombstone log分析

并且對比以往日志,發現都生産了大量tombstone...,于是決定一探究竟,或許問題和它有關呢 

tombstone概念

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

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

分析tombstone原因

下面是我遇到的tombstone情況

pid與tid 相同,問題出在主線程
android tombstone log分析
pid與tid 不同,問題出在子線程
android tombstone log分析

 signal 信号量分析

信号機制是程序之間互相傳遞消息的一種方法,常見的型号種類如下:

android tombstone log分析

問題總結

以上兩種情況是我遇到的,pid 和tid相同的情況,根據日志分析和對比前後複現問題的tombstone,發現均為三方應用或内部應用在某種場景下誘發Native Crash 

可以根據程序号跟蹤到相應位置,(真正找到問題根源可能麻煩些,大體是這個路子);

pid 和tid不同的情況,分析起來有點無從下手,但是前前後後對比日志,發現這種情況程序均為系統服務程序pid: 467, tid: 806, name: HwBinder:467_3  >>>/vendor/bin/hw/android.hardware.audio.service.mediatek <<<

隻能根據signal 來找到比較完整的調用棧以及調用底層編碼邏輯...

android tombstone log分析

就簡單寫到這裡了,歡迎大家交流補充,如有不對,敬請糾正!

參考連結

Android Tombstone crash定位分析

https://cloud.tencent.com/developer/article/1969660

Android開發太難了,Native Crash的一切!

android跨程序通信——signal 

https://www.jianshu.com/p/73c33648ffc8

signal 6 (SIGABRT) log分析

https://blog.csdn.net/weixin_29172201/article/details/117613032

繼續閱讀