1. 程式人生 > >安卓框架,談談出現tombstone時addrline的使用

安卓框架,談談出現tombstone時addrline的使用

backtrace:
#00 pc 0003a428 /system/lib/libc.so (tgkill+12)
#01 pc 000181e3 /system/lib/libc.so (pthread_kill+66)
#02 pc 00018deb /system/lib/libc.so (raise+10)
#03 pc 0001563f /system/lib/libc.so (__libc_android_abort+34)
#04 pc 00013c30 /system/lib/libc.so (abort+4)
#05 pc 002310fd /system/lib/libart.so (art::Runtime::Abort()+184)
#06 pc 0009f123 /system/lib/libart.so (art::LogMessage::~LogMessage()+2046)
#07 pc 00108a29 /system/lib/libart.so (art_heap_corruption(char const*)+140)
#08 pc 0010bb8d /system/lib/libart.so (mspace_bulk_free+772)
#09 pc 00145751 /system/lib/libart.so (art::gc::space::DlMallocSpace::FreeList(art::Thread*, unsigned int, art::mirror::Object**)+76)
#10 pc 00121a21 /system/lib/libart.so (art::gc::collector::MarkSweep::SweepArray(art::gc::accounting::AtomicStackart::mirror::Object*

, bool)+816)
#11 pc 0012148b /system/lib/libart.so (art::gc::collector::MarkSweep::ReclaimPhase()+230)
#12 pc 001262e9 /system/lib/libart.so (art::gc::collector::MarkSweep::RunPhases()+164)
#13 pc 0011b591 /system/lib/libart.so (art::gc::collector::GarbageCollector::Run(art::gc::GcCause, bool)+220)
#14 pc 0013de5b /system/lib/libart.so (art::gc::Heap::CollectGarbageInternal(art::gc::collector::GcType, art::gc::GcCause, bool)+2214)
#15 pc 0013efe7 /system/lib/libart.so (art::gc::Heap::ConcurrentGC(art::Thread
)+46)
#16 pc 0000015f /data/dalvik-cache/arm/[email protected]@boot.oat

使用addrline2解析backtrace
1.找到發生問題的so庫,如libc.so,把它放在android-5.1.1\prebuilts\gcc\linux-x86\aarch64\aarch64-linux-android-4.8\bin中
2.在linux伺服器上輸入命令
addr2line -C -e libc.so -f 0003a428
0003a428來自於#00 pc 0003a428 /system/lib/libc.so (tgkill+12)

一般情況下這樣使用是沒問題的,但是很多時候問題都發生在so庫即動態庫中就不能很好的打印出具體報錯的地方

,再加上出現tombstone時往往終端會重啟,導致tomgstone記錄的地址不能和重啟後的地址對應。

舉個例子,要測試復現該bug時要先儲存下環境
1.在終端的/system/lib 中找到發生問題的so庫,如libc.so,儲存在linux伺服器上的android-5.1.1\prebuilts\gcc\linux-x86\aarch64\aarch64-linux-android-4.8\bin
2.終端上使用ps 找出so庫的程序id,一般就是app的程序,如2467,然後cd/proc/2467
cat maps |grep libc.so
顯示如下內容 把第一行的地址儲存下來
f7439000-f749f000 r-xp 00000000 b3:0d 41034 /system/lib/libc.so
f74a0000-f74a3000 r–p 00066000 b3:0d 41034 /system/lib/libc.so
f74a3000-f74a6000 rw-p 00069000 b3:0d 41034 /system/lib/libc.so

發生tombston後取出日誌,確認下tombstone的地址是否在f7439000-f749f000之間,如果是則用tombstopn與f7439000差的絕對值value
輸入命令addr2line -C -e libc.so -f value

相關推薦

框架談談出現tombstoneaddrline的使用

backtrace: #00 pc 0003a428 /system/lib/libc.so (tgkill+12) #01 pc 000181e3 /system/lib/libc.so (pthread_kill+66) #02 pc 00018deb

框架分析解決專案中出現的anr

07-16 15:31:47.551 E/ActivityManager( 1775): Reason: Input dispatching timed out (Waiting because the focused window's input ch

框架分析專案中surfaceFlinger出現的bug ---queueBuffer: BufferQueue has been abandoned

播放視訊切換頁面後返回發現surfaceview黑屏了,錯誤日誌如下 E/BufferQueueProducer: queueBuffer: BufferQueue has been abandoned 看下日誌來源 //BufferQueueProduce

開發APP你會用到那些開源框架

UI層 圖片載入:用的Picasso,非常方便。 依賴注入:Butterknife ,小而全的依賴注入庫。之前使用過一段時間的 AndroidAnnotation ,功能非常完善,但一些特性上讓人難以接受。 資料層 Http/REST 請求:如果是嚴謹的

當activity處於不可見將立即消毀

有時候我們在安卓開發下,從A 介面(Activity) 跳轉到B介面(Activity),再從B介面(activity)時,希望將B介面銷燬,大多的選擇是在B介面startActivity時,呼叫finish();方法; 這樣固然會讓b介面的生命週期走向onDestory。

開發——用小米手機除錯報錯application installation failed

本人可以說是一個忠實米粉,陸陸續續換了許多小米的機器,平時在用真機除錯應用時,也遇到了一些與小米手機或miui本身有關的問題,這邊記錄一下。 1、application installation failed報錯: 這個問題是由於MIUI系統的miui優化功能導致的,具體

程式匯入或開啟編譯器出現錯誤:Project has no project.properties file! Edit the project properties

菜鳥的我今天發現一個問題並解決了,關於eclipseADT編譯器專案專案開啟報錯的,今天開啟編譯器專案一直報錯,重啟,clean 多次也沒用,problem裡面發現有“Project has no project.properties file! Edit the proj

解決SwipeRefreshLayout和RecyclerView結合重新整理與下拉衝突的問題

在開發過程中,我們經常會去實現一個列表顯示,並能進行下拉重新整理和上拉載入的功能,如果我們使用的原生控制元件, SwipeRefreshLayout進行下拉重新整理,RecyclerView進行列表展示的話,會發現在下拉的時候有一個問題。在你下拉的時候,可能就會觸發重新整理

常用比較有用的第三方框架

1、Picasso 優點 (1) 自帶統計監控功能 支援圖片快取使用的監控,包括快取命中率、已使用記憶體大小、節省的流量等。 (2) 支援優先順序處理 每次任務排程前會選擇優先順序高的任務,比如 App 頁面中 Banner 的優先順序高於 Icon 時就很適用。 (3) 支援延遲到圖片尺寸計算

【轉載】開發者在使用deepin15.4可能會遇到的問題

ln -s screen default deepin tin view valid pic 安卓開發者 本文轉載自:https://bbs.deepin.org/forum.php?mod=viewthread&tid=138244&extra= 1、在你

框架

depend .net tom facebook run iss 開源 join 多線程 韓夢飛沙 韓亞飛 [email protected]/* */ yue31313 han_meng_fei_sha 安卓 框架 ======== andro

挖掘寶藏EMUI會讓手機進入“量心定制”時代嗎?

EMUI如果把移動終端的發展歷程看做一部戲劇,那麽Android和iOS兩種操作系統生態之間的競爭一定是最精彩的一折。從市場占有率來看,2017年Android手機在全球售出的手機中占據了85.9%份額,其中自然包括了谷歌Pixel、華為這樣在硬件上和蘋果水平持平、甚至超越蘋果的品牌。在雙方之間,最大的爭議落

框架的目錄說明

組件 borde ctas sta sqli fig fix com dap 1、com.公司名.項目名.功能名 2、 com.公司名.項目名.base adapt 基礎ad

向SD卡儲存資料java.io.FileNotFoundException:(Permission denied)

最近在上Android課學習時,需要向SD卡中新建一個data.txt檔案 但現實無法向外圍裝置(SD卡)儲存資料。 在AndroidManifest.xml也加了以下許可權配置資訊 <uses-permission android:name="android.permis

框架

Volley 谷歌官方的非同步請求庫,支援OKHttp 不支援post大資料,不適合上傳檔案。適合資料小比較頻繁的網路請求。 Xutils 註解模組,網路模組,圖片載入模組,資料庫模組 Picasso 圖形快取庫,可以實現圖片下載和快取功能 PullToRefresh&nbs

QQ微信分享URL後面拼接引數

      開發中遇到一個需求,就是分享出去一個url,但這個url頁面展示資料需要APP帶過去引數,所有就需要在url後面拼上引數,但是qq,微信的分享文件上是不支援url拼接引數的,(QQShare: shareToQQ, targetUrl is empty or

匯入專案主題報錯遇上的一個坑--筆記

style name=”AppBaseTheme” parent=”Theme.AppCompat.Light”  改為  style name=”AppBaseTheme” parent=”android:Theme.Light” 同理,將  styl

MAC安裝了mumu模擬器但無法檢測到該模擬器

1.adb   devices  看不到模擬器 2.adb connect 127.0.0.1:5555 3.adb kill-server    沒有報錯,即成功 4. adb start-server    5. adb de

Kotlin 開發PopWindow 內部按鈕出現空指標錯誤!解決方法

錯誤:按鈕事件監聽發生異常 Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener 原因是po

判斷ios和系統pc和手機端

判斷ios和安卓系統 var u = navigator.userAgent, app = navigator.appVersion; var isAndroid = u.indexOf(