版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38954835/article/details/84668884
gdb调试基本方法
gdb调试常用命令
命令 |
命令缩写 |
命令说明 |
list |
l |
显示多行源代码 |
break |
b |
设置断点 |
info |
i |
描述程序的状态 |
display |
disp |
跟踪查看某个变量 |
print |
p |
打印内部变量值 |
frame |
f |
查看栈帧 |
backtrace |
bt |
查看函数调用信息 |
watch |
|
监视变量值的变化 |
set var name=v |
|
设置变量的值 |
start |
|
执行代码(停在main的第一条语句) |
run |
r |
运行代码 |
step |
s |
执行下一条语句(会进入调用函数) |
next |
n |
执行下一条语句(不进入调用函数) |
continue |
c |
继续运行程序 |
kill |
k |
终止正在调试的程序 |
file |
|
加载需要调试的程序 |
quit |
q |
退出 |
在GDB中运行程序
命令 |
说明 |
例子 |
gdb |
启动gdb |
gdb test |
set args |
设置运行时参数 |
set args 12 13 |
show args |
查看运行参数 |
|
path
|
设置程序运行路径 |
|
show paths |
查看程序运行路径 |
|
set environment varname [= value] |
设置环境变量 |
set env USER=ww |
show environment [varname] |
查看环境变量 |
|
cd
|
切换路径 |
|
pwd |
显示当前路径 |
|
run > outfile |
重定向控制程序输出 |
|
断点(BreakPoint)
命令 |
说明 |
例子 |
break [function] |
进入指定函数时停住 |
c++ calss::function/function(type,type) |
break [filename:function] |
在源文件filename的function函数入口处停住 |
|
break [linenum] |
指定行号停住 |
|
break [filename:linenum] |
在源文件filename的linenum行停住 |
|
break [+offset] |
当前行的前offset行停住 |
|
break [-offset] |
当前行的后offset行停住 |
|
break … if condition |
满足条件停住 |
|
info breakpoints [n] |
查看断点信息 |
|
info break [n] |
查看断点信息 |
|
clear |
清除所有已定义的停止点 |
|
clear [function] |
清除函数所有已定义的停止点 |
|
clear [filename:function] |
清除函数所有已定义的停止点 |
|
clear [linenum] |
清除指定行的停止点 |
|
clear [filename:linenum] |
清除指定行的停止点 |
|
delete [breakpoints] [range…] |
删除指定的停止点 |
|
disable [breakpoints] [range…] |
失能指定的停止点 |
|
enable [breakpoints] [range…] |
使能指定的停止点 |
|
enable [breakpoints] once [range…] |
使能指定的停止点一次后自动disable |
|
enable [breakpoints] delete [range…] |
使能指定的停止点一次后自动删除 |
|
观察点(WatchPoint)
命令 |
说明 |
例子 |
watch [expr] |
为expr设置观察点 |
|
rwatch [expr] |
expr被读时,停止程序 |
|
awatch [expr] |
expr被读或写时,停止程序 |
|
info watchpoints |
列出当前所有观察点 |
|
运行/单步
命令 |
说明 |
例子 |
continue/c/fg [ignor-count] |
恢复程序运行 |
|
step [count] |
会进入函数调用 |
|
next [count] |
不会进入函数调用 |
|
set step-mode on |
打开step-mode模式 |
|
set step-mode off |
关闭step-mode模式 |
|
finish |
运行程序至当前函数完成返回,并打印返回时的堆栈地址、返回值、参数值等信息 |
|
until/u |
运行程序至退出循环体 |
|
stepi/si |
单步执行机器指令 |
|
nexti/ni |
单步执行机器指令 |
|
display /i $pc |
打开汇编代码 |
|
查看堆栈信息
命令 |
说明 |
例子 |
backtrace/bt [n] |
打印栈信息 |
|
info args |
打印出当前函数的参数名及值 |
|
info locals |
打印当前函数中所有局部变量及值 |
|
查看源程序
查看运行数据