$ gcc -ggdb s1.c s2.c s3.c -o myprog
$ gdb myprog
(gdb) run --arg1 --arg2
GDB запустит программу в обычном режиме, когда произойдет сбой сегментации, GDB вернется к своему приглашению, и это будет почти так же, как при запуске GDB с файлом ядра.Основное отличие состоит в том, что есть некоторые вещи, которые вы не можете сделать / распечатать с помощью файла ядра, который вы можете сделать, когда программа потерпела крах внутри GDB.(Вы можете использовать print
, например, для вызова некоторых функций внутри программы.)
Вы также можете присоединиться к уже запущенной программе, используя gdb --pid <the programs pid>
.
Либо с файлом ядра.или одним из описанных выше способов, когда у вас появляется приглашение GDB после сбоя, введите backtrace
(или bt
для краткости), и GDB покажет вам стек во время сбоя, включая имена файлов и строкуномера каждого звонка и текущей выполняемой линии.