Фон
Я отлаживаю приложение Android, используя gdb
8.3 под WSL (Подсистема Windows для Linux). При отладке мое приложение gdb
часто перехватывает SIGSEGV и другие сигналы, которые завершают работу приложения, как правило, в несовместимых точках сеанса. Эти сигналы не появляются при запуске приложения без gdb
. У меня есть веские основания полагать, что gdb
является источником нестабильности.
Поэтому я хочу отслеживать запущенное приложение gdb, используя strace
, в надежде проверить приложение и посмотреть, какая системная функция генерирует сигнал сбоя при сбое.
Проблема
strace
не может подключиться к отлаженному приложению gdb для Android, поскольку оно не может подключиться к уже присоединенному процессу.
Вот команда gdbserver
для присоединения к запущенному процессу:
dreamlte:/data/local/tmp # ./gdbserver :9999 --attach 26060
Attached; pid = 26060
Listening on port 9999
Remote debugging from host 127.0.0.1
Я запускаю gdb
, который подключается к запущенному приложению.
Когда gdb подключен к приложению Android, я пытаюсь присоединить strace
к приложению:
127|dreamlte:/data/local/tmp # ./strace -p 26060
attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted
Я понимаю, что проблема в том, что процесс приложения не может быть присоединен более одного раза.
Есть ли способ присоединить strace
к запущенной комбинации gdb-app?