Как обойти «Операция не разрешена» на Android при попытке подключиться к процессу с помощью lldb?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как обойти «Операция не разрешена» на Android при попытке подключиться к процессу с помощью lldb?

Сообщение Anonymous »

Контекст
Я отлаживаю модульный тест, который действует как «сервер», создавая дочерние процессы, которые действуют как «клиенты», и они взаимодействуют с сервером через разные порты. . Сам сервер является дочерним процессом «менеджера», который просто порождает его и ждет его завершения. Я могу подключить отладчики к серверному процессу и первому клиентскому процессу и определить, что они оба ждут сообщения. Сервер ожидает сообщения от второго клиента, а я пытаюсь найти место в исходном коде, где второй клиент завис, предположительно до того, как он смог отправить сообщение.
Прочие сведения
Все процессы выполняют один и тот же двоичный файл модульного теста в пользовательской оболочке.
Средой разработки является MacOS. Эмулятор Android с Android версии 12, API версии 32. Я запустил lldb-server --server --listen *:5039 на эмуляторе через оболочку adb. В окне терминала я запустил lldb в нескольких окнах терминала, где ввел «Выбор платформы», «Remote-android», а затем «Platform Connect Connect://:5039». Все это прошло успешно. Я отслеживал процессы и их происхождение с помощью top -ushell -O PPID -s 1 -d 1 в другой оболочке adb.
В одном lldb< /code> экземпляр для каждого процесса, я ввел присоединение процесса --pid [целевой pid]. Это сработало для двух процессов, но не для третьего. Я попытался начать заново с новыми экземплярами lldb и попытался подключиться к проблемному процессу, прежде чем присоединяться к остальным, но операция все равно не разрешена. Я видел в Интернете множество ответов о защите ptrace, но общие решения, связанные с kernel.yama.ptrace_scope, здесь не работают, поскольку эта запись sysctl не существует в Android, как и файл в /proc. Android основан на SELinux, и я нашел некоторые подсказки, такие как ObjectClassesPerms и руководство RedHat по настройке политики разрешений, но у меня возникли проблемы с ее пониманием настолько, чтобы применить ее к моей ситуации. Я также только что запустил getenforce, и результат был Permissive, поэтому я не думаю, что это связано с политикой.
В конечном итоге мне просто нужна трассировка стека не -системные вызовы, с расположением кода или без него. Если это просто адреса, я могу использовать objdump или что-то в этом роде. В Android нет pstack или elfutils. Я могу попытаться собрать и опубликовать pstack, но я немного не в курсе и не уверен, что сделаю это правильно.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ng-to-atta
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»