Stuff about GNU Debugger (AKA gdb).
Usage patterns
Run a program w/ arguments:
gdb --args ${PROGRAM_NAME} ${ARGUMENTS}
to automatically start debugging, put commands into a file, including breakpoints if you want them. E.g.:
breakpoint main.cpp:1 run
and then execute gdb with -x:
gdb -x ${COMMANDS_FILE} --args ${PROGRAM_NAME} ${ARGUMENTS}
Quick reference
List all variables in current context: info locals if at a breakpoint, or bt full if at a breakpoint
generate-core-file to generate a coredump. Be aware of this bug on RHEL 7.x, for which the workaround is info threads before creating the coredump.