gdb调试基本方法

gdb调试基本方法

gdb调试常用命令

命令命令缩写命令说明
listl显示多行源代码
breakb设置断点
infoi描述程序的状态
displaydisp跟踪查看某个变量
printp打印内部变量值
framef查看栈帧
backtracebt查看函数调用信息
watch 监视变量值的变化
set var name=v 设置变量的值
start 执行代码(停在main的第一条语句)
runr运行代码
steps执行下一条语句(会进入调用函数)
nextn执行下一条语句(不进入调用函数)
continuec继续运行程序
killk终止正在调试的程序
file 加载需要调试的程序
quitq退出

在GDB中运行程序

命令说明例子
gdb 启动gdbgdb 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打印当前函数中所有局部变量及值 

查看源程序

在这里插入图片描述

查看运行数据

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值