您的位置:首页 > 编程语言 > Java开发

如何利用eclipse和一些调试技巧来找到程序错误所在和从模拟器里面导出文件或者导入文件等

2013-06-13 16:47 531 查看
如何利用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 是自己随意起名字
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐