经过一些研究工作后,我发现它有可能,但遗憾的是不是很有用.因此,要向您添加流程转储,/data/anr/traces.txt只需发送SIGQUIT给您感兴趣的流程.您只需从设备shell运行下一步:
$ kill -s SIGQUIT <pid>
Run Code Online (Sandbox Code Playgroud)
唯一的问题是并非每个用户都可以向任意进程发送信号.它不应该是root设备上的问题.对于其他人,如果您的应用程序包是可调试的,您仍然可以使用此技巧.这个事实允许使用run-as实用程序并kill作为调查过程的用户执行:
$ adb shell
shell@mako:/ $ run-as com.example.sysuser.stunprober
shell@mako:/data/data/com.example.sysuser.stunprober $ kill -s SIGQUIT 4712
Run Code Online (Sandbox Code Playgroud)
并且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'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1299 次 |
| 最近记录: |