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

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

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

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

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

из оболочки adb я попробовал «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 для других процессов из кода приложения?

Спасибо


person Natarajan    schedule 16.06.2010    source источник


Ответы (1)


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

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

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

Укореняйте свой телефон.

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

person CommonsWare    schedule 16.06.2010