Android crash 日志捕获

来源:互联网 发布:linux mv命令的功能 编辑:程序博客网 时间:2024/04/28 21:57

转载: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语句必须用分号(;)结尾

原创粉丝点击