After reading "Debugging with GDB" by RMS I've made this reference sheet, since I rarely program in Linux I've excluded everything Linux specific:
General Usage | |
file a.out | Load the program a.out |
symbol-file symbol | Load symbol file symbol |
run | Run program |
continue | Execute program until the next breakpoint |
print i | Print variable i |
print i=3 | Change variable i to 3 |
x 0x200 | Print value at 0x200 |
break printf | Set breakpoint at function printf |
info breakpoints | List breakpoints |
delete 2 | Delete breakpoint 2 |
delete | Delete all breakpoints |
info locals | Show variables in stack |
backtrace | Show stack |
info frame | stack info |
list + | Show sourcecode before last printed |
list - | Show sourcecode before last printed |
list func | Show sourcecode around function name func |
list 30 | Show sourcecode around line 30 |
info line func | Get start and end memory addresses of function func |
info line 30 | Get start and end memory addresses of section around line 30 |
disassemble 0x300 0x400 | Disassemble between memory addresses 0x300 and 0x400 |
info registers | Display registers |
info all-registers | Display all registers |
set $rax = 0x5 | Set register rax to 0x5 |
info symbol printf | shows memory location of printf |
info address printf | Shows section of printf |
whatis printf | Gives data type of symbol |
ptype /o struct exstruct | Gives layout and offsets of the struct exstruct |
info scope printf | Show variables within scope of function printf |
info functions | Print all defined functions |
info variables | Print all defined variables |
jump func | Jump to function func |
return 0 | Force function to return 0 |
set $pc-= 1 | Effectively goes back one instruction |
signal 9 | Resume program and send sigkill |
Display | |
layout src | Displays Source window |
layout asm | Displays disassembly window |
layout split | Displays source and disassembly windows |
layout regs | Displays register window |
set disassembly-flavor intel | Set preferred assembly syntax |
OS Development | |
set architecture i8086 | For debugging x86 bootloader code |
set architecture i8086 | For debugging x86 bootloader code |
set architecture i386:x86-64 | For debugging AMD64 code |
target remote localhost:26000 | For connecting to $ qemu-system-x86_64 -gdb tcp::26000 ... |