手機(jī)功耗續(xù)航分析利器 ChkBugReport

和你一起終身學(xué)習(xí),這里是程序員Android
經(jīng)典好文推薦,通過(guò)閱讀本文,您將收獲以下知識(shí)點(diǎn):
一、ChkBugReport 概述
二、ChkBugReport 獲取方法
三、ChkBugReport 使用方法
四、ChkBugReport 使用詳細(xì)說(shuō)明
一、ChkBugReport 概述
ChkBugReport 工具的目的是分析處理手機(jī)上生成的bugreport,并且為開(kāi)發(fā)者提取盡可能多的有用數(shù)據(jù)。
ChkBugReport 解析 bugreport 后會(huì)生成一個(gè)bugreport_out文件。然后我們通過(guò)點(diǎn)擊Bugreport 生成的解析索引 index.html既可以查看解析的內(nèi)容。

ChkBugReport 解析 bugreport 后會(huì)生成一個(gè)bugreport_out文件

Bugreport 生成的解析索引
二、ChkBugReport 獲取方法
1. github上源代碼:
git clone git://github.com/sonyxperiadev/ChkBugReport.git
2. 預(yù)編譯的二進(jìn)制文件:
http://sonyxperiadev.github.com/ChkBugReport/download/chkbugreport(啟動(dòng)器shell腳本)
http://sonyxperiadev.github.com/ChkBugReport/download/chkbugreport-0.5-215.jar(應(yīng)用程序本身)
注意:
預(yù)編譯的二進(jìn)制文件可能比源代碼更舊,因此要獲取最新版本,請(qǐng)改用源代碼。
3. 源代碼打包最新Jar 包方法
源代碼打包最新 chkbugreport-0.5-216.jar 包方法如下:
// 下載 ChkBugReport 源碼
wangjie@wangjie:/wangjie/ChkBugReport$git clone git://github.com/sonyxperiadev/ChkBugReport.git
... ... //成功下載 ChkBugReport 源碼
wangjie@wangjie:/wangjie/ChkBugReport/ChkBugReport/core$ ./createjar.sh
// 如果 linux 服務(wù)器沒(méi)有安裝 ant ,請(qǐng)安裝 sudo apt install ant
Command 'ant' not found, but can be installed with:
sudo apt install ant
wangjie@wangjie:/wangjie/ChkBugReport/ChkBugReport/core$ sudo apt install ant
Reading package lists... Done
Building dependency tree
... ...
//成功安裝 ant
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Setting up ant-optional (1.10.5-3~18.04) ...
wangjie@wangjie:/wangjie/ChkBugReport/ChkBugReport/core$ ./createjar.sh
Buildfile: /wangjie/ChkBugReport/ChkBugReport/core/createjar.xml
create_run_jar:
[echo] Cleanup up the bin dir...
[mkdir] Created dir: /wangjie/ChkBugReport/ChkBugReport/core/bin
... ...
[echo] Done!
//成功打包 最新版本的jar包
BUILD SUCCESSFUL
Total time: 3 seconds
wangjie@wangjie:/wangjie/ChkBugReport/ChkBugReport/core$ ls
bin chkbugreport chkbugreport-0.5-216.jar ... ...
三、ChkBugReport 使用方法
ChkBugReport 沒(méi)有安裝程序,要安裝它,您只需下載最新的chkbugreport-.jar(請(qǐng)參閱步驟二)或從源代碼中自行*構(gòu)建。注意:“ 代碼/下載”部分已由GitHub刪除。
1.抓取Bugreport
首先我們要有bugreport,抓取Bugreport的命令: adb bugreport bugreport.zip
抓取bugreport 方法舉例如下:
C:\Users\Administrator\ChkBugReport\1>adb bugreport bugreport.zip
[ 22%] generating bugreport.zip
data/user_de/0/com.android.shell/files/bugreports/bugreport-T5542-PKQ1.190601.001-2019-12-04-17-04-52.zip: 1 file pulled. 3.8 MB/s (1685410 bytes in 0.420s)
C:\Users\Administrator\ChkBugReport\1>
2.解析Bugreport
解析 Bugreport,首先我們將抓取的 bugreport.zip,解壓抽取出 bugreport.txt,然后將chkbugreport.jar bugreport.txt 兩個(gè)文件放在同一個(gè)文件夾下,然后執(zhí)行java -jar chkbugreport.jar bugreport.txt。
解析bugreport 方法使用舉例如下:
C:\Users\Administrator\ChkBugReport\1>dir
... ...
2019/11/24 15:36 16,283,036 bugreport-T5542-PKQ1.190601.001-2019-11-24-15-34-17.txt
2019/12/03 10:51 2,494,186 bugreport-T5542-PKQ1.190601.001-2019-11-24-15-34-17.zip
2019/12/04 16:36 948,643 chkbugreport-0.5-216.jar
... ...
C:\Users\Administrator\ChkBugReport\1>java -jar chkbugreport-0.5-216.jar bugreport-T5542-PKQ1.190601.001-2019-11-24-15-34-17.txt
... ...
Writing chapter: eventlog_10137.html...
Writing chapter: eventlog_10128.html...
Writing frameset...
DONE!
C:\Users\Administrator\ChkBugReport\1>
3.查看index.html
解析完成后,我們點(diǎn)擊解析文件夾中的index文件,進(jìn)行查看分析。
解析生成的主要包含:Errors 、Memory info、 System log、 kernel log、 Event log 、Battery info 、AlarmManager 、ActivityManager、 Process等

通過(guò)瀏覽器查看 解析生成的index文件
四、ChkBugReport 使用詳細(xì)說(shuō)明
1.ChkBugReport 快速使用指南
只需運(yùn)行將bugreport作為參數(shù)傳遞的工具即可。
我使用包裝器腳本,將這兩個(gè)腳本(包裝器腳本“ chkbugreport ”和jar文件“ chkbugreport.jar”)復(fù)制到$ HOME / bin /,因此可以在計(jì)算機(jī)上的任何位置使用它:
$ chkbugreport thebugreport.txt
但是當(dāng)然您也可以使用jar文件:
$ java -jar path/to/chkbugreport.jar thebugreport.txt
Bugreport 可以壓縮(如.gz或zip文件形式)或純文本文件。該工具將創(chuàng)建一個(gè)文件夾(帶有輸入文件名和后綴“ _out”后綴),并在該文件夾下創(chuàng)建所有文件(以及一些子文件夾)。您應(yīng)該從該文件夾中打開(kāi)“ index.html”文件(強(qiáng)烈建議使用Chrome或Firefox)。
如果沒(méi)有Bugreport ,請(qǐng)創(chuàng)建一個(gè):
$ adb bugreport > bugreport.txt
同樣,如果您只有一部分Bugreport (例如日志或堆棧跟蹤),則仍然可以使用此工具。假設(shè)您有一個(gè)系統(tǒng)日志和一個(gè)包含進(jìn)程堆棧跟蹤的文件(例如,取自/data/anr/traces.txt),則可以使用如下工具:
$ chkbugreport -sl:the_system_log.txt -sa:traces.txt dummy
這將在名為“ dummy_out”的文件夾中生成輸出(假定“ dummy”是不存在的Bugreport 的名稱(chēng))。
請(qǐng)注意,chkbugreport具有附加功能:它可以處理為traceview創(chuàng)建的概要分析數(shù)據(jù)。結(jié)果將類(lèi)似:一個(gè)包含一堆html和圖像文件的文件夾。要將其與跟蹤文件一起使用,請(qǐng)?jiān)诿钚猩咸砑印?-t”選項(xiàng):
$ chkbugreport -t something.prof
您可以像下面這樣生成分析數(shù)據(jù):
使用“ adb shell ps”列出所有進(jìn)程并找到要跟蹤的進(jìn)程的PID
執(zhí)行“ adb shell am profile PID start /data/profile.dat”以開(kāi)始分析(將PID替換為進(jìn)程ID號(hào))
做測(cè)試
執(zhí)行“ adb shell am profile PID停止”以停止分析(將PID替換為進(jìn)程ID號(hào))
使用“ adb pull /data/profile.dat”拉出文件并將其從手機(jī)中刪除(以節(jié)省寶貴的磁盤(pán)空間):“ adb shell rm /data/profile.dat”
創(chuàng)建報(bào)告“ chkbugreport -t profile.dat”
2. ChkBugReport 命令行參數(shù)說(shuō)明
要獲取完整的參數(shù)列表,只需運(yùn)行不帶任何參數(shù)的工具即可。到目前為止,已處理以下參數(shù):
-ds:file-將文件用作dumsys輸出(與-pb幾乎相同)
-el:file-使用文件作為事件日志
-ft:file-將文件用作ftrace轉(zhuǎn)儲(chǔ)
-ml:file-使用文件作為主日志
-mo:file-解析猴子輸出并從中提取堆棧跟蹤
-pb:file-加載部分Bugreport (例如dumpsys的輸出)
-pk:file-加載packages.xml文件
-ps:file-將文件用作“進(jìn)程”部分
-pt:file-將文件用作“進(jìn)程和線程”部分
-sa:file-將文件用作“最后一個(gè)vm跟蹤”部分
-sl:file-使用文件作為系統(tǒng)日志
-sn:file-將文件用作“剛才的vm跟蹤”部分
-sd:dir-從目錄中加載文件作為部分Bugreport
-uh:file-加載Usage-history.xml文件
附加選項(xiàng)(較少使用):
--browser-完成后啟動(dòng)瀏覽器
--gui-如果未提供文件名,則啟動(dòng)圖形用戶界面
--silent-抑制除致命錯(cuò)誤以外的所有輸出
--limit-限制輸入文件的大?。J(rèn))(例如),如果使用-sl選項(xiàng),則日志文件如果太長(zhǎng)會(huì)被截?cái)啵ㄒ驗(yàn)樯傻膆tml會(huì)更大)。此選項(xiàng)(以及--no-limit)必須在其他選項(xiàng)之前才能生效。
--no-limit-不限制輸入文件的大小
注意:圖形用戶界面仍處于試驗(yàn)階段,非常基礎(chǔ)。
3.ChkBugReport 使用方法小tip
通過(guò)簡(jiǎn)單地添加--browser參數(shù),chkbugreport將嘗試在默認(rèn)瀏覽器中打開(kāi)結(jié)果。您可以通過(guò)將openBrowser = true添加到?/ .chkbugreport(如果需要,創(chuàng)建文件)來(lái)將其設(shè)置為默認(rèn)行為。
文件格式
ChkBugReport嘗試在文件格式方面盡可能地靈活:
它應(yīng)該支持任何行尾(甚至是瘋狂的行尾,例如0x0d 0x0d)
它應(yīng)該處理壓縮的Bugreport
它應(yīng)該處理壓縮的Bugreport (它將掃描zip以查找第一個(gè)看起來(lái)像Bugreport 的文件)
Android版
請(qǐng)注意,Bugreport 的格式隨每個(gè)Android版本而變化,因此某些版本可能不完全受支持。另外,內(nèi)容(即保存哪些數(shù)據(jù))因電話而異,因此可能會(huì)丟失某些信息。
數(shù)據(jù)表格排序
一些表支持排序:如果表前有這樣的提示,則可以單擊列以按字母順序?qū)?shù)據(jù)進(jìn)行排序。您可以按住Shift鍵對(duì)多列進(jìn)行排序。
其他一些表可能支持重新排序(表之前會(huì)有提示/注釋?zhuān)?,在這種情況下,您可以拖動(dòng)行并將其上下移動(dòng)。
某些表格的數(shù)據(jù)也將導(dǎo)出為CSV(逗號(hào)分隔值)文件,在這種情況下,您可以在excel或Open Office中打開(kāi)它們,并進(jìn)行自己的統(tǒng)計(jì)/過(guò)濾/排序/等操作。
如果ChkBugReport可以在類(lèi)路徑中找到sqlite jdbc驅(qū)動(dòng)程序(例如sqlitejdbc-v056.jar),那么某些表的數(shù)據(jù)(以及一些其他數(shù)據(jù),例如stacktraces)也將被導(dǎo)入到新創(chuàng)建的SQLite數(shù)據(jù)庫(kù)中。
分析日志
您不需要完整的Bugreport 即可使用此工具。您可以從市場(chǎng)上下載記錄器應(yīng)用程序,該應(yīng)用程序?qū)⒊掷m(xù)將系統(tǒng)/主/事件日志保存在sdcard中。這樣,您可以獲取幾個(gè)小時(shí)的使用情況數(shù)據(jù)。
當(dāng)您要處理日志時(shí),請(qǐng)從sdcard中提取日志并執(zhí)行:
$ chkbugreport dummy --no-limit -sl:systemlog.txt -el:eventlog.txt
所述偽參數(shù)只用于產(chǎn)生一個(gè)輸出文件名
該--no極限告訴chkbugreport不trunkate日志文件。缺省情況下,chkbugreport會(huì)中繼大于1MB的日志文件,以避免生成過(guò)多的報(bào)告(或耗盡內(nèi)存)。如果崩潰/異常位于日志末尾,有時(shí)這也是您想要的。但是,在這種情況下,我們要處理整個(gè)日志文件。
該-sl:文件參數(shù)將加載系統(tǒng)/主日志。如果主日志位于單獨(dú)的文件中,則可以使用-ml:file加載它
該-el:文件參數(shù)將加載事件日志
當(dāng)然,由于缺少許多信息(例如,進(jìn)程的名稱(chēng)),因此生成的報(bào)告將受到更大的限制,因此chkbugreport會(huì)嘗試猜測(cè)它可以做什么。但是,即使僅從日志中也可以提取許多信息,例如電池使用情況
至此,本篇已結(jié)束。轉(zhuǎn)載網(wǎng)絡(luò)的文章,小編覺(jué)得很優(yōu)秀,歡迎點(diǎn)擊閱讀原文,支持原創(chuàng)作者,如有侵權(quán),懇請(qǐng)聯(lián)系小編刪除。同時(shí)感謝您的閱讀,期待您的關(guān)注。
點(diǎn)個(gè)在看,方便您使用時(shí)快速查找!
