在调试我的Android应用程序时,我又一次碰壁了。
当您的活动的启动代码出错时,通常会出现此问题。
在这种情况下,在我的自定义SurfaceView类的构造函数之后的某个地方,我会看到这个毫无价值的文本:
Thread [<3> main] (Suspended (exception RuntimeException))
ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2596
ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2621
ActivityThread.access$2200(ActivityThread, ActivityThread$ActivityRecord, Intent) line: 126
ActivityThread$H.handleMessage(Message) line: 1932
ActivityThread$H(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 123
ActivityThread.main(String[]) line: 4603
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 521
ZygoteInit$MethodAndArgsCaller.run() line: 860
ZygoteInit.main(String[]) line: 618
NativeStart.main(String[]) line: not available [native method]
当然,这与我的代码没有任何关系。
我甚至试图单步执行代码的每一行,但是这个错误发生在方法调用之间的某处。
我确定这是一个简单的错误,但事实上调试器的行为是一个很大的烦恼,我知道事实上我会遇到更多这些错误。
感谢。
编辑:
我发现了问题。一个简单的空引用。问题仍然存在,为什么调试器不能告诉我这个nullpointerexception?
答案 0 :(得分:1)
您正在查看调试器中的当前堆栈跟踪,因此它显示了程序执行的当前状态。要查看与异常相关的错误和堆栈跟踪,您需要查看日志(在Eclipse中打开“logcat”视图,或在shell中使用adb logcat。)
答案 1 :(得分:1)
我感觉到你的痛苦。我知道的唯一方法是让程序继续并强制关闭,然后在logcat窗格中读取日志。这似乎发生在从通过本机层向下传递的事件调用的所有代码中,据我所知,这只是一切。
我首先让程序崩溃,然后读取日志以确定放置断点的位置,然后重新启动应用程序并检查断点处的值。这非常令人沮丧。
答案 2 :(得分:1)
调试器正在破坏第一个未捕获的异常,而不是原始异常。 logcat输出有完整的东西。