打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
gdb使用方法简介
转自:http://www.cnblogs.com/rosesmall/archive/2012/04/13/2445300.html
gdb使用方法简介
编译时必须加上参数-g ,例:g++ -g temp.cpp -o temp.通过Gcc编译生成可执行文件才能用Gdb进行调试。
进入gdb界面:gdb temp. 提示符变成(gdb)
(1)查看文件
在Gdb中键入”l”(list)就可以查看所载入的文件
(2)设置断点
只需在”b”后加入对应的行号即可(这是最常用的方式,另外还有其他方式设置断点)。如下所示:
(gdb)b 6
代码运行到第五行之前暂停(并没有运行第五行)。
(3)查看断点情况
(Gdb) info b
(4)运行代码
Gdb默认从首行开始运行代码,可键入”r”(run)即可(若想从程序中指定行开始运行,可在r后面加上行号)。
(5)查看变量值
查看断点处的相关变量值。在Gdb中只需键入”p”+变量值即可,如下所示:
(Gdb) p n
Gdb在显示变量值时都会在对应值之前加上”$N”标记,它是当前变量值的引用标记,所以以后若想再次引用此变量就可以直接写作”$N”,而无需写冗长的变量名。
(6)单步运行
使用命令”n”(next)或”s”(step),它们之间的区别在于:若有函数调用的时候,”s”会进入该函数而”n”不会进入该函数。因此,”s”就类似于VC等工具中的”step in”,”n”类似与VC等工具中的”step over”。
(7)恢复程序运行
使用命令”c”(continue).
在Gdb中,程序的运行状态有“运行”、“暂停”和“停止”三种,其中“暂停”状态为程序遇到了断点或观察点之类的,程序暂时停止运行,而此时函数的地址、函数参数、函数内的局部变量都会被压入“栈”(Stack)中。故在这种状态下可以查看函数的变量值等各种属性。但在函数处于“停止”状态之后,“栈”就会自动撤销,它也就无法查看各种信息了。
Gdb中的命令主要分为以下几类:工作环境相关命令、设置断点与恢复命令、源代码查看命令、查看运行数据相关命令及修改运行参数命令。以下就分别对这几类的命令进行讲解。
1.工作环境相关命令
set args运行时的参数
指定运行时参数,如:set args 2
show args
查看设置好的运行参数
path dir
设定程序的运行路径
show paths
查看程序的运行路径
set enVironment var [=value]
设置环境变量
show enVironment [var]
查看环境变量
cd dir
进入到dir目录,相当于shell中的cd命令
pwd
显示当前工作目录
shell command
运行shell的command命令
2.设置断点与恢复命令
info b
查看所设断点
break 行号或函数名 <条件表达式>
设置断点
tbreak 行号或函数名 <条件表达式>
设置临时断点,到达后被自动删除
delete [断点号]
删除指定断点,其断点号为”info b”中的第一栏。若缺省断点号则删除所有断点
disable [断点号]]
停止指定断点,使用”info b”仍能查看此断点。同delete一样,省断点号则停止所有断点
enable [断点号]
激活指定断点,即激活被disable停止的断点
condition [断点号] <条件表达式>
修改对应断点的条件
ignore [断点号]<num>
在程序执行中,忽略对应断点num次
step
单步恢复程序运行,且进入函数调用
next
单步恢复程序运行,但不进入函数调用
finish
运行程序,直到当前函数完成返回
c
继续执行函数,直到函数结束或遇到新的断点
由于设置断点在Gdb的调试中非常重要,所以在此再着重讲解一下Gdb中设置断点的方法。
Gdb中设置断点有多种方式:其一是按行设置断点,设置方法在3.5.1节已经指出,在此就不重复了。另外还可以设置函数断点和条件断点,在此结合上一小节的代码,具体介绍后两种设置断点的方法。
① 函数断点
(gdb) b 函数名
② 条件断点
格式为:b 行数或函数名 if 表达式
(gdb) b 8 if i==10
3.Gdb中源码查看相关命令
list <行号>|<函数名>
查看指定位置代码
file [文件名]
加载指定文件
forward-search 正则表达式
源代码前向搜索
reverse-search 正则表达式
源代码后向搜索
dir dir
停止路径名
show directories
显示定义了的源文件搜索路径
info line
显示加载到Gdb内存中的代码
4.Gdb中查看运行数据相关命令
指当程序处于“运行”或“暂停”状态时,可以查看的变量及表达式的信息
print 表达式|变量
查看程序运行时对应表达式和变量的值
x <n/f/u>
查看内存变量内容。其中n为整数表示显示内存的长度,f表示显示的格式,u表示从当前地址往后请求显示的字节数
display 表达式
设定在单步运行或其他情况中,自动显示的对应表达式的内容
5.Gdb中修改运行参数相关命令
Gdb还可以修改运行时的参数,并使该变量按照用户当前输入的值继续运行。它的设置方法为:在单步执行的过程中,键入命令“set 变量=设定值”。这样,在此之后,程序就会按照该设定的值运行了。下面,笔者结合上一节的代码将n的初始值设为4,其代码如下所示:
(Gdb) b 7
Breakpoint 5 at 0x804847a: file test.c, line 7.
(Gdb) r
Starting program: /home/yul/test
The sum of 1-m is 1275
Breakpoint 5, main () at test.c:7
7                  for(i=1; i<=50; i++)
(Gdb) set n=4
(Gdb) c
Continuing.
The sum of 1-50 is 1279
Program exited with code 031.
可以看到,最后的运行结果确实比之前的值大了4。
Gdb的使用切记点:
· 在Gcc编译选项中一定要加入”-g”。
· 只有在代码处于“运行”或“暂停”状态时才能查看变量值。
· 设置断点后程序在指定行之前停止。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
[转]用GDB调试程序
gdb调试技巧
用gdb调试C与C++程序
gdb常用命令 — Windows Live
用GDB调试程序(二)
GDB常用命令
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服