如何找到这个堆栈跟踪?

15

我的程序一直崩溃,但logcat没有显示任何异常。我只得到以下信息以及有关CPU使用情况的许多统计信息。显然我正在使用过多的CPU,但我不知道我的程序的哪一部分在做这件事。下面的文件在哪里?我找不到它。

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


cat /data/anr/traces.txt... 最终应该能够在Linux上运行,也适用于Android... - evotopid
4个回答

18
adb shell

-->

cat /data/anr/traces.txt

编辑:

你需要root访问权限才能修改/data/中的文件,你应该可以使用像https://market.android.com/details?id=com.estrongs.android.pop这样的应用程序访问该文件。

一旦你拥有了那个应用程序,打开它-->菜单-->设置-->主目录(从/sdcard/更改为/)-->退出应用程序-->再次打开它。

然后你就能够浏览到/data/anr/*。

编辑2(根据评论提供的额外信息)适用于发布的应用程序在实际测试中:

  • 大多数开发者依赖开发者控制台错误报告来查看堆栈跟踪和错误日志,当用户提交错误报告时。

  • 其他人则实现自己的错误报告系统或使用类库,如ACRA

请注意,有些用户不会安装某个应用程序,仅仅是因为它使用了读取敏感日志数据的权限。


我在Windows上使用Eclipse。我可以查看我的设备/模拟器上的文件,但似乎找不到traces.txt文件。 - user485498
更新了我的回答。你可以使用一个应用程序来访问那个文件。 - TryTryAgain
你如何在没有 root 访问权限的情况下(例如库存 HTC 手机)访问此文件? - Amplify91
"access" 是什么意思?阅读,复制,写入? - TryTryAgain
你不会从其他用户的手机上访问跟踪文件,相反,你将发送logcat到服务器以便分析:https://dev59.com/LnNA5IYBdhLWcg3wYMx- 我会更新我的答案,提供一些可能的用途。 - TryTryAgain
2
你不需要进行root操作。我认为执行“adb pull /data/anr/traces.txt ~/Desktop”就可以正常工作了。 - dnkoutso

9

为了舒适地查看文件而不会出现截断的头部,请使用以下一行命令:

adb shell“cat /data/anr/traces.txt”| less


4
ANR指的是“Android未响应”,并不是指你使用了太多的CPU,而是意味着UI主循环器在一定时间内未被调用。UI循环器负责处理用户输入,因此从用户的角度来看,应用程序对输入无响应。通常,这是由于在主UI线程上执行长时间运行或阻塞操作引起的。例如,在主线程上下载文件可能会导致ANR。通常,只需根据该信息就可以轻松确定导致ANR的代码。

0

如果你正在使用带有 Android StudioWindows 操作系统,你可以执行以下操作:

在 Android Studio 中:

View > Tool Windows > Device File Explorer

这应该会打开一个新窗口,里面显示设备上的所有文件(包括您的堆栈跟踪所在的位置),然后您可以导航到“/data/anr/traces.txt”,双击文件即可打开。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接