android 使用開源工具ChkBugReport分析Bugreport

來源:互聯網
上載者:User

原文:http://www.androidlearner.net/using-chkbugreport-analysis-bugreport.html

一、ChkBugReport介紹
ChkBugReport是一個開源工具,它可以把你得到的bugreprot解析成適合閱讀的html檔案。匯出的html檔案包含了根據bugreport資料得出的圖表和分析結論。

它的源碼中用到了以下開源類庫: jQuery ,jsTree jQuery plugin , tablednd jQuery plugin , tablesorter jQuery plugin ,js-hotkeys, jquery-cookie 。學習輸出報告文檔型html可以參考源碼。
 
目前ChkBugReport可以從bugreport資料中抽取出如下資訊:
      1、Stacktraces   ChkBugReport可以從bugreport中解析出輸出bugreport的最後時刻、導致ANR時刻甚至更多時刻的堆棧資訊。在例子中你可以看到進程的優先順序和策略都已標示出來,堆棧中耗時的部分顏色是黑紅,一些違反Strict Mode的部分(比如主線程中使用資料庫)顏色標記為亮紅。如果這個線程死結,在報告的Errors將會出現。
       2、Logs   這部分是對system、main和kernel日誌的分析,在這裡你可以看到每個進程記憶體使用量圖、那個程式產生的log最多、Activity的啟動耗時、資料庫操作耗時統計、對象被鎖定時間、AIDL調用時間、Activity和Service的生命週期及其在記憶體中使用頻率等等,詳見
      3、Packages    ChkBugReport解析bugreport中儲存的packages.xml並展示一系列的packages、user ids和 permissions。參見
      4、Processes    操作app過程中產生的系統事件日誌、記憶體使用量資訊等等,參見
      5、Battery statistics   電池使用統計資訊,參見
      6、CPU Frequency statistics   CPU頻率統計資訊,參見
      7、Raw data  被分割成小段的未經處理資料

同時ChkBugReport也可以檢測到(潛在的)錯誤,這些錯誤在輸出的報告Errors部分中可以找到。你也可以在輸出報告的stacktrace中找到死結或一些違反Strict Mode的行為。

二、ChkBugReport使用

使用很簡單:

1 java -jar $HOME/Downloads/chkbugreport.jar $HOME/tmp/bugreport.txt

你也可以把chkbugreport.jar加到path下,然後這樣使用

1 chkbugreport thebugreport.txt

該工具將根據你的bugreport資料輸出一個分析結果目錄bugreport_out。

你可以使用如下命令取得bugreport:

1 adb shell bugreport > bugreport.txt

當然你可以使用ChkBugReport分析bugreport的部分資料比如/data/anr/traces.txt

1  chkbugreport -sl:the_system_log.txt -sa:traces.txt dummy

這將輸出分析結果到dummy_out。
你甚至可以使用ChkBugReport分析traceview產生的資料

1 chkbugreport -t something.prof

Prof資料產生方法可以參考以下方法:
1、可以使用eclipse外掛程式traceview產生
2、也可以按如下步驟:
    a.用adb shell ps列出所有進程並找出你想要trace的進程的PID
    b.執行adb shell am profile PID start /data/profile.dat,開始分析
    c.操作你的app
    d.執行adb shell am profile PID stop ,停止分析
    e.匯出資料並清除臨時檔案:adb pull /data/profile.dat   adb shell rm /data/profile.dat
    f.使用ChkBugReport進行分析 chkbugreport -t profile.dat

chkbugreport的常見參數如下:

chkbugreport常用參數

其他參數(較少使用):

chkbugreport不常用參數

 三、相關參考
1、開源工具ChkBugReport介紹 
2、ChkBugReport源碼 
3、ChkBugReport最新jar包下載電梯  
4、使用ChkBugReport輸出的報告例子
     a.進程死結的簡單例子  
     b.兩個進程相互調用對方的AIDL導致阻塞的死結例子                                                                    
     c.這個例子結合了上面兩例子(由於一進程調用AIDL阻塞造成另一線程死結)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.