创建一个 HelloWorld 应用。
在 onCreate 的结尾添加一个 Log 语句:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.d("HelloWorldActivity.onCreate()", "setContentView() completed"); }
在 Log 语句上放置断点。
在模拟器中运行该应用程序,并注意它是否可以正常工作,通过单步执行查看 Eclipse 的 LogCat 窗口中的已记录条目。
将 HelloWorldActivity 更改为扩展 ListActivity 而不是 Activity。
public class HelloWorldActivity extends ListActivity {
- 再次在模拟器中运行应用程序,注意它无法到达 Log 语句。
我的问题不是为什么会失败,而是您如何调试此错误?我在 Eclipse 的调试窗格中只看到一个 RuntimeException。我看到 LogCat 有一堆消息,但它太大了,我已经搜索过它,但找不到任何指示出错或异常发生位置的内容。我找不到一种方法来显示 RuntimeException 内部的消息或堆栈跟踪,以知道哪行代码引发了异常。
我假设必须有更好的方法使用工具来查找错误,但我是初学者,在没有使用 try/catch 包装编码的所有内容的情况下,似乎无法找到更好的调试方法。我希望在 LogCat 中找到由抛出异常生成的消息。我希望调试窗口允许您检查异常的内容。我不是说这样的技术不存在,我是说作为初学者,我难以弄清楚如何调试并询问存在哪些技术以及如何使用它们?
因此,简而言之:
- 如果您不知道其原因,您将如何找到此错误?
- 您将使用哪些技术来查找根本原因?
- 您将如何检查异常的详细信息?
- 通常,您如何使用 Eclipse 在 Android 代码中查找问题?
欢迎提出多种建议和讨论。
我本可以包含我的 LogCat 内容,但它太大了,不合理。您应该可以轻松重现此问题,因此我将其省略。可能有一些 LogCat 内容可供我使用,但它非常大,即使运行小程序也很大,因此需要提示要搜索什么以及如何在从 API 调用抛出异常时解释它。我看到其他帖子说 LogCat 中应该有一些内容,虽然可能是真的,但我自己找不到任何东西。如果您认为 LogCat 应该有内容,请自己运行测试,并将您所需找到的行复制到响应中。
谢谢。
迄今为止,总结的技术列表如下:
侵入式技术: 1. 在希望查看执行位置的代码中放置Toast。 2. 在可能抛出异常的代码周围放置try/catch。 3. 注释掉代码并重新编译和测试。
非侵入式技术: 1. 使用调试器。断点、变量检查等。 2. Monkey压力测试工具。 3. 下载Android源库。 4. 使用LogCat过滤器查看是否列出了“Caused By”。
不确定是否可用: 1. Android库的调试版本,其中包含额外的日志记录、断言或其他额外的帮助。 2. 通过调试窗格或其他技术在Eclipse中检查异常的方法。 3. 定义更全局的try/catch异常处理程序的方法。 4. 能够通过Android库源代码进行调试的能力。
不可用: 1. 一种非侵入式的查看异常内容或异常发生位置的方法。