【问题标题】:How to find this stack trace?如何找到这个堆栈跟踪?
【发布时间】:2011-12-30 14:19:43
【问题描述】:

我的程序不断崩溃,但 logcat 没有显示任何异常。我只收到以下消息,以及许多有关 CPU 使用率的统计信息。显然我使用了太多的 CPU,但我不知道我的程序的哪个部分正在执行此操作。以下文件在哪里?我找不到它。

12-30 23:13:06.639:INFO/dalvikvm(7688):将堆栈跟踪写入 '/data/anr/traces.txt'

【问题讨论】:

  • cat /data/anr/traces.txt... 最终也应该适用于 linux 的 android...

标签: android stack-trace


【解决方案1】:
adb shell

-->

cat /data/anr/traces.txt

编辑:

您需要具有 root 访问权限才能修改 /data/ 中的文件,您应该能够使用 https://market.android.com/details?id=com.estrongs.android.pop 等应用程序访问该文件

拥有该应用程序后,打开它 --> 菜单 --> 设置 --> 主目录(从 /sdcard/ 更改为 /) --> 退出应用程序 --> 再次打开它

那么你应该可以浏览到 /data/anr/*

EDIT2(附加信息,基于 cmets)在实际测试后用于已发布的应用程序:

  • 当用户提交错误报告时,大多数开发人员依靠developer console error reporting 来查看堆栈跟踪和错误日志。

  • 其他人实现自己的或使用像ACRA这样的库

请注意,某些用户不会仅仅因为应用使用读取敏感日志数据的权限而安装应用。

【讨论】:

  • 我在 Windows 中使用 Eclipse。我可以在我的设备/模拟器上查看文件,但 traces.txt 似乎不在任何地方。
  • 更新了我的答案。您可以使用应用程序访问该文件。
  • 如何在没有 root 访问权限的情况下访问此文件(例如股票 HTC 手机)?
  • “访问”是什么意思?阅读、复制、写作?
  • 您不必root。我认为执行 'adb pull /data/anr/traces.txt ~/Desktop' 应该可以正常工作。
【解决方案2】:

为了在不切割文件头的情况下舒适地查看,请使用以下单行命令:

adb shell "cat /data/anr/traces.txt" | less

【讨论】:

    【解决方案3】:

    ANR 代表“Android Not Responding”,这并不意味着您使用了过多的 CPU,这意味着在给定的时间内没有调用 UI 主循环器。 UI looper 负责处理用户输入,因此从用户的角度来看,应用程序对输入没有响应。通常这是由于在主 UI 线程上执行长时间运行或阻塞操作造成的。例如,在主线程上下载文件可能会导致 ANR。通常,仅从这些信息中就很容易找出导致 ANR 的代码。

    【讨论】:

      【解决方案4】:

      如果您使用WindowsAndroid Studio,您可以执行以下操作:

      在 Andriod Studio 中:

      View > Tool Windows > Device File Explorer
      

      这应该会打开一个新窗口,其中包含设备上的所有文件(堆栈跟踪所在的位置),然后您可以导航到“/data/anr/traces.txt”,只需双击该文件即可打开它给你。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-02
        • 2010-10-31
        • 1970-01-01
        • 2015-05-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多