2015-04-12 6 views
-1

Я искал несколько вопросов о stackoverflow об отладке SIGTERM, но не получил нужную мне информацию. Возможно, я еще новичок в этой проблеме.Использование GDB для отладки SIGTERM

Моя программа завершена сигналом SIGTERM без дампа ядра, и я не знаю, как отслеживать это. Мой вопрос: каков общий способ отладки этой проблемы в GDB?

Спасибо.

ответ

0

Моя программа завершается с сигналом SIGTERM без дампа ядра

Он ожидается, что если кто-то посылает вашей программе SIGTERM, то никакой дамп не производится.

и я не знаю, как отследить это.

Необходимо выяснить, откуда такое SIGTERM. Кто-то отправляет вам свою программу, и ключевым вопросом является кто.

Обычно SIGTERM отправляется, когда либо вы типа Control-C в терминале, в котором вы запустили программу (коррекцию, что бы отправить SIGINT, не SIGTERM), или типа kill <pid> в каком-то другом терминале.

+0

спасибо, сэр. Я выясню, кто посылает мне SIGTERM. – day

0

Хотя SIGTERM может быть отправлено ядром в нескольких случаях, он почти всегда отправляется другим пользовательским процессом. Если вы запустите свою программу под gdb, тогда, когда она получит SIGTERM, она будет приостановлена. Вы можете получить некоторую информацию о сигнале, глядя на $_siginfo структуру:

(gdb) print $_siginfo._sifields._kill 
$2 = {si_pid = 3926, si_uid = 1001} 

Это на Linux. Это означает, что pid 3926 отправил сигнал, и пользователь, который его отправил, равен 1001.

Смежные вопросы