Eclipse的logcatdebugging
我有一个初学者的问题,我想debugging我的应用程序,我不知道如何正确使用Logcat。
现在,我得到这个错误,我不知道这是什么意思。
我如何使用这些信息? 有什么地方可以看我的教程吗?
谢谢你的帮助。
09-23 11:27:55.968: E/AndroidRuntime(807): FATAL EXCEPTION: main 09-23 11:27:55.968: E/AndroidRuntime(807): java.lang.NullPointerException 09-23 11:27:55.968: E/AndroidRuntime(807): at com.uniqueapps.runner.Start.onClick(Start.java:49) 09-23 11:27:55.968: E/AndroidRuntime(807): at android.view.View.performClick(View.java:4240) 09-23 11:27:55.968: E/AndroidRuntime(807): at android.view.View$PerformClick.run(View.java:17721) 09-23 11:27:55.968: E/AndroidRuntime(807): at android.os.Handler.handleCallback(Handler.java:730) 09-23 11:27:55.968: E/AndroidRuntime(807): at android.os.Handler.dispatchMessage(Handler.java:92) 09-23 11:27:55.968: E/AndroidRuntime(807): at android.os.Looper.loop(Looper.java:137) 09-23 11:27:55.968: E/AndroidRuntime(807): at android.app.ActivityThread.main(ActivityThread.java:5103) 09-23 11:27:55.968: E/AndroidRuntime(807): at java.lang.reflect.Method.invokeNative(Native Method) 09-23 11:27:55.968: E/AndroidRuntime(807): at java.lang.reflect.Method.invoke(Method.java:525) 09-23 11:27:55.968: E/AndroidRuntime(807): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 09-23 11:27:55.968: E/AndroidRuntime(807): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 09-23 11:27:55.968: E/AndroidRuntime(807): at dalvik.system.NativeStart.main(Native Method) 09-23 11:27:59.528: I/Process(807): Sending signal. PID: 807 SIG: 9 09-23 11:28:01.108: D/gralloc_goldfish(877): Emulator without GPU emulation detected. 09-23 11:54:55.318: D/gralloc_goldfish(937): Emulator without GPU emulation detected. 09-23 11:54:57.887: I/Choreographer(937): Skipped 35 frames! The application may be doing too much work on its main thread. 09-23 11:55:03.118: D/dalvikvm(937): GC_FOR_ALLOC freed 89K, 7% free 2928K/3136K, paused 39ms, total 72ms 09-23 11:55:05.858: D/AndroidRuntime(937): Shutting down VM 09-23 11:55:05.858: W/dalvikvm(937): threadid=1: thread exiting with uncaught exception (group=0x414c4700) 09-23 11:55:05.868: E/AndroidRuntime(937): FATAL EXCEPTION: main 09-23 11:55:05.868: E/AndroidRuntime(937): java.lang.NullPointerException 09-23 11:55:05.868: E/AndroidRuntime(937): at com.uniqueapps.runner.Start.onClick(Start.java:49) 09-23 11:55:05.868: E/AndroidRuntime(937): at android.view.View.performClick(View.java:4240) 09-23 11:55:05.868: E/AndroidRuntime(937): at android.view.View$PerformClick.run(View.java:17721) 09-23 11:55:05.868: E/AndroidRuntime(937): at android.os.Handler.handleCallback(Handler.java:730) 09-23 11:55:05.868: E/AndroidRuntime(937): at android.os.Handler.dispatchMessage(Handler.java:92) 09-23 11:55:05.868: E/AndroidRuntime(937): at android.os.Looper.loop(Looper.java:137) 09-23 11:55:05.868: E/AndroidRuntime(937): at android.app.ActivityThread.main(ActivityThread.java:5103) 09-23 11:55:05.868: E/AndroidRuntime(937): at java.lang.reflect.Method.invokeNative(Native Method) 09-23 11:55:05.868: E/AndroidRuntime(937): at java.lang.reflect.Method.invoke(Method.java:525) 09-23 11:55:05.868: E/AndroidRuntime(937): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 09-23 11:55:05.868: E/AndroidRuntime(937): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 09-23 11:55:05.868: E/AndroidRuntime(937): at dalvik.system.NativeStart.main(Native Method) 09-23 11:55:09.657: D/gralloc_goldfish(961): Emulator without GPU emulation detected. 09-23 12:04:20.418: D/gralloc_goldfish(1006): Emulator without GPU emulation detected. 09-23 12:04:27.118: D/dalvikvm(1006): GC_FOR_ALLOC freed 96K, 7% free 2919K/3136K, paused 40ms, total 72ms 09-23 12:04:30.337: D/AndroidRuntime(1006): Shutting down VM 09-23 12:04:30.357: W/dalvikvm(1006): threadid=1: thread exiting with uncaught exception (group=0x414c4700) 09-23 12:04:30.397: E/AndroidRuntime(1006): FATAL EXCEPTION: main 09-23 12:04:30.397: E/AndroidRuntime(1006): java.lang.NullPointerException 09-23 12:04:30.397: E/AndroidRuntime(1006): at com.uniqueapps.runner.Start.onClick(Start.java:49) 09-23 12:04:30.397: E/AndroidRuntime(1006): at android.view.View.performClick(View.java:4240) 09-23 12:04:30.397: E/AndroidRuntime(1006): at android.view.View$PerformClick.run(View.java:17721) 09-23 12:04:30.397: E/AndroidRuntime(1006): at android.os.Handler.handleCallback(Handler.java:730) 09-23 12:04:30.397: E/AndroidRuntime(1006): at android.os.Handler.dispatchMessage(Handler.java:92) 09-23 12:04:30.397: E/AndroidRuntime(1006): at android.os.Looper.loop(Looper.java:137) 09-23 12:04:30.397: E/AndroidRuntime(1006): at android.app.ActivityThread.main(ActivityThread.java:5103) 09-23 12:04:30.397: E/AndroidRuntime(1006): at java.lang.reflect.Method.invokeNative(Native Method) 09-23 12:04:30.397: E/AndroidRuntime(1006): at java.lang.reflect.Method.invoke(Method.java:525) 09-23 12:04:30.397: E/AndroidRuntime(1006): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 09-23 12:04:30.397: E/AndroidRuntime(1006): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 09-23 12:04:30.397: E/AndroidRuntime(1006): at dalvik.system.NativeStart.main(Native Method) 09-23 12:04:33.918: D/gralloc_goldfish(1030): Emulator without GPU emulation detected.
看完之后
FATAL EXCEPTION: main
你会看到这个问题,这里是一个NPE
09-23 11:27:55.968: E/AndroidRuntime(807): java.lang.NullPointerException
那么你会发现引用你的应用程序的第一行。 这里是下面一行
at com.uniqueapps.runner.Start.onClick(Start.java:49)
这就是说,在Start.java
中,第49行的onClick()
中Start.java
一些是null
。所以,你去那行看看什么可以是null
…就像试图访问setText()
, getText()
,或任何Android或用户定义的方法。 有时很简单,为什么它是null
,有时你必须进一步追溯,看看是什么使它为null
。
编辑
如果一个variables为null
那是因为它没有被正确初始化,或者根本没有被初始化。 所以也许你有一个variablesTextView tv;
但是你从来没有通过做类似的东西给它一个价值
tv = (TextView) findViewById(R.id.myTV);
如果你试图做一些像tv.setText("Some Text");
你会得到一个NPE
因为你没有像上面的代码行一样初始化它。 或者,也许你试图初始化它,并使用不同的layout
如错误的id
。 这将返回null
并以相同的方式创build一个NPE
。 这可以在您尝试调用方法的任何variables上。
它说在Start.java文件的第49行是NullPointerException。
Logcat允许你从左边的平移过滤你所有的日志。 哪个是最好的。
你可以试试这个提示使用logcat ..
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); System.out.println("1. Before Declare"); textView = (TextView) findViewById(R.id.textView); System.out.println("2. After Declare"); }
在logcat上查看结果,然后你可以看到你的一步..