Почему точка останова не устанавливается
Точка останова устанавливается , но не срабатывает, потому что ...
а почему я не получил стек?
... вы явно отлаживаете неправильный процесс.
С set follow-fork-mode child
GDB будет следовать за первым дочерним элементом, которого вы создадите. Возможно, вы создаете более одного?
Один из способов отладки - установить обработчик SIGSEGV
, используя signal
или sigaction
.
В обработчике сделайте это:
void handler(int signo)
{
int i = 1;
fprintf(stderr, "pid=%d, got signal=%d\n", getpid(), signo);
while (i) { }
}
Как только вы увидите напечатанное сообщение, в другом окне:
gdb /proc/<pid>/exe <pid>
(gdb) where