Gdb

From miki
Jump to navigation Jump to search

References

Compile with debug symbols

  • Option -g:
gcc -g program.c           # -g : debug symbols

GDB invocation

gdb a.out
gdb a.out core.1234

GDB commands

help
Get help on commands
run [ARGS]
Start debugged program. Arguments may include wildcards (*) and redirections (<, <<...)
backtrace [COUNT]
bt [COUNT]
where [COUNT]
Print backtrace of all stack frames, or innermost (outermost) COUNT frames if COUNT>0 (COUNT<0)
frame [FRAME]
Select and print stack frame
print VAR
Print value of variable VAR
kill
Kill current program
break FILELINE
Insert a breakpoint at file FILE, line LINE
next
Step to next instruction

GDB examples

Simple Segmentation Fault Example

(From [1])

Example program segfault.c:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
  char *buf;

  buf = malloc(1<<31);

  fgets(buf, 1024, stdin);
  printf("%s\n", buf);

  return 1;
}
Compile and launch gdb:
gcc -g segfault.c
gdb a.out

The debug session

run
backtrace
frame 3
print buf
kill
break segfault.c:8
run
print buf
next
print buf