I have been asked in an interview how can you debug segmentation fault in C program using GDB.
I told them we can compile our program with -g
option so as it add debugging information to binary file and can read core dump file but then interviewer told me if he we have 3 to 4 files compiled together but one of them causing segmentation fault then how do we debug in GDB?
Best Answer
GDB will run the program as normal, when the segmentation fault occurs GDB will drop back to its prompt and it will be almost the same as running GDB with a core file. The major difference is there are some things you cannot do/print with a core file that you can when the program has crashed inside of GDB. (You can use
print
to call some functions inside the program, for example.)You can also attach to an already running program using
gdb --pid <the programs pid>
.Either with a core file or with one of the methods above, when you have the GDB prompt after the crash, type
backtrace
(orbt
for short) and GDB will show you the stack at the time of the crash, including the file names and line numbers of each call and the currently executing line.