【问题标题】:Android Debugging TipsAndroid 调试技巧
【发布时间】:2010-07-23 01:28:13
【问题描述】:

我的程序经常崩溃。我在 LogCat 中看不到任何内容,也看不到其他有用的信息来找出问题所在。我唯一看到的是某种异常。这是不可接受的,并且使 Android 编程几乎不可能。我确信调试必须有一些额外的帮助,但经过数周的搜索,什么也没有。

有没有人提示如何在一个简单崩溃的程序中找到一个错误?

我知道一般问题,但没有答案,我将不得不放弃为 Android 开发应用程序的尝试。我不能花费数周的时间来寻找每一个简单的错误。

【问题讨论】:

  • 谢谢,当我看到某个问题的答案时,我会记住这一点。

标签: android debugging


【解决方案1】:

还有实际的 Eclipse 调试器。如果你只是用调试器运行程序直到它崩溃,你可能看不到特别有用的堆栈跟踪。但是,如果您在崩溃前的代码中添加一两个断点,您可以仔细检查并找出问题所在。

另外,虽然我对 Android 开发还很陌生,但我的经验是,我的代码中的大部分神秘崩溃本质上都是 ClassCastExceptions。仔细查看您将某些东西从一个类转换到另一个类的所有地方,并确保您没有假设某物的类型实际上不是。

【讨论】:

  • 我会留意 ClassCastException ,但我现在没有看到。作为一名 C++ 程序员,我通常非常小心,在这种情况下,强制转换几乎是一个普遍的坏主意。但我会小心这一点。谢谢。
  • 这在 Java 中通常也是一个坏主意,但在 Android 编程中有时会出现,例如 textView = (TextView) findViewById(R.id.textview1)
  • 我是一名 Android 程序员,我们一直在使用强制转换。有时,在 Android 开发者页面上研究类的来源和信息有助于了解您正在转换到/从什么(如果它不是同一个类)。
【解决方案2】:

在我看来,您的 android 安装在某处有错误。 LogCat 有时会感到困惑并与虚拟设备断开连接(在此讨论:getting blank screen in logcat)。

但是您的问题听起来要严重得多。我知道这很痛苦,但请考虑重新安装您的 android 开发系统(包括全新的 Eclipse 安装)。

我也遇到过类似的问题,全新安装帮助很大(尤其是在几次升级之后——事情会变得相当混乱)。

祝你好运。

【讨论】:

    【解决方案3】:

    这是一个完全的远景,但事实证明这个 Android 新手的答案是:您确定您的设备已连接?

    在我的情况下发生的事情(这让我想到了我的应用程序没有向 LogCat 报告崩溃)是我认为我正在调试的结果不是我的手机,而是我碰巧拥有的 Android 模拟器同时运行。当我意识到发生这种情况时,我退出了模拟器,而 logcat 也停止了。

    当我再次运行 logcat 时,发现它甚至没有找到我的手机:

    $ ./adb logcat
    - waiting for device -
    

    从那里开始,我必须经过一些步骤才能让我的手机被识别,例如 adb not finding my device / phone (MacOS X)enabling debugging on the phone。最后,我必须set android:debuggable=true

    杀死 adb 并再次运行 logcat 后,我​​正在查看正确的日志,并且可以看到崩溃异常。

    【讨论】:

      【解决方案4】:

      实际上,我不确定您是否遇到了正常的崩溃。可能是 ANR 或某种类似的现象锁定了所有内容。这可能会让您从应用程序中看到更少的日志。与我使用过的其他一些环境相比,我认为对 android 的调试支持非常出色。

      【讨论】:

        【解决方案5】:

        按照红色数字。您将需要处于调试视图中

        1) 单击引发异常的事件 2) 浏览为该事件生成的所有变量 3) 点击“e” 4)查看detailMessage

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-01-09
          • 1970-01-01
          • 2015-08-13
          相关资源
          最近更新 更多