2016-06-14 4 views
0

Есть ли способ запросить дамп для произвольного процесса, который будет похож на один сгенерированный для ANR на /data/anr/traces.txt? Вероятно, это должно быть возможно через оболочку устройства.Android. Force ANR dump

Заранее благодарен!

ответ

4

После некоторых исследований я выяснил, что это возможно, но, к сожалению, не очень полезно. Таким образом, чтобы добавить дамп вашего процесса /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' 
Смежные вопросы