为什么android调试器不能提供有用的信息?

时间:2010-11-01 00:11:03

标签: android debugging

在调试我的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?

3 个答案:

答案 0 :(得分:1)

您正在查看调试器中的当前堆栈跟踪,因此它显示了程序执行的当前状态。要查看与异常相关的错误和堆栈跟踪,您需要查看日志(在Eclipse中打开“logcat”视图,或在shell中使用adb logcat。)

答案 1 :(得分:1)

我感觉到你的痛苦。我知道的唯一方法是让程序继续并强制关闭,然后在logcat窗格中读取日志。这似乎发生在从通过本机层向下传递的事件调用的所有代码中,据我所知,这只是一切。

我首先让程序崩溃,然后读取日志以确定放置断点的位置,然后重新启动应用程序并检查断点处的值。这非常令人沮丧。

答案 2 :(得分:1)

调试器正在破坏第一个未捕获的异常,而不是原始异常。 logcat输出有完整的东西。

另见this older answer