关于Android应用的Log检查

来源:互联网 发布:淘宝css 订购 编辑:程序博客网 时间:2024/05/21 07:02

Android应用开发中总是少不了Log的辅助,调试环境下Logcat很好地展现了各种事件,很容易就能得到想要的信息;

另外,自己在程序中加入的Thread.UncaughtExceptionHandler能更加全面地抓到一些Crash的log,大大提升了调试定位速度。

但是,如果一个应用已经发布,并没有打开调试选项时怎么办?也就是说,某些情况下是看不到Log的,比如,用DDMS连上Android手机,你会发现并不是所有的应用都是可见的;再举个例子,在使用的过程中,突然出现了一个Crash,但是Log又没有打开,这时该怎样进行检查?

基本上,有两个途径是值得花时间去检查一下的:

1、/data/system/dropbox 下的Log文件,通常来说,Monkey跑出来的Crash会在这里生成文件;检查的时候比对一下事件发生的时间和Log文件生成的时间,基本上就能找到相对应的Crash Log了;提一句:文件名 ***_wtf@1395365681030.txt,其中的“wtf”指“what a terrible failure”,字面意思;

2、/data/log 下的dumpstate_app_anr/error/native.txt.gz文件,顾名思义,记录了应用的anr/error/native的问题,基本上JAVA端发生Crash时,会在error log中有记录的,将此文件用gzip解压之后就可以进行检查了,比如下面这段Log:

03-24 12:12:48.555  2941  3157 I am_resume_activity: [0,1144726280,5,com.example.test/SetActivity]
03-24 12:12:48.565  7741  7741 I am_on_resume_called: [0,com.example.test/SetActivity]
03-24 12:12:48.770  2941  2951 I power_partial_wake_state: [0,ActivityManager-Launch]
03-24 12:12:48.770  2941  2951 I am_destroy_activity: [0,1154407552,5,com.example.test/TestActivity,finish-imm]
03-24 12:12:54.230  2941  3719 I am_finish_activity: [0,1144726280,5,com.example.test/SetActivity,app-request]
03-24 12:12:54.285  2941  3719 I am_pause_activity: [0,1144726280,com.example.test/SetActivity]
03-24 12:12:54.285  2941  3719 I power_partial_wake_state: [1,ActivityManager-Launch]
03-24 12:12:54.290  7741  7741 I am_on_paused_called: [0,com.example.test/SetActivity]
03-24 12:12:54.295  2941  3157 I am_resume_activity: [0,1112892752,5,com.example.test/MainActivity]
03-24 12:12:54.340  7741  7741 I am_on_resume_called: [0,com.example.test/MainActivity]
03-24 12:12:54.460  2941  3719 I power_partial_wake_state: [0,ActivityManager-Launch]
03-24 12:12:54.460  2941  3719 I am_destroy_activity: [0,1144726280,5,com.example.test/SetActivity,finish-imm]
03-24 12:12:55.415  2941  3068 I power_partial_wake_state: [1,AlarmManager]
03-24 12:12:55.420  2941  3023 I power_partial_wake_state: [0,AlarmManager]
03-24 12:12:56.045  2941  3718 I am_crash: [7741,0,com.example.test,11058244,java.lang.IllegalArgumentException,Cannot draw recycled bitmaps,GLES20Canvas.java,789]
03-24 12:12:56.045  2941  3718 I am_finish_activity: [0,1112892752,5,com.example.test/MainActivity,crashed]
03-24 12:12:56.115  2941  3718 I am_pause_activity: [0,1112892752,com.example.test/MainActivity]
03-24 12:12:56.120  2941  3718 I power_partial_wake_state: [1,ActivityManager-Launch]

非常明确地记录了各个Activity的声明周期(am_*** Log),并且确切指出Crash的原因:java.lang.IllegalArgumentException,Cannot draw recycled bitmaps,这样就可以做一个大致的推断,是在SetActivity被销毁后,进入MainActivity时显示了一个被销毁的Bitmap引起的Crash,那么只要聚焦到Bitmap显示的地方进行着重调查就可以了。


0 0
原创粉丝点击