GDB Intro
Videos
Setup
To have the compiler or assembler output an object file with debugging information, add -g to the command line when compiling or assembling:
gcc -g ... somecode.c
as -g ... somecode.S
Then you can start gdbtui with your executable program:
gdbtui ./program
Generally Relevant
run: start the execution of the program.break 123: set a breakpoint at line 123 of the source. i.e. if execution hits that line, pause before starting that line of code.next: execute to the next line of code, moving into any function called.step: execute to the next line of code, skipping execution of any function called.cont: continue execution (until the next breakpoint/watchpoint or the end of the program).
Some non-command keypresses:
- arrows: move around the source code in the upper pane.
- enter: repeat the last
stepornextcommand, moving another line. - ctrl-P: scroll up to previous commands.
- ctrl-L: redraw the screen.
Relevant to C Code
print x: print the current contents of the variablex.watch x: "watch" the variablex. i.e. wheneverxchanges, pause execution and display the old/new value.backtrace: display the current callback stack.finish: execute until the current function returns (then pause).
Relevant to Assembly
break foo: set a breakpoint at a label in the source file.print (int)x: print the current contents of the memory locationx, treating it as the given type.print $rdi: print a register value. (Note: it's a$not a%.)watch $rdi: watch a register value. (Note: it's a$not a%.)info registers rax: print register contentsinfo registers eflags: print status flags
Updated Tue Aug. 26 2025, 09:14 by ggbaker.