您当前的位置:首页 > 计算机 > 编程开发 > VC/VC++

有条件断点的设置

时间:12-26来源:作者:点击数:

在此之前,我们已经了解了无条件断点、跟踪点这两种断点,事实上在 Visual Studio 中还有几种常用的断点,在本节我们将一一为大家介绍。

大家有没有碰到这样的情况,在一个循环体中设置断点,假设有一千次循环,我们想在第五百次循环中设置断点,这该怎么办?反正设置断点不断按 F5 继续运行四百九十九次是不可能的。那该怎么办呢?其实我们的断点是可以设置各种各样的条件的,对于上述情况,我们可以对断点的命中次数做一个限制。

我们首先在 Visual Studio 中创建一个工程,并且输入如下代码:

#include <stdio.h>
int main(){
    for ( int i=1 ; i <= 1000 ; i++ ) {
        //TODO:插入计次断点
        printf("我真行!\n");
    }
}

首先,我们在第4行插入断点,分析代码,我们不难得出它会输出 1000 行“我真行!”,那么我们思考一下,在不修改代码的情况下,如何才能让他输出 1499 行“我真行!”呢,其实很简单,我们只要在i 等于500的时候暂停程序,再将变量 i 的值修改为 1 即可,思路很简单,接下来我们就来实现这个命中条件的限制吧。

首先我们用鼠标右键单击第4行的断点图标,在弹出的菜单中选择 命中次数(H) ,接下来会弹出如下图的一个对话框,我们在中间的选择框中选择 “中断,条件是命中次数等于”,我们在右边的编辑框输入 500。

我们点击确定,断点就设置到位了,接下来我们按 F5 运行调试。

我们看到,在输出四百九十九行“我真行!”后,程序进入了中断状态,这是我们注意到自动窗口中的变量 i 的值为 500,接下来我们把这个 i 的值改为 1,点击 继续(C) 继续程序的运行,这样程序就再输出了一千行“我真行!”,然后退出。没错,命中次数限制的使用就是这么简单。

我们再次用鼠标右键单击第4行的断点图标,在弹出的菜单中选择 命中次数(H) ,大家如果有兴趣的话,可以试试中间的选择框中其他的条件选项,使用方法基本一致,这里不再赘述。

接下来我们来了解一下断点触发条件的使用,在 Visual Studio 的调试器中,我们可以对断点设置断点触发条件,这个条件可以引用我们程序中的变量,比如我们程序中有两个变量 a、b ,我们的命中条件可以是 a == b 、 a >= b 、 a != b 甚至是 (a - b)*(a*2 - b) > 0 这样的复杂条件。

下面我们就来试试在 Visual Studio 中插入条件断点吧。我们首先创建一个工程,输入如下代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h> //time函数所在头文件
int main()
{
    int a, b;
    int randNumber;
    srand((unsigned)time(NULL));
    //设置随机数种子,以产生不同随机数
    for (int i = 0; i<50; i++)
    {
        a = rand() % 7; //产生0-6的随机数
        b = rand() % 7; //产生0-6的随机数
        //TODO:在这里插入条件断点: a == b
    }
    return 0;
}

我们让程序运行过程中 a 等于 b 的时候触发断点,首先,我们在第十四行插入断点,然后我们鼠标右键单击左侧的断点图标,在弹出的菜单中选择条件(C),IDE会弹出如下对话框,我们在条件输入框中输入 a==b ,然后在下面选择 为 true ,然后点击确定即可。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门