2012-03-20 57 views
3

我想知道如何從Android設備上完成日誌(從我的應用程序初始化到任何崩潰或直到我的應用程序強制關閉)。在Android中捕獲完成日誌

我在這裏發佈的原因是我的應用程序崩潰了一些點,但是當我使用DDMS/Logcat日誌時,我的崩潰詳細信息被覆蓋了新的日誌。


我如何得到我的墜毀原因日誌..


特別希望捕捉本地代碼崩潰。

I/DEBUG (21835): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000004...


這是否會亞行logcat> crash.txt確保我,寫入文件將永遠發生?

+1

http://codeadapter.blogspot.in/ – 2014-10-16 22:18:05

回答

5

我想這個作品真正的好,不知道需要多少電池consume..If您的應用程序是在測試階段,您可以使用this..Before鬆開你必須刪除此代碼,併發布..

private void writeADBLogs(){ 
    BufferedWriter bufferedWriter = null; 

     try { 
     final File file = new File(sdcardPath); 
     bufferedWriter = new BufferedWriter(new FileWriter(file,true)); 
     Process process = Runtime.getRuntime().exec("logcat -d"); 
     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); 

     String oneLine; 
      while ((oneLine= bufferedReader.readLine()) != null) { 
       bufferedWriter.write(oneLine); 
       bufferedWriter.newLine(); 
      } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
0

安裝aLogCat應用程序,那麼如果你的應用程序崩潰,啓動它。使用過濾器(從菜單)縮小與應用程序相關的數據,並最終將其保存或通過郵件從設備發送給您。但它不會有太大的魔力 - 如果日誌從設備上物理消失,它不會向DDMS發送更多的信息。但是,如果您的用戶報告崩潰,這非常有用。

+0

tanZ ..我知道alogcat應用程序..但缺點是它不會捕獲任何本機代碼崩潰的詳細信息即I/DEBUG(21835):信號11(SIGSEGV) ,代碼1(SEGV_MAPERR),故障地址00000004 – NitZRobotKoder 2012-03-20 13:47:36

0

假設您可以訪問該設備:

  1. 掛鉤設備到電腦。
  2. 運行DDMS,選擇設備,然後進入文件瀏覽器選項卡。
  3. 查找LogCat中引用的文件,然後單擊頂部附近的從設備拉取按鈕。
0

您應該使用獨特的Logtags作爲消息,以便您可以過濾貓。例如。 getPackageName()是一個不錯的候選人,它返回一個字符串。

在Eclipse中,您可以單擊綠色+爲LogCats View添加另一個Filer。在窗口中,您可以在「通過日誌標記」字段中重複標記。

而且似乎會自動有一個被稱爲「會話過濾」當我開始從Eclipse中我的應用程序的新選項卡 - 提供相關記錄,包括但不僅那些寫的程序員。

您還可以使用Android Developer Bridge直接從控制檯抓取日誌。 adb logcat是您正在查找的命令,根據人的說法,也有適用的相同過濾器設置。雖然我無法找出語法:)

+0

yoshi logcat有一些緩衝區,他會寫過舊的日誌..如何過來.. – NitZRobotKoder 2012-03-20 13:58:39

2

Android的日誌將被保存,只有當你的應用程序調試=在清單真(即當你在調試模式)。

Documentation如果你想日誌,那麼你可以實現Thread.setDefaultUncaughtExceptionHandler (Thread.UncaughtExceptionHandler handler)

這將被稱爲永遠當你的應用程序強制關閉,由於異常關閉日誌記錄和調試

因此,在這種情況下, 。

你要做的是將StackTrace以追加模式保存在一個文件中。

您也可以在調試模式下使用它。

LogCat是一個隊列,所以你會錯過你的日誌(舊的日誌將被自動丟棄)的變化。

我建議你實現setDefaultUncaughtExceptionHandler,這樣你就不會錯過任何異常日誌。在使用後還要注意刪除文件,否則文件會隨着時間變得非常大。

+0

Vivek本機代碼崩潰可以收集ie sigsegv分段錯誤 – NitZRobotKoder 2012-03-20 14:03:27

+0

我認爲本機崩潰代碼將是處理程序。因爲最終這個異常將被拋到Java。 – 2012-03-20 14:25:05

0

您可以在您的應用程序中使用acra。它可以幫助您在gdoc帳戶中獲取崩潰報告,還可以配置它以獲取崩潰報告的電子郵件。一旦您的應用程序啓用,它也可以幫助您獲得崩潰報告。 http://code.google.com/p/acra/