如何利用eclipse和一些调试技巧来找到程序错误所在和从模拟器里面导出文件或者导入文件呢
1 DDMS使用
想把DDMS 里面的LogCat添加的这个
的这个部分
可以这样:
Window----->show view 里面找到相应的LogCat添加进去
有几个地方比较重要
(1) 就是LogCat,,就是显示手机或模拟器运行显示出来的日志。日志非常多,有这么几个级别,
D---->debug W----->warn E----->error 另外两个是 V----->verbose (消息列表) I----->info
点击E,会出现错误级别的信息的一个列表
点击W ,会显示W和E级别的信息
点击I,会显示I和W和E的信息
点击D,会显示D,I,W,E的信息
点击V 会显示全部信息
当看全部信息的时候,会非常的不方便,可以加上一些过滤器,所谓的过滤器就是从调试信息中过滤出我们想要的东西。点击那个+号,即create Filter 添加过滤器
Filter Name 可以自己起,
by Log Tag 就是你想显示内容的标志,比如你想要的是输出信息,标志是system.out
by pid这个不用写
最后一个级别总共有4个,如果写none 会全部显示出来
这是一个方法,比如你想判断一个函数运行没有,你可以在这个函数里面输入一下语句,比如 system.out.println(“bakg------------------------”);然后在你的那个过滤器里面看有没有这个输出语句
(2)File Explorer 文件浏览器
在这个里面的这里从(模拟器或手机)虚拟机里面放入文件,或者从(模拟器或手机虚拟机里面取出文件,比如MP3,需要放入一些歌曲文件,可以从这里放文件或取文件
2 常见程序调试方法
(1)如果运行程序出错了,出现异常,可以去DDMS里面去查看LogCat里面,点击E,会出现错误信息,去查看错误信息中自己写的包,通常其他错误都是因为它而产生的,比如这个
06-13 07:51:43.643: ERROR/AndroidRuntime(2238): java.lang.NullPointerException
06-13 07:51:43.643: ERROR/AndroidRuntime(2238): at lysqlite3.SQLiteActivity$CreateListener.onClick(SQLiteActivity.java:43)
06-13 07:51:43.643: ERROR/AndroidRuntime(2238): at android.view.View.performClick(View.java:2344)
06-13 07:51:43.643: ERROR/AndroidRuntime(2238): at android.view.View.onTouchEvent(View.java:4133)
06-13 07:51:43.643: ERROR/AndroidRuntime(2238): at android.widget.TextView.onTouchEvent(TextView.java:6510)
06-13 07:51:43.643: ERROR/AndroidRuntime(2238): at android.view.View.dispatchTouchEvent(View.java:3672)
06-13 07:51:43.643: ERROR/AndroidRuntime(2238): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)
06-13 07:51:43.643: ERROR/AndroidRuntime(2238): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)
06-13 07:51:43.643: ERROR/AndroidRuntime(2238): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)
06-13 07:51:43.643: ERROR/AndroidRuntime(2238): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)
06-13 07:51:43.643: ERROR/AndroidRuntime(2238): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1712)
06-13 07:51:43.643: ERROR/AndroidRuntime(2238): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1202)
06-13 07:51:43.643: ERROR/AndroidRuntime(2238): at android.app.Activity.dispatchTouchEvent(Activity.java:1987)
06-13 07:51:43.643: ERROR/AndroidRuntime(2238): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1696)
06-13 07:51:43.643: ERROR/AndroidRuntime(2238): at android.view.ViewRoot.handleMessage(ViewRoot.java:1658)
06-13 07:51:43.643: ERROR/AndroidRuntime(2238): at android.os.Handler.dispatchMessage(Handler.java:99)
06-13 07:51:43.643: ERROR/AndroidRuntime(2238): at android.os.Looper.loop(Looper.java:123)
06-13 07:51:43.643: ERROR/AndroidRuntime(2238): at android.app.ActivityThread.main(ActivityThread.java:4203)
06-13 07:51:43.643: ERROR/AndroidRuntime(2238): at java.lang.reflect.Method.invokeNative(Native Method)
06-13 07:51:43.643: ERROR/AndroidRuntime(2238): at java.lang.reflect.Method.invoke(Method.java:521)
06-13 07:51:43.643: ERROR/AndroidRuntime(2238): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
06-13 07:51:43.643: ERROR/AndroidRuntime(2238): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
06-13 07:51:43.643: ERROR/AndroidRuntime(2238): at dalvik.system.NativeStart.main(Native Method)
06-13 07:51:43.664: ERROR/dalvikvm(2238): Unable to open stack trace file '/data/anr/traces.txt': Permission denied
这个里面,比如这个at android.app.ActivityThread.main这种以android开头的都是android系统的包,com开头的也不是自己写的,dalvik开头的是虚拟机的,你就去找是自己写的包的那个地方,通常其他错误都是由这个包的错误引起的,通常就是代码出错的地方
(2)
在android程序中可以用system.out.print语句输出一些标志性语句,但是android中还有一个功能更强大的输出语句,Log.d(tag, msg)
Log.e(tag, msg)等等 Log的语句
但是在为Log建立过滤器时,需要注意,这个过滤器的 by Log Tag 必须和Log的第一个参数tag相同,Filter Name 是自己随意起名字