gdb 条件断点

        条件断点,顾名思义就是有条件才会触发的断点,一般设置此类断点形如:b xxx if xxx,如:

gdb 条件断点_第1张图片

要触发此断点则需要 is_created == 0。打完断点我们也可以用 info b 查看一下当前已经设置的断点信息,如:

gdb 条件断点_第2张图片

断点触发: 

gdb 条件断点_第3张图片 

那这个条件是否可以随意设置呢?其实在我们打断点的时候,gdb 已经帮我们过滤了,如:

gdb 条件断点_第4张图片

当我们随意设置一个条件时,如果在当前上下文中没有的声明或定义的话是无法设置成功的。

所以要设置成功条件,则必须为:

1,参数列表里的参数,如上面的 is_created

2,函数里的变量,如下

gdb 条件断点_第5张图片

3,全局变量,如下 

gdb 条件断点_第6张图片

想想为什么是这样?我想是因为断点是基于栈桢的,那一个栈帧里就包括了函数参数列表及函数里的局部变量,栈帧之外的数据肯定是不可见的,那全局变量当然也是可见的,所以这三者都可以拿来当断点的判断条件。

 

你可能感兴趣的:(GDB,调试,gdb)