GDB cheat sheet
GDB commands by function - simple guide | |
--------------------------------------- | |
More important commands have a (*) by them. | |
Startup | |
% gdb -help print startup help, show switches | |
*% gdb object normal debug | |
*% gdb object core core debug (must specify core file) | |
%% gdb object pid attach to running process | |
% gdb use file command to load object | |
Help | |
*(gdb) help list command classes | |
(gdb) help running list commands in one command class | |
(gdb) help run bottom-level help for a command "run" | |
(gdb) help info list info commands (running program state) | |
(gdb) help info line help for a particular info command | |
(gdb) help show list show commands (gdb state) | |
(gdb) help show commands specific help for a show command | |
Breakpoints | |
*(gdb) break main set a breakpoint on a function | |
*(gdb) break 101 set a breakpoint on a line number | |
*(gdb) break basic.c:101 set breakpoint at file and line (or function) | |
*(gdb) info breakpoints show breakpoints | |
*(gdb) delete 1 delete a breakpoint by number | |
(gdb) delete delete all breakpoints (prompted) | |
(gdb) clear delete breakpoints at current line | |
(gdb) clear function delete breakpoints at function | |
(gdb) clear line delete breakpoints at line | |
(gdb) disable 2 turn a breakpoint off, but don't remove it | |
(gdb) enable 2 turn disabled breakpoint back on | |
(gdb) tbreak function|line set a temporary breakpoint | |
(gdb) commands break-no ... end set gdb commands with breakpoint | |
(gdb) ignore break-no count ignore bpt N-1 times before activation | |
(gdb) condition break-no expression break only if condition is true | |
(gdb) condition 2 i == 20 example: break on breakpoint 2 if i equals 20 | |
(gdb) watch expression set software watchpoint on variable | |
(gdb) info watchpoints show current watchpoints | |
Running the program | |
*(gdb) run run the program with current arguments | |
*(gdb) run args redirection run with args and redirection | |
(gdb) set args args... set arguments for run | |
(gdb) show args show current arguments to run | |
*(gdb) cont continue the program | |
*(gdb) step single step the program; step into functions | |
(gdb) step count singlestep \fIcount\fR times | |
*(gdb) next step but step over functions | |
(gdb) next count next \fIcount\fR times | |
*(gdb) CTRL-C actually SIGINT, stop execution of current program | |
*(gdb) attach process-id attach to running program | |
*(gdb) detach detach from running program | |
*(gdb) finish finish current function's execution | |
(gdb) kill kill current executing program | |
Stack backtrace | |
*(gdb) bt print stack backtrace | |
(gdb) frame show current execution position | |
(gdb) up move up stack trace (towards main) | |
(gdb) down move down stack trace (away from main) | |
*(gdb) info locals print automatic variables in frame | |
(gdb) info args print function parameters | |
Browsing source | |
*(gdb) list 101 list 10 lines around line 101 | |
*(gdb) list 1,10 list lines 1 to 10 | |
*(gdb) list main list lines around function | |
*(gdb) list basic.c:main list from another file basic.c | |
*(gdb) list - list previous 10 lines | |
(gdb) list *0x22e4 list source at address | |
(gdb) cd dir change current directory to \fIdir\fR | |
(gdb) pwd print working directory | |
(gdb) search regexpr forward current for regular expression | |
(gdb) reverse-search regexpr backward search for regular expression | |
(gdb) dir dirname add directory to source path | |
(gdb) dir reset source path to nothing | |
(gdb) show directories show source path | |
Browsing Data | |
*(gdb) print expression print expression, added to value history | |
*(gdb) print/x expressionR print in hex | |
(gdb) print array[i]@count artificial array - print array range | |
(gdb) print $ print last value | |
(gdb) print *$->next print thru list | |
(gdb) print $1 print value 1 from value history | |
(gdb) print ::gx force scope to be global | |
(gdb) print 'basic.c'::gx global scope in named file (>=4.6) | |
(gdb) print/x &main print address of function | |
(gdb) x/countFormatSize address low-level examine command | |
(gdb) x/x &gx print gx in hex | |
(gdb) x/4wx &main print 4 longs at start of \fImain\fR in hex | |
(gdb) x/gf &gd1 print double | |
(gdb) help x show formats for x | |
*(gdb) info locals print local automatics only | |
(gdb) info functions regexp print function names | |
(gdb) info variables regexp print global variable names | |
*(gdb) ptype name print type definition | |
(gdb) whatis expression print type of expression | |
*(gdb) set variable = expression assign value | |
(gdb) display expression display expression result at stop | |
(gdb) undisplay delete displays | |
(gdb) info display show displays | |
(gdb) show values print value history (>= gdb 4.0) | |
(gdb) info history print value history (gdb 3.5) | |
Object File manipulation | |
(gdb) file object load new file for debug (sym+exec) | |
(gdb) file discard sym+exec file info | |
(gdb) symbol-file object load only symbol table | |
(gdb) exec-file object specify object to run (not sym-file) | |
(gdb) core-file core post-mortem debugging | |
Signal Control | |
(gdb) info signals print signal setup | |
(gdb) handle signo actions set debugger actions for signal | |
(gdb) handle INT print print message when signal occurs | |
(gdb) handle INT noprint don't print message | |
(gdb) handle INT stop stop program when signal occurs | |
(gdb) handle INT nostop don't stop program | |
(gdb) handle INT pass allow program to receive signal | |
(gdb) handle INT nopass debugger catches signal; program doesn't | |
(gdb) signal signo continue and send signal to program | |
(gdb) signal 0 continue and send no signal to program | |
Machine-level Debug | |
(gdb) info registers print registers sans floats | |
(gdb) info all-registers print all registers | |
(gdb) print/x $pc print one register | |
(gdb) stepi single step at machine level | |
(gdb) si single step at machine level | |
(gdb) nexti single step (over functions) at machine level | |
(gdb) ni single step (over functions) at machine level | |
(gdb) display/i $pc print current instruction in display | |
(gdb) x/x &gx print variable gx in hex | |
(gdb) info line 22 print addresses for object code for line 22 | |
(gdb) info line *0x2c4e print line number of object code at address | |
(gdb) x/10i main disassemble first 10 instructions in \fImain\fR | |
(gdb) disassemble addr dissassemble code for function around addr | |
History Display | |
(gdb) show commands print command history (>= gdb 4.0) | |
(gdb) info editing print command history (gdb 3.5) | |
(gdb) ESC-CTRL-J switch to vi edit mode from emacs edit mode | |
(gdb) set history expansion on turn on c-shell like history | |
(gdb) break class::member set breakpoint on class member. may get menu | |
(gdb) list class::member list member in class | |
(gdb) ptype class print class members | |
(gdb) print *this print contents of this pointer | |
(gdb) rbreak regexpr useful for breakpoint on overloaded member name | |
Miscellaneous | |
(gdb) define command ... end define user command | |
*(gdb) RETURN repeat last command | |
*(gdb) shell command args execute shell command | |
*(gdb) source file load gdb commands from file | |
*(gdb) quit quit gdb |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment