Подтвердить что ты не робот

SIG33 при отладке собственного Android

Я использую Android Studio для отладки приложения NativeActivity, написанного на С++
В моем коде на С++ первое, что я делаю в android_main(), - это ждать 10 секунд для прикрепления отладчика. В окне "Отладка" я вижу:

Now Launching Native Debug Session

а затем через несколько секунд

Debugger attached to process 28458

а затем сразу после его прикрепления отладчик останавливается сигналом:

Signal: 33 (signal SIG33)

Я нажимаю "Программа возобновления", а затем получаю тот же сигнал снова и снова 7-8 раз. После этого программа будет продолжена, как ожидалось, отладчик подключен, и я могу остановить его на контрольных точках.

В чем смысл этого SIG33? как я могу это предотвратить?

4b9b3361

Ответ 1

Сигнал 33 используется внутренне с помощью бионического устройства обратной связи.

См. комментарий в __libc_current_sigrtmin.cpp.

// POSIX timers use __SIGRTMIN + 0.
// libbacktrace uses __SIGRTMIN + 1.
// libcore uses __SIGRTMIN + 2.

См. определение __SIGRTMIN для generic, arm, x86 и mips.

#define __SIGRTMIN 32

Я думаю, что SIG33 вызван gdb, а gdb неправильно игнорирует его.

Ответ 2

SIG33 используется для сообщения о "библиотеках потоков" LLDB.

Отрывок из источника LLDB:

AddSignal (33, "SIG33", false, false, false, "threading library internal signal 2");

Но я не понимаю, почему ваш код получает это. Возможно, это связано с некоторыми незначительными проблемами зависимости.