1

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

android.os.Debug.dumpHprofData(字符串文件名)

最初我虽然上述方法生成的 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")

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

我尝试使用“android.os.Process.sendSignal(int pid,android.os.Process.SIGNAL_USR1);” 还有。遇到同样的问题。它正在为我的进程捕获 Hprof 转储。对于其他进程,它不起作用。

我们是否需要任何特殊权限才能从我们的进程中杀死其他进程?或者它是一个内置的问题?您能否建议一些可能的方法来从应用程序代码中获取其他进程的 Hprof 转储?

谢谢

4

1 回答 1

0

我们是否需要任何特殊权限才能从我们的进程中杀死其他进程?

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

您能否建议一些可能的方法来从应用程序代码中获取其他进程的 Hprof 转储?

根你的手机。

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

于 2010-06-16T14:09:34.937 回答