LINUX.ORG.RU

Сигналы и gdb


0

0

В нормальных условиях программа ловит и обрабатывает сигнал SIGFPE, но при отладке gdb перехватывает этот сигнал и останавливает выполнение. Как заставить gdb игнорировать определённые сигналы?

А можно поточнее или кусок кода. По умолчанию, SIGFPE приведет к завершению программы, и неважно, в gdb она или нет. Если навешан какой-то обработчик, то он тоже выполнится независимо от того, дебажится программа или нет.

Chumka ★★★
()
Ответ на: комментарий от Chumka

> SIGFPE приведет к завершению программы, и неважно, в gdb она или нет.

почему же, это важно.

get_signal_to_deliver:

                if ((current->ptrace & PT_PTRACED) && signr != SIGKILL) {
                        ptrace_signal_deliver(regs, cookie);

                        /* Let the debugger run.  */
                        ptrace_stop(signr, signr, info);

только SIGKILL не перехватывается ptrace parent'ом.

idle ★★★★★
()
Ответ на: комментарий от idle

Так перехватываются - это понятно, иначе бы всякие strace сигналы не показывали.
Смысл в том, что сигнал по-любому должен достаться обработчику этого сигнала.
А в этом коде сигнал просто доставляется трассировщику (gdb)
Я вот, единственное, что вижу в том же коде это строку:
signr = current->exit_code;
if (signr == 0)
continue;
Может вот тут что-то случилось и сигнал все-таки пролетел?

Chumka ★★★
()

signal SIGFPE nostop

описание - info gdb

welkam ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.