Предполагая, что вы подключены к работающему процессу и не проверяете дамп ядра, и предполагаете, что GDB может обращаться к символам, вы должны иметь возможность вызывать (через GDB) функции обработки сигналов POSIX, чтобы определить информацию, например, какие сигналызаблокированы, и каковы обработчики сигналов регистра.
Например, что-то вроде следующего может использоваться, чтобы определить, зарегистрирован ли обработчик для сигнала SIGSEGV == 11 с использованием функции sigaction:
(gdb) call malloc(sizeof(struct sigaction))
$1 = (void *) 0x...
(gdb) call malloc(sizeof(struct sigaction))
$2 = (void *) 0x...
(gdb) call memset($2, 0, sizeof(struct sigaction))
...
(gdb) call sigaction(11, $2, $1)
$... = 0
(gdb) print *((struct sigaction *)$1)
<prints struct sigaction info>
Эта информация должна позволить вам определить адрес обработчика, а затем вы можете просто передать его в команду 'info symbol', чтобы определить, какая функция используется в качестве обработчика.
Подобные операции могутчтобы определить, какие сигналы заблокированы.
Также вам может пригодиться специальная переменная GDB $ _siginfo.См. Здесь для получения дополнительной информации: http://sourceware.org/gdb/onlinedocs/gdb/Signals.html
Хотя я предполагаю, что $ _siginfo недоступен для целей Apple / darwin.