ChkBugReport是一個開源工具,它可以把你得到的bugreprot解析成適合閱讀的html文件。導(dǎo)出的html文件包含了根據(jù)bugreport數(shù)據(jù)得出的圖表和分析結(jié)論,。
它用到了以下開源類庫:
目前ChkBugReport可以從bugreport數(shù)據(jù)中抽取出如下信息:
-
Stacktraces ChkBugReport可以從bugreport中解析出輸出bugreport的最后時刻、導(dǎo)致ANR時刻甚至更多時刻的堆棧信息,。在 例子中你可以看到進(jìn)程的優(yōu)先級和策略都已標(biāo)示出來,,堆棧中耗時的部分顏色是黑紅,一些違反Strict
Mode的部分(比如主線程中使用數(shù)據(jù)庫)顏色標(biāo)記為亮紅,。如果這個線程死鎖,,在報告的Errors將會出現(xiàn)。
-
Logs 這部分是對system,、main和kernel日志的分析,,在這里你可以看到每個進(jìn)程內(nèi)存使用圖、那個程序產(chǎn)生的log最多,、Activity的啟動耗時,、數(shù)據(jù)庫操作耗時統(tǒng)計(jì)、對象被鎖定時間,、AIDL調(diào)用時間,、Activity和Service的生命周期及其在內(nèi)存中使用頻率等等,, 詳見
-
Packages ChkBugReport解析bugreport中存儲的packages.xml并展示一系列的packages、user ids和 permissions,。參加 例子
-
Processes 操作app過程中產(chǎn)生的系統(tǒng)事件日志,、內(nèi)存使用信息等等, 參見
-
Battery statistics 電池使用統(tǒng)計(jì)信息,, 參見
-
CPU Frequency statistics CPU頻率統(tǒng)計(jì)信息,, 參見
-
Raw data 被分割成小段的原始數(shù)據(jù)
等等同時ChkBugReport也可以檢測到(潛在的)錯誤,這些錯誤在輸出的報告Errors中可以找到,。你也可以在輸出報告的stacktrace中找到死鎖或一些違反Strict Mode的行為,。
1,、分析Bugreport文件
java -jar $HOME/Downloads/chkbugreport.jar $HOME/tmp/bugreport.txt
你也可以把chkbugreport.jar加到path下,,然后這樣使用,這將根據(jù)你的bugreport數(shù)據(jù)輸出一個分析結(jié)果目錄bugreport_out。
chkbugreport thebugreport.txt
你可以使用如下命令取得bugreport:
adb bugreport > bugreport.txt
2,、分析BugReport的部分?jǐn)?shù)據(jù)
當(dāng)然你可以使用ChkBugReport分析bugreport的部分?jǐn)?shù)據(jù)比如/data/anr/traces.txt
chkbugreport -sl:the_system_log.txt -sa:traces.txt dummy
這將輸出分析結(jié)果到dummy_out,。
3、分析profile文件
你甚至可以使用ChkBugReport分析traceview生成的數(shù)據(jù)
chkbugreport -t something.prof
附prof數(shù)據(jù)生成方法:
-
可以使用eclipse插件traceview生成
-
也可以按如下步驟
-
用adb shell ps列出所有進(jìn)程并找出你想要trace的進(jìn)程的PID
-
執(zhí)行adb shell am profile PID start /data/profile.dat,,開始分析
-
操作你的app
-
執(zhí)行adb shell am profile PID stop ,,停止分析
-
導(dǎo)出數(shù)據(jù)并清除臨時文件:adb pull /data/profile.dat adb shell rm /data/profile.dat
-
使用ChkBugReport進(jìn)行分析 chkbugreport -t profile.dat
4、分析monkey文件
chkbugreport -t something.prof
java -jar chkbugreport-0.4-164.jar output_file_name -mo:monkey.log
chkbugreport的常見參數(shù)如下:
參數(shù) |
說明 |
-ds:file |
分析dumsys輸出(類似-pb) |
-el:file |
分析event日志 |
-ft:file |
分析ftrace dump |
-ml:file |
分析main日志 |
-mo:file |
分析monkey輸出并提取堆棧信息 |
-pb:file |
加載bugreport部分?jǐn)?shù)據(jù)(例如dumpsys輸出的數(shù)據(jù)) |
-pk:file |
加載packages.xml |
-ps:file |
分析 “processes”部分 |
-pt:file |
分析”processes and threads”部分 |
-sa:file |
分析”vm traces at last anr”部分 |
-sl:file |
分析system日志 |
-sn:file |
分析”vm traces just now”部分 |
-sd:dir |
從指定目錄加載部分bugreports |
-uh:file |
加載usage-history.xml |
其他參數(shù)(較少使用):
不常用參數(shù) |
說明 |
–browser |
分析完后啟動瀏覽器查看結(jié)果報告 |
–gui |
不指定文件名則啟動圖形界面(開發(fā)中) |
–silent |
不輸出非嚴(yán)重錯誤信息 |
–limit |
限制要分析文件大小 |
–no-limit |
不限制分析文件大小 |
-
-
-
-
使用ChkBugReport輸出的報告參考例子
-
-
兩個進(jìn)程相互調(diào)用對方的AIDL導(dǎo)致阻塞的死鎖 例子
-
這個例子結(jié)合了上面兩 例子(由于一進(jìn)程調(diào)用AIDL阻塞造成另一線程死鎖)
|