Android程序crash log解析

2021-08-29 07:31:42 字數 905 閱讀 8950

android程序crash會導致比較嚴重的問題, 輕則程序相關功能無法使用, 重則導致系統crash。

抓取對應的log和tombstone,會發現crash時列印的是一串位址棧,而不是對應的函式呼叫棧。

要解決問題,首要問題是把位址棧解析為對應的函式呼叫棧。

1. addr2line

cd prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/

[addr2line or ./aarch64-linux-android-addr2line] -f -e [對應的符號表/二進位制程式/so檔案] [log中位址]

需要注意的是不能直接使用out/target/product/***/system/lib/xx.so,會出現執行上面命令之後顯示

??

??:0

因為這個動態庫是最後要打包到最後生成的system.ing中的,所以它不包含除錯符號資訊.

而要使用out/target/product/***/symbols/system/lib/xx.so

2. stack

stack是/development/scripts/下的python指令碼,會呼叫其他一些py指令碼,最終呼叫addr2line。

在對應的**目錄下執行「stack」。

如:~/linux/android: stack tombstone_log/logcat_log [> file]

stack會自動使用對應的工具和編譯出的符號表去解析log。

如果無法執行stack, 需要先配置下環境:

source build/envsetup.sh

lunch [platform]

stack ...

Android結束程序

1 自己結束自己 this.finish 2 killprocess int pid 例子 system.exit 0 該方法只能用於結束當前程序自身,個人覺得在程式遇到異常,無法正常執行時,可以通過這個方法強制退出。需要注意的是,這兩個方法,會導致程序非正常退出,就是說,程序退出時不會去執行onp...

Android程序管理

以windows習慣和思想用android人,總要習慣性的裝個taskkiller或者高階任務管理器,時不時的就看看還剩多少ram。下面就來講講 android程序運作機制以及為何無需程序管理器。在 android裡,程序和程式是兩回事,程式可以一直保留在系統裡,但是沒有任何程序在後台 執行 也不消...

android 殺死程序

android中,雖然有很多方法 api或者shell命令 殺死後台 service 但是仍然有很多程式幾秒內再次啟動,導致無法真正的殺死。這裡主要著重介紹如何像 360 一樣殺死android後台服務,而不會再次啟動。這三種方法都可以 殺死 後台應用程式,但是都會自啟動.第一種只能殺死自己,用於自...