Ответ 1
Дочерний процесс наследует обработчики сигналов от родителя, но не отложенный сигнал.
После форкирования попробуйте установить обработчик сигнала для SIGTRAP
в месте в коде, где дочерний процесс выполняется после форкирования. Если вы не обрабатываете SIGTRAP
, действие по умолчанию состоит в том, что дочерний элемент завершен.
Если вы хотите отлаживать дочерний процесс, вы должны использовать follow-fork-mode
.
Вы должны установить режим, используя
set follow-fork-mode child
Однако теперь можно отлаживать только дочерний элемент, а родительский флажок не установлен.
Существует еще один грязный способ отладки дочернего процесса.
После выполнения fork()
поместите вызов sleep()
в код, в котором выполняется дочерний процесс, получите PID дочернего элемента с помощью утилиты ps
, затем добавьте PID.
attach <PID of child process>
Теперь вы можете отлаживать дочерний процесс, как и любой другой процесс.
После отладки вы можете отсоединить PID, используя
detach