Как открыть оболочку эмулятора из кода Java для определения событий системных вызовов?

Я хочу собирать события системных вызовов для приложений Android с помощью инструмента strace. Сначала я запускаю эмулятор ланча, затем пишу в терминал в linux следующую командную строку:

adb -s emulator-5554 shell

После эмулятора оболочки я хочу написать команду strace, как показано на рисунке:

после эмулятора оболочки я хочу написать команду strace, как показано на рисунке из trminal это прекрасно работает со мной, но когда я пишу код Java

Process p=Runtime.getRuntime().exec("adb -s emulator-5554 shell");
Process p1=Runtime.getRuntime().exec("strace -p 871");

Это не сработало, может ли кто-нибудь помочь мне написать этот код Java в затмении, пожалуйста, обратите внимание на картинку

1 ответ

Решение

adb shell Команда открывает новую оболочку, в которой straceвыполнен. Java-версия вашей команды выполнила обе команды в оболочке по умолчанию. Следовательно, вы должны объединить их:

Process p=Runtime.getRuntime().exec("adb -s emulator-5554 shell strace -p 871");

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