打开APP
userphoto
未登录

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

开通VIP
gdb调试程序之单步调试【三】

断点维护

在gdb中,如果觉得设置的断点已经没有用处了,可以使用delete clair  disable|enable 对断点进行操作

clear         清除所有的已定义的停止点。clear <function>,clear <filename:function>        清除所有设置在函数上的停止点。clear <linenum>,clear <filename:linenum>        清除所有设置在指定行上的停止点。delete [breakpoints] [range...]        删除指定的断点,breakpoints为断点号。如果不指定断点号,则表示删除所有的断点。range 表示断点号的范围(如:3-7)。其简写命令为d。

比删除更好的方法是disable停止点,disable了的停止点,GDB不会删除,当你还需要时,enable即可.

disable [breakpoints] [range...]disable所指定的停止点,breakpoints为停止点号。如果什么都不指定,表示disable所有的停止点。简写命令是dis.enable [breakpoints] [range...]enable所指定的停止点,breakpoints为停止点号。enable [breakpoints] once range...enable所指定的停止点一次,当程序停止后,该停止点马上被GDB自动disable。enable [breakpoints] delete range...enable所指定的停止点一次,当程序停止后,该停止点马上被GDB自动删除。

条件断点维护

在前面一篇文章提到,可以使用b <function_name> if condition 来设置条件断点,当条件成立时,程序自动停止;

同时我们可以使用condition命令来修改条件(只有break和watch命令支持if,catch目前暂不支持if);

condition <bnum> <expression>         修改断点号为bnum的停止条件为expression。condition <bnum>        清除断点号为bnum的停止条件。还有一个比较特殊的维护命令ignore,你可以指定程序运行时,忽略停止条件几次。ignore <bnum> <count>        表示忽略断点号为bnum的停止条件count次。为停止点设置运行命令

我们可以使用gdb提供的command 来为停止点处设置运行命令,即当程序运行到断点处时,会自动运行先前使用command来设置的命令,这样很方便来进行自动化调试;

commands [bnum]... command-list ...end

为断点号bnum指写一个命令列表。当程序被该断点停住时,gdb会依次运行命令列表中的命令。
例如:

break foo if x>0commandsprintf "x is %d\n",xcontinueend

恢复程序运行和单步调试

当程序运行到断点处时,程序被挺住,这时可以使用continue命令使程序继续运行,next或者step命令进行单步跟踪

continue [ignore-count]c [ignore-count]fg [ignore-count]

恢复程序运行,直到程序结束,或是下一个断点到来。ignore-count表示忽略其后的断点次数

step

单步跟踪,如果有函数调用,他会进入该函数。进入函数的前提是,此函数被编译有debug信息,后面可以加count也可以不加,不加表示一条条地执行,加表示执行后面的count条指令,然后再停住

set step-mode,set step-mode on

打开step-mode模式,于是,在进行单步跟踪时,程序不会因为没有debug信息而不停住。这个参数有很利于查看机器码

next 

单步运行count 条指令,count默认值为1

finish

运行程序,直到当前函数完成返回。并打印函数返回时的堆栈地址和返回值及参数值等信息。

until

可以运行程序直到退出循环体

stepi 或 si,nexti 或 ni

单步跟踪一条机器指令!一条程序代码有可能由数条机器指令完成,stepi和nexti可以单步执行机器指令

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
用GDB调试程序(三)
minGW的gdb调试
gdb学习笔记(一) - 但行好事 莫问前程 - JavaEye技术网站
Gdb调试精粹及使用实例
gdb常用命令 — Windows Live
GDB 进行调试 使用心得
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服