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? как я могу это предотвратить?
Ответы
Ответ 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");
Но я не понимаю, почему ваш код получает это. Возможно, это связано с некоторыми незначительными проблемами зависимости.