当前位置: 首页 > news >正文

编程技能:调试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

在写作本节文章的时候,我还没有往代码仓库里面传入多少代码,所以,图1中的项目很少。等到你看到本篇文章的时候,很有可能,里面的代码已经是很多很多了。

我们在网页中找到红色框线所示的文件夹,单击进入这个文件夹,结果如下图所示。

图2

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

图3

这是 Gitee 里面展示的部分的调试案例代码,图3中的部分代码,与本节的代码块中的代码是一样的。

你可以将代码仓库给下载回去,并在相应的路径中,找到【code1.c】。

到了这里,本节所使用的调试案例代码的获取方法,我就讲完了。我接着往下讲。

二.    建立工程

请大家自行建立 C/C++ 项目,最好是使用 VS2019 来建立项目。

如果还不会用 VS2019 来建立 C/C++ 项目的话,请参考如下链接所示的文章。

Windows编程:用 VS2019 编写C语言程序-CSDN博客

在本节,我需要你将第一分节中的代码块中的代码,设置为 C/C++ 项目中的 main.c 中的源代码。并自行编译生成。

三.    启动调试

首先呢,我们在代码的第12行的某一个位置,点击一下鼠标左键,然后按下功能键 F9,以设置一个断点在第 12 行。

然后呢,我们依次点击【调试】,【开始调试】菜单命令,以启动调试。过程如下。

图4
图5
图6

到了这里,我们就启动调试了。

四.    启用与禁用断点

在本分节,我们来认识一下启用与禁用断点。

在上一分节的启动调试的基础上,我们可以在【调试】菜单项下面,看到一个名为【禁用所有断点】的菜单,如下图所示。

图7

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

图8

由图6 可知,当启动调试的时候,黄色小箭头是停在第12 行上面的。而由图8 可知,【逐过程】指令的执行,使得程序将第 12 行执行完毕,并停在了第 13 行。

这个【逐过程】指令的执行,算是一种铺垫工作。

接下来,我们尝试着来了解禁用断点的效果。

我们依次点选【调试】,【禁用所有断点】菜单命令,以尝试执行一次禁用断点的指令。结果如下。

图9

图8 和图 9 的区别,应该还是很明显的。两个图里面,黄色小箭头都是停在了 13 行,并且在第 12 行都有着红色圆点。区别在于,图 8 的红色圆点为实心,而图 9 的红色圆点为空心。

红色圆点为断点标记。当红色圆点为实心时,表明此断点处于启用的状态。而当红色圆点为空心时,表明此断点处于禁用的状态。

在上面,我们执行了【禁用所有断点】的指令。执行完了此菜单命令以后,我们再来查看【调试】菜单项下面的东西。

图10

在图7里面,在【禁用所有断点】的上面,是【删除所有断点】子菜单项,它的下面是【IntelliTrace】子菜单项。而在图10 里面,夹在【删除所有断点】和【IntelliTrace】子菜单项之间的东西,变为了【启用所有断点】。

【启用所有断点】和【禁用所有段断点】子菜单项,位于同一个子菜单项的位置。当程序中的断点处于启用状态时,也就是,当断点标记处于实心状态时,【调试】菜单里面,会有着【禁用所有断点】子菜单项。

当程序中的断点处于禁用状态时,也就是,当断点标记处于空心状态时,【调试】菜单里面,会有着【启用所有断点】子菜单项。

当断点处于启用状态时,程序执行到断点所在行的时候,会停在这一断点所在行。而当断点处于禁用状态时,程序执行到断点所在行的时候,不会停下来,而是会继续运行着。

由第三分节可知,当时,第12行有一个启用着的断点,而我们在执行了【调试 -> 开始调试】菜单命令时,程序的确是停在了第12行。

现在,第12行的断点标记处于空心状态,也就是处于禁用的状态。

我们先来执行一下【调试 -> 停止调试】菜单命令,并且关闭控制台黑窗口。

目前,程序中仅有一个断点,它位于第12行,但是,它处于禁用的状态。在这种情况下,我们来执行一下【调试 -> 开始调试】菜单命令,结果如下所示。

图11
图12

当程序中存在着断点,并且断点处于禁用状态的时候,那么,它和没有断点的效果是一样的。程序执行到被禁用的断点所在行的时候,不会停下来,与没有断点是一样的。

接下来,我们先执行一次【调试 -> 删除所有断点】调试指令,并在弹出的对话框中单击【是】选项,然后关闭控制台黑窗口。

结束语

本节的内容,应该是不难的。希望大家能够学好本节的内容。

专栏导航

本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。

(一)WIn32 专栏导航

上一篇:编程技能:调试06,监视选项卡

回到目录

下一篇:无

(二)MFC 专栏导航

上一篇:编程技能:调试06,监视选项卡

回到目录

下一篇:无

相关文章:

  • string容器训练算法题
  • 容器修仙传 我的灵根是Pod 第10章 心魔大劫(RBAC与SecurityContext)
  • 图像预处理-霍夫变换
  • 优先级队列和仿函数的讲解(底层实现)
  • QT构建即时通讯应用--WebSocket全面解析与实战指南
  • Nginx 路径反向代理实战:多服务分发配置与排错指南(CentOS 环境)
  • C语言编程--15.四数之和
  • 怎样记忆Precision、Recall?
  • 多头注意力
  • 海思ISP调试记录
  • 使用vue2开发一个在线旅游预订平台-前端静态网站项目练习
  • 第16章:MCP服务端项目开发实战:对话系统
  • 优考试V4.20机构版【可注册】
  • 类模板 (Class Templates)
  • 负环-P3385-P2136
  • 【Microsoft Store 中的软件推荐】
  • 4月24号
  • 乡村治理数字化平台:信息技术赋能乡村振兴的深度探索
  • 西甲001:奥萨苏纳VS塞维利亚
  • 手机访问电脑端Nginx服务器配置方式
  • 证券时报:落实“非禁即入” ,让创新活力充分涌流
  • 3岁男童疑遭父亲虐待,杭州警方:在异地发生,嫌疑人已被抓
  • 民生访谈|马拉松中签率低何解?预付费监管落实得如何?市体育局回应
  • 纳斯达克中国金龙指数涨2.93%,金价油价大幅下挫
  • 浙江严禁中小学节假日集体补课,省市县教育部门公布举报电话
  • 习近平同阿塞拜疆总统阿利耶夫会谈