编程技能:调试07,启动和禁用断点
专栏导航
本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。
(一)WIn32 专栏导航
上一篇:编程技能:调试06,监视选项卡
回到目录
下一篇:无
(二)MFC 专栏导航
上一篇:编程技能:调试06,监视选项卡
回到目录
下一篇:无
本节前言
在前面的两节,我们讲解了调试输出窗口中的三个选项卡,自动窗口,局部变量和监视1 。
本节呢,我打算讲解断点的启用和禁用。
在学习本节之前,你需要已掌握前面的几节知识,需要你已经掌握了【逐过程】,【逐语句】,【切换断点】,【开始调试】等等的调试指令。如果,你还不知道这些个调试指令,那么,你可以参考下面的几个文章链接。
编程技能:调试02,设置断点与删除断点-CSDN博客
编程技能:调试03,逐过程命令与退出调试-CSDN博客
编程技能:调试04,逐语句命令-CSDN博客
在确保你已经了解了前面几节所讲的调试指令的基本概念以后,你可以接着往下学习。
一. 本节代码
#include <stdio.h>int calcu01(int x, int y);
int calcu02(int x, int y);
int calcu03(int x, int y);int main(void)
{int a, b, res01, res02, res03;int res;a = 10;b = 20;a++;res01 = calcu01(a, b);res02 = calcu02(a, b);res03 = calcu03(a, b);res = res01;res += res02;res += res03;return 0;
}int calcu01(int x, int y)
{int res;res = x + y;res += x;res *= y;return res;
}int calcu02(int x, int y)
{int res;res = 2 * x;res *= y;res += y;return res;
}int calcu03(int x, int y)
{int res;res = x * x * x;res -= y;res /= y;return res;
}
这就是本节所用到的代码了。代码的行数有点多,不过,并不难。相信大家很容易理解其功能。
为了方便查找和使用,我将这样的代码放在了 win32 专栏与 mfc 专栏的 Gitee 代码仓库里面了。网址如下所示。
Gitee 网址:Win32 教学课件
Gitee 网址:MFC 教学课件
两个代码仓库里面,关于本节所述的调试案例代码的路径,都是一样的。
在正式使用 Gitee 的功能之前,你可能会需要首先注册账号,如果还没有注册过 Gitee 的账号的,你可以前往下面的两个链接所示的文章,了解 Gitee 的基本使用方法。
WIn32 笔记:本专栏课件-CSDN博客
MFC笔记:本专栏课件-CSDN博客
在了解了 Gitee 的基本使用方法的前提下,你可以点击如下所示的两个链接之一。
Gitee 网址:Win32 教学课件
Gitee 网址:MFC 教学课件
点开了链接以后,来到如下所示的页面,在这里,我以 MFC 专栏课件的页面为例。

在写作本节文章的时候,我还没有往代码仓库里面传入多少代码,所以,图1中的项目很少。等到你看到本篇文章的时候,很有可能,里面的代码已经是很多很多了。
我们在网页中找到红色框线所示的文件夹,单击进入这个文件夹,结果如下图所示。

在我写作本文的时候,只在【调试案例代码】文件夹里面传入了【code1.c】一个源文件。等到你学习本篇内容的时候,有可能,我已经新增了一点源文件。别管新增了多少,你需要找到的,是这个【code1.c】,找到了它以后,单击它,然后呢,结果如下图所示。

这是 Gitee 里面展示的部分的调试案例代码,图3中的部分代码,与本节的代码块中的代码是一样的。
你可以将代码仓库给下载回去,并在相应的路径中,找到【code1.c】。
到了这里,本节所使用的调试案例代码的获取方法,我就讲完了。我接着往下讲。
二. 建立工程
请大家自行建立 C/C++ 项目,最好是使用 VS2019 来建立项目。
如果还不会用 VS2019 来建立 C/C++ 项目的话,请参考如下链接所示的文章。
Windows编程:用 VS2019 编写C语言程序-CSDN博客
在本节,我需要你将第一分节中的代码块中的代码,设置为 C/C++ 项目中的 main.c 中的源代码。并自行编译生成。
三. 启动调试
首先呢,我们在代码的第12行的某一个位置,点击一下鼠标左键,然后按下功能键 F9,以设置一个断点在第 12 行。
然后呢,我们依次点击【调试】,【开始调试】菜单命令,以启动调试。过程如下。



到了这里,我们就启动调试了。
四. 启用与禁用断点
在本分节,我们来认识一下启用与禁用断点。
在上一分节的启动调试的基础上,我们可以在【调试】菜单项下面,看到一个名为【禁用所有断点】的菜单,如下图所示。

接下来,我们按一次键盘上的功能键 F10,以执行一次【逐过程】指令,结果如下。

由图6 可知,当启动调试的时候,黄色小箭头是停在第12 行上面的。而由图8 可知,【逐过程】指令的执行,使得程序将第 12 行执行完毕,并停在了第 13 行。
这个【逐过程】指令的执行,算是一种铺垫工作。
接下来,我们尝试着来了解禁用断点的效果。
我们依次点选【调试】,【禁用所有断点】菜单命令,以尝试执行一次禁用断点的指令。结果如下。

图8 和图 9 的区别,应该还是很明显的。两个图里面,黄色小箭头都是停在了 13 行,并且在第 12 行都有着红色圆点。区别在于,图 8 的红色圆点为实心,而图 9 的红色圆点为空心。
红色圆点为断点标记。当红色圆点为实心时,表明此断点处于启用的状态。而当红色圆点为空心时,表明此断点处于禁用的状态。
在上面,我们执行了【禁用所有断点】的指令。执行完了此菜单命令以后,我们再来查看【调试】菜单项下面的东西。

在图7里面,在【禁用所有断点】的上面,是【删除所有断点】子菜单项,它的下面是【IntelliTrace】子菜单项。而在图10 里面,夹在【删除所有断点】和【IntelliTrace】子菜单项之间的东西,变为了【启用所有断点】。
【启用所有断点】和【禁用所有段断点】子菜单项,位于同一个子菜单项的位置。当程序中的断点处于启用状态时,也就是,当断点标记处于实心状态时,【调试】菜单里面,会有着【禁用所有断点】子菜单项。
当程序中的断点处于禁用状态时,也就是,当断点标记处于空心状态时,【调试】菜单里面,会有着【启用所有断点】子菜单项。
当断点处于启用状态时,程序执行到断点所在行的时候,会停在这一断点所在行。而当断点处于禁用状态时,程序执行到断点所在行的时候,不会停下来,而是会继续运行着。
由第三分节可知,当时,第12行有一个启用着的断点,而我们在执行了【调试 -> 开始调试】菜单命令时,程序的确是停在了第12行。
现在,第12行的断点标记处于空心状态,也就是处于禁用的状态。
我们先来执行一下【调试 -> 停止调试】菜单命令,并且关闭控制台黑窗口。
目前,程序中仅有一个断点,它位于第12行,但是,它处于禁用的状态。在这种情况下,我们来执行一下【调试 -> 开始调试】菜单命令,结果如下所示。


当程序中存在着断点,并且断点处于禁用状态的时候,那么,它和没有断点的效果是一样的。程序执行到被禁用的断点所在行的时候,不会停下来,与没有断点是一样的。
接下来,我们先执行一次【调试 -> 删除所有断点】调试指令,并在弹出的对话框中单击【是】选项,然后关闭控制台黑窗口。
结束语
本节的内容,应该是不难的。希望大家能够学好本节的内容。
专栏导航
本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。
(一)WIn32 专栏导航
上一篇:编程技能:调试06,监视选项卡
回到目录
下一篇:无
(二)MFC 专栏导航
上一篇:编程技能:调试06,监视选项卡
回到目录
下一篇:无