2010-06-16 37 views
1

在我的應用程序中,我有一個選項來捕獲hprof轉儲。我 使用從應用程序代碼獲取其他進程的Hprof轉儲

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

最初我雖然通過上述方法產生的HPROF數據是 整個裝置,這是並非如此。生成的hprof數據對於我的過程只有 。

現在我正在嘗試爲其他進程生成hprof數據。 I 需要從 應用程序代碼獲取所有正在運行的進程的Hprof轉儲。

來自adb shell我試過了「kill -10」,這個命令會在data/misc文件夾中產生對應進程的hprof文件 。

現在的問題是這個命令從adb shell提示符運行完美,但我無法將命令嵌入mycode。

我的代碼是像

調用Runtime.getRuntime()。EXEC( 「搭配chmod 777 /數據/雜項」) 調用Runtime.getRuntime()。EXEC( 「殺-10」)

沒有例外被拋出,但不知何故,它不工作。上面的代碼與我的流程捕獲Hprof轉儲時相同,當我給我的 進程ID。

我試着用「android.os.Process.sendSignal(int pid, android.os.Process.SIGNAL_USR1);」同樣的問題。 爲我的程序捕獲Hprof dump。對於其他進程,它不是 工作。

我們是否需要特別許可從我們的流程中銷燬 其他流程?或者它是一個內置的問題?你可以請建議一些 可能的方式獲得Hprof轉儲從應用程序 代碼的其他進程?

感謝

回答

0

我們是否需要有什麼特殊的 權限從 我們的進程殺死其他進程?

是的,就像在任何其他Linux系統一樣。

可以請你提出一些可能的 方式獲得HPROF轉儲在應用程序代碼等 過程?

Root your phone。

您可以嘗試使用ActivityManager及其killBackgroundProcesses()方法,但我不知道是否會生成您希望的文件。如果是這樣,這是一個安全漏洞,需要修復。

相關問題