«Потерянный» сигтрап при отладке с помощью gdb в Mac OS X - PullRequest
1 голос
/ 18 августа 2011

В моем сценарии использования у меня GDB на Mac отлаживает подчиненный X. Отдельный процесс Y продолжает посылать SIGTRAPs в X (используя kill (pid, SIGTRAP)) в быстрой последовательности, которая должна быть перехвачена и обработана GDB.

В версии GDB для Mac имеется поток, ожидающий на портах исключения для процесса X. Когда Y отправляет сигнал X, он отображается на порте исключения для X в качестве сообщения об исключении (используя ядрофункция "softsignals").

Проблема, с которой я сталкиваюсь, заключается в том, что каждый раз и соответствующее сообщение об исключении не принимается GDB через порт исключения X, даже если сигнал был отправлен Y в X.

Я пытался использовать dtrace, чтобы убедиться, что ядро ​​видит отправляемый сигнал, но я делаю что-то не так, dtrace ничего не показывает ни для какого процесса:

sudo dtrace -n 'proc:::signal-send /pid/ { printf("%s -%d %d",execname,args[2],args[1]->pr_pid); }'

... делаетне показывает никаких сигнатур, отправляемых Y в X, даже если GDB их обработал.

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...