Unix GDB Cheat Sheet

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 Debugging

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 …

Leave a Reply

Your email address will not be published. Required fields are marked *