Android crash 日誌捕獲

轉載:http://sdutdazzling.iteye.com/blog/1773566

        爲了對已發佈程序進行跟蹤,通常會對程序的行爲做一些記錄並上傳到server,一般會記錄用戶行爲已方便更好的發進設計流程和記錄程序crash日誌,以便在後續版本中改正程序的錯誤,看了些文章也做了幾個Demo,把自己的理解簡單寫一下。

 

1. 給線程設置一個自己的異常處理函數(Thread.setDefaultUncaughtExceptionHandler(MyHandler))。

這個方法原來的Java語言裏面就有,我原來以爲這個方法是改變當前線程的 exception handler,寫了一個程序測試了下,發現在一個新建的Thread裏面拋出一個異常也能被捕獲,表示它改變了整個虛擬機線程的exception handler。現在主流的處理方法是給APP創建一個 MyApplication extends Application,重寫基類的onCreate方法,並在此方法內對線程設置自己的handler,並在androidmanifest.xml文件中指定當前的app name爲自己寫的application類。示例代碼如下:

 

Java代碼  收藏代碼
  1. public class DfApplication extends Application  
  2. {  
  3. Thread.UncaughtExceptionHandler mDefaultHandler;   
  4.    
  5. public void onCreate()  
  6. {  
  7. super.onCreate();  
  8. System.out.println("my app create");  
  9. mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();  
  10. Thread.setDefaultUncaughtExceptionHandler(new MyHandler(this.getApplicationContext()));  
  11. }  
  12. }  
  13.    
  14.    
  15. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  16.     package="com.example.exceptionstudy"  
  17.     android:versionCode="1"  
  18.     android:versionName="1.0" >  
  19.    
  20.     <uses-sdk  
  21.         android:minSdkVersion="8"  
  22.         android:targetSdkVersion="15" />  
  23.    
  24.     <application  
  25.         android:icon="@drawable/ic_launcher"  
  26.         android:name="com.df.app.DfApplication"  
  27.         android:label="@string/app_name"  
  28.         android:theme="@style/AppTheme" >  
  29.         <activity  
  30.             android:name=".MainActivity"  
  31.             android:label="@string/title_activity_main" >  

 。。。。。。

當然這種方法不是必須的,因爲上面也說到了,無論在哪裏設置,都是對整個虛擬機的線程設置,也有不少人是在自己的Activity中進行此操作。不過建議還是放在application類中處理,從抽象上更好理解----這個設置是針對整個應用的。

 

2.利用ACRA(application crash report for android),是google的一個開源項目,引入它的包,可以將crash log發送到自己的google文檔,官方文檔有詳細說明。http://code.google.com/p/acra/

 

參考:http://www.eoeandroid.com/blog-23755-2661.html

 

順帶介紹下anr問題日誌:

anr日誌存在手機目錄:data/anr/traces.txt

可以用adb命令將文件copy到本地電腦目錄下:adb pull data/anr/traces.txt local目錄

 

adb shell命令操作手機數據庫

adb shell

1,進入到控制檯中,輸入adb shell,進入到命令模式的環境中

2,輸入:cd   /data/data/

3, 選擇你所在的數據庫文件,比如我的com.android.homework,   輸入命令:cd  com.android.homework

4,  可以使用ls -l 命令查看當前目錄中的文件

5,輸入: cd  databases 進入到數據庫文件中

6, ls -l  顯示你數據庫中你建立的數據庫

7, sqlite3   info.db   進入到你選擇的數據庫中

8, .tables   :查看你建的表

9, select * from  table_name;s   可以查看整個表的信息

10,  使用其他的SQL語句可以進一步對錶進行操作,注意SQL語句必須用分號(;)結尾

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章