!!GDB - GNU debugger
gdb without any arguments automatically uses a.out
C programs should be compiled with -g -Og
To make a program produce a core file for debugging with gdb after-the-fact do:
{{{ulimit -c unlimited}}}
{{{gdb myProgram [core]}}}
| run [[args] | r | run the program
| kill | k | stop program from running
| quit | q | exit debugger
| help | h |
| ^C | | stop / interrupt the program
| continue | c | continue execution
| list | l | show program code
| next | n | go __over__ next line
| step | s | go __into__ next line
| finish | fin | exit stack frame (go __up__)
| print x | p | print value of x
| backtrace | bt | show stack
| frame n | f | change to stack frame n
| info locals | i lo | display local variables
| info args | i ar | display command line arguments
| info frame | i f | stack frame information
!Breakpoints
| break file.c:45 | b | set breakpoint at line 45 of file.c
| break myfun | b | set breakpoint at beginning of myfun()
| info breakpoints | i br | list breakpoints
| disable 2 | | disable breakpoint 2
| clear XXXX | cl | delete breakpoint at location XXXX
| delete nnn | d | delete breakpoint number nnn
When lines are displayed, it is showing the line that is about to be executed, not the line that was just executed.