Получение дампа Hprof для других процессов из кода приложения

В моем приложении у меня есть возможность захватить дамп hprof. я использовал

android.os.Debug.dumpHprofData (строковое имя файла)

Первоначально, хотя данные hprof, сгенерированные описанным выше способом, относятся ко всему устройству, что не так. Сгенерированные данные hprof предназначены только для моего процесса.

Теперь я пытаюсь сгенерировать данные hprof для другого процесса. Мне нужно получить дамп Hprof для всех запущенных процессов из кода приложения.

из adb shell я попробовал "kill -10 ", эта команда сгенерирует файл hprof для соответствующего процесса в папке data/misc.

Теперь проблема в том, что эта команда отлично работает из командной строки adb, но я не могу встроить команду в mycode.

Мой код похож

Runtime.getRuntime(). Exec("chmod 777 /data/misc") Runtime.getRunTime(). Exec("kill -10 ")

Никаких исключений не выбрасывается, но как-то не получается. Тот же код выше захватывает дамп Hprof для моего процесса, когда я даю свой идентификатор процесса.

Я пытался с "android.os.Process.sendSignal (int pid, android.os.Process.SIGNAL_USR1);" Также. Получение той же проблемы. Это захват дампа Hprof для моего процесса. Для других процессов это не работает.

Нужно ли нам иметь какое-либо специальное разрешение, чтобы убить другой процесс из нашего процесса? Или это сложный вопрос? Можете ли вы предложить какой-нибудь возможный способ получить дамп Hprof для других процессов из кода приложения?

Спасибо

1 ответ

Нужно ли нам иметь какое-либо специальное разрешение, чтобы убить другой процесс из нашего процесса?

Да, как и в любой другой системе Linux.

Можете ли вы предложить какой-нибудь возможный способ получить дамп Hprof для других процессов из кода приложения?

Рут свой телефон.

Вы можете попробовать использовать ActivityManager И его killBackgroundProcesses() метод, но я не знаю, генерирует ли это файл, который вы хотите. Если это так, это брешь в системе безопасности, и ее необходимо исправить.

Другие вопросы по тегам