Как найти эту трассировку стека? - PullRequest
13 голосов
/ 30 декабря 2011

Моя программа продолжает зависать, но logcat не показывает никаких исключений.Я просто получаю следующее сообщение, плюс много статистики об использовании процессора.Очевидно, что я использую слишком много ресурсов процессора, но я не знаю, какая часть моей программы это делает.Где находится следующий файл?Я не могу найти это.

12-30 23: 13: 06.639: INFO / dalvikvm (7688): записал трассировку стека в '/data/anr/traces.txt'

Ответы [ 3 ]

16 голосов
/ 30 декабря 2011
adb shell

->

cat /data/anr/traces.txt

EDIT:

Для изменения файлов в / data вам необходимо иметь root-доступ / вы должны иметь доступ к файлу с помощью приложения, например https://market.android.com/details?id=com.estrongs.android.pop

После того, как у вас есть это приложение, откройте его -> Меню -> Настройки -> Домашний каталог (измените с /sdcard/ на /) -> Выйдите из приложения -> Откройте его снова

Тогда вы сможете просматривать / data / anr / *

EDIT2 (дополнительная информация, основанная на комментариях) для использования с опубликованным приложением после тестирования:

  • Большинство разработчиков полагаются на отчеты об ошибках консоли разработчика , чтобы просматривать трассировку стека и журналы ошибок, когда пользователь отправляет отчет об ошибке.

  • Другие создают свои собственные или используют библиотеку вроде ACRA

Имейте в виду, что некоторые пользователи не устанавливают приложение просто потому, что оно использует разрешение на чтение конфиденциальных данных журнала.

8 голосов
/ 15 мая 2015

Для удобного просмотра без обрезки головки файла используйте следующую однострочную команду:

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

4 голосов
/ 30 декабря 2011

ANR означает «Android не отвечает», и это не означает, что вы используете слишком много ресурсов ЦП, это означает, что основной петлитель пользовательского интерфейса не вызывался в течение определенного времени. Интерфейс пользовательского интерфейса заботится о пользовательском вводе, поэтому, с точки зрения вашего пользователя, приложение не реагировало на ввод. Обычно это вызвано выполнением длительных или блокирующих операций в основном потоке пользовательского интерфейса. Например, загрузка файла в главном потоке может вызвать ANR. Обычно довольно просто выбрать код, который вызывает ANR, только из этой информации.

...