Погружение в технику и философию gdb

       

Обработка сигналов


Сигналом— называется асинхронное событие, происходящее в программе и чем-то напоминающее структурные исключения в Windows. Сигналы делятся на фатальные и не фатальные. Пример не фатального сигнала является SIGALRM, возбуждаемый при срабатывании интервального таймера. А вот при нарушения доступа к памяти генерируется сигнал SIGSEGV, завершающий программу в аварийной режиме (если только программист не предусмотрел специальный обработчик).

Отладчик gdb

перехватывает все сигналы и в зависимости от своей конфигурации либо передает сигнал программе, либо "поглощает" его, делая вид, что ничего интересного не происходит.

Посмотреть текущую конфигурацию gdb можно с помощью команды "info signals" (она же "info handle"), а для изменения реакции gdb необходимо воспользоваться "handle сигнал поведение", где сигнал — название сигнала (например, "SIGSEGV"), а поведение — реакция отладчика на возникновения сигнала, описываемая следующими ключевыми словами:

 

nostop    при получении этого сигнала GDB не останавливает программу;

stop        при получении этого сигнала GDB останавливает программу;

print        при получении данного сигнала GDB выводит сообщение о нем на экран;

noprint   GDB не замечает этот сигнал;

pass        GDB позволяет программе увидеть этот сигнал;

nopass   GDB массирует этот сигнал, не позволяя программе увидеть его.

 



Содержание раздела