GDB Manual
这可能是关于GDB使用的最简短的资料,也最不全面,联赛后期写给自己看的(所以英文表达都不很确切),后来就用熟了。发出来给需要的朋友们,最好能打出来一份,用GDB的时候放在边上,不熟的时候瞅一眼,估计就明白了,时间长了,就可以扔掉这个东西啦~
[gdb manual]
[compile with g++ or gcc]
g++ -g prog.cpp -o prog
gcc -g prog.c -o prog
[start gdb with prog]
gdb prog
[read symbol from file]
file prog.cpp
[run program]
run
r
run <input.txt >output.txt
[kill program]
kill
k
[program arguments]
set args ARG_LIST
show args
[environment variables]
set env VAR_NAME [=VALUE]
show env [VAR_NAME]
[working directory]
cd PATH
pwd
pw
[breakpoints]
break
b
b [+/-]OFFSET
b LINE_NUM
b FUNC_NAME
info breakpoints [N]
info break [N]
[watchpoints]
watch EXPR # break when EXPR watched
rwatch EXPR # break when EXPR read
awatch EXPR # break when EXPR accessed
info watchpoints
[control points]
clear
delete
d
d [BREAKPOINTS] [RANGE...]
disable
dis
dis [BREAKPOINTS] [RANGE...]
enable [BREAKPOINTS] [RANGE...]
[auto display]
display EXPR
undisplay
delete display
info display
disable display
enable display
[trace]
step # step in
next # step over
continue
c
set step-mode on/off
finish
until
u
[function calling stack info]
backtrace
bt [N]
frame
f [N]
info f
up [N]
down [N]
[list source codes]
list
l
l – # show previous line
l [+/-]OFFSET
l LINE_NUM
list FIRST,LAST
set listsize
show listsize
[print]
print
p
p EXPR
p VAR_NAME=VALUE # modify variable
p/xduotacf … # print formats
# x : hex ; d : dec ; u : unsigned
# o : oct ; t : bin ; a : hex
# c : char ; f : float
[print & *@ -- address shifting]
// for c code:
int *arr= (int*)malloc(len*sizeof(int));
// in gdb:
(gdb) p *arr@len
$1 = {2, 4, 6, 8, 10}
[printf]
// an example is enough:
printf “x is %d\n”,x
[pretty print]
set print pretty on/off
print pretty
[jump & return & call]
jump LINE_NUM
jump [+/-]OFFSET
return
call
[other]
set language
show language
info frame
info source