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

Comments are closed.