2011-01-23 85 views
0

我正在使用Eclipse。Android:更具描述性的错误请!

我烧几个小时试图调试我的第一个(非常简单)android应用程序。

当我遇到一个错误,我没有得到一个适当的例外与描述出了什么问题,我得到一个屏幕要求的源代码和“暂停(异常RuntimeException))”在调试日志。

我正在诉诸每一行记录来查看最后一个执行点的位置,然后试图通过使用google搜索来了解为什么以下行会导致错误。

查看我的屏幕截图:ErrorMissing Source

突出显示的行:

SimpleCursorAdapter scaSights = new SimpleCursorAdapter(this,R.layout.sight_row,sightsCursor,fromDisplayFields,toDataFields); 

是其中发生异常。我不知道那里有什么问题,但是一个好的异常消息会有所帮助,而不是源代码的提示。

任何帮助非常感谢!

+2

Log说什么? http://developer.android.com/guide/developing/debug-tasks。html将其视为“logcat” – DrColossos 2011-01-23 19:03:17

+0

Nothing usefull - 我有时通过阅读logcat来获取某些内容,但最近它似乎首先要求我在给logcat记录错误之前先给它一个源代码。 http://cde.co.za/shared/hein/logcat.jpg – 2011-01-23 19:29:54

+1

您作为“错误”包含的视图不是Logcat输出。要么让它完全炸弹,然后切换到logcat来查看异常。 – 2011-01-23 19:44:52

回答

2

发生这种情况是因为您正在追踪的行上有一个异常,而您现在正在追踪引发异常的SDK类。这是正常的和预期的,虽然不是非常有用。当发生这种情况时,除了“玩”调试器并查看logcat日志以查看异常堆栈跟踪之外,没有太多可做的事情。

如果你想在调试器中看到异常,你可以在该块周围放一个try {...} catch(Throwable t),然后在catch中设置一个断点并检查异常,你的其他物体。

1

logcat通常会打印所有未捕获的异常。检查日志的另一种方法是用try-catch包围该代码,然后打印错误消息和/或堆栈跟踪。

1

嗯。从我在wtf.jpg图片中可以看到的情况来看,第86行似乎不是堆栈跟踪的一部分,所以我不知道它是否会导致问题。

的一些注意事项,以帮助调试:

  • 可以引入破发点(在71行说),如果你想一步通过执行代码(按步骤Over图标)
  • 步骤 您编写和调用的函数,按 Step Into图标
  • 如果尝试浏览其中一个android函数(您没有编写),您将看到Source not Found错误。这并不意味着这里发生的错误
  • 你可以尝试设置2个断点(比如在第71和90行),当你点击第一个断点时,按下恢复图标 - 它将继续运行,直到它到达第二个断点。如果它没有崩溃,那么你可以确定这里没有发生错误。
  • 只需按红色(E)按钮,即可将logcat过滤为错误消息。按(V)按钮返回。