从应用程序代码获取其他进程的Hprof转储

时间:2010-06-16 12:28:37

标签: java android hprof

在我的应用程序中,我可以选择捕获hprof转储。一世 使用

android.os.Debug.dumpHprofData(String fileName)

最初我虽然上面的方法生成的hprof数据是用于 整个设备,不是这样。生成的hprof数据只是 对于我的过程。

现在我正在尝试为其他进程生成hprof数据。一世 需要为所有正在运行的进程获取Hprof转储 应用程序代码。

从adb shell我试过“kill -10”,这个命令会生成 data / misc文件夹中相应进程的hprof文件。

现在问题是这个命令在adb中运行得很好 shell提示符,但我无法将命令嵌入到mycode中。

我的代码就像

Runtime.getRuntime()。exec(“chmod 777 / data / misc”) Runtime.getRunTime()。exec(“kill -10”)

不会抛出任何异常,但不知何故它不起作用。相同 上面的代码是为我的进程捕获Hprof转储,当我给我的 进程ID。

我试过“android.os.Process.sendSignal(int pid, android.os.Process.SIGNAL_USR1);“也。得到同样的问题。它是 为我的进程捕获Hprof转储。对于其他过程,它不是 工作

我们是否需要获得任何特殊权限才能杀死其他进程 我们的流程?或者它是一个建立的问题?你能建议吗? 从应用程序获取其他进程的Hprof转储的可能方法 码?

由于

1 个答案:

答案 0 :(得分:0)

  

我们需要有什么特别的吗?   允许从中杀死其他进程   我们的过程?

是的,就像在任何其他Linux系统中一样。

  你可以请一些可能的建议吗?   为其他人获取Hprof转储的方法   应用程序代码中的流程?

根你的手机。

您可以尝试使用ActivityManager及其killBackgroundProcesses()方法,但我不知道是否会生成您希望的文件。如果是,那就是安全漏洞,需要修复。