GDB调试之调试断点管理(三)
一、为代码行设置断点
比如说在文件main.cpp的38行和46行分别设置一个断点:
使用run命令继续向下执行,会在38行断点处停下来,接着使用c命令继续执行,将会在46行断点出停下来。
二、为函数设置断点
比如说为函数testfun()设置断点:
从上面可以看出,在两处设置了断点,因为代码中有两个testfun()函数;所以在为函数设置断点时,会把所有同名函数都设置上断点,这就是为函数设置断点的功能。如果有多个函数而且函数名是一样的,无论参数是否相同,返回值是否相同,是虚函数也好,普通函数也好,只要函数名称相同,那么执行"b 函数名"这个命令,会把所有的名字的函数都设置上断点。
继续向下执行,程序分别会在27行和32行处依次停下来。
三、为满足正则表达式的函数设置断点
从上述的代码中可以看出,无论是在main.cpp文件中还是在student.cpp文件中,有很多函数中都包含"work"关键字,如果现在想把所有带work关键字的函数都设置上断点,那么就可以用rb命令。
四、设置条件断点
当满足一定条件的时候,这个断点才会命中,如果不满足条件,即使设置了断点,程序在执行到断点处也不会停下来的。
上述代码中的sum()函数中有一个for循环,假设想在14行设置一个断点,那么每执一次循环,断点就会在14行中断,如果我们只想在i等于某个值的时候中断下来,则需要设置条件断点。比如说只有当 i=90的时候才在14行中断,执行命令" b main.cpp:14 if i==90"即可。查看设置的断点"stop only if i==90",可以看出只有i=90的时候断点才会中断。
现在我们来执行程序并查看i的值:
条件断点除了可以在循环中设置断点外, 其他地方也有很多地方可以设置条件,比如说是一个字符的值或者别的变量达到某一个值的时候,都可以使用条件断点。
五、设置临时断点
临时断点表示这个断点是临时性的,临时断点一旦中断下来就不会起效果了,换句话说就是只会执行一次。命中一次之后就不会在命中,哪怕这个临时断点设置在循环中的,它也只会执行一次。
我们在for循环中设置了一个临时断点,当程序执行到14行这个断点后就会向普通断点一样中断,但是当循环再次执行到14行的时候,临时断点已经被删除了,所以不会再中断下来,使用命令查看设置的断点,可以看出已经没有任何断点存在了。
六、查看/禁用/删除断点
1.查看所有的断点
2.禁用、启用断点
3.删除断点
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)