Есть ли способ запросить дамп для произвольного процесса, который будет похож на один сгенерированный для ANR на /data/anr/traces.txt
? Вероятно, это должно быть возможно через оболочку устройства.Android. Force ANR dump
Заранее благодарен!
Есть ли способ запросить дамп для произвольного процесса, который будет похож на один сгенерированный для ANR на /data/anr/traces.txt
? Вероятно, это должно быть возможно через оболочку устройства.Android. Force ANR dump
Заранее благодарен!
После некоторых исследований я выяснил, что это возможно, но, к сожалению, не очень полезно. Таким образом, чтобы добавить дамп вашего процесса /data/anr/traces.txt
вы должны просто отправить SIGQUIT
обработать вас интересует Вы можете просто запустить следующий из оболочки устройства:.
$ kill -s SIGQUIT <pid>
И единственная проблема заключается в том, что не каждый пользователь может посылать сигналы к произвольным процессам. Это не должно быть проблемой для корневых устройств. Для остальных вы все еще можете использовать этот трюк, если пакет вашего приложения отлаживается. Этот факт позволяет использовать run-as
утилиты и выполнить kill
в качестве пользователя исследуемого процесса:
$ adb shell
[email protected]:/ $ run-as com.example.sysuser.stunprober
[email protected]:/data/data/com.example.sysuser.stunprober $ kill -s SIGQUIT 4712
И выход LogCat показывает, что свалка была написано:
I/art(4712): Thread[5,tid=4721,WaitingInMainSignalCatcherLoop,Thread*=0xb74c4d28,peer=0x12c000a0,"Signal Catcher"]: reacting to signal 3
I/art(4712): Wrote stack traces to '/data/anr/traces.txt'