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

编程技能:调试01,调试介绍

专栏导航

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

(一)WIn32 专栏导航

上一篇:编程基础:位运算07,右移

回到目录

下一篇:无

(二)MFC 专栏导航

上一篇:编程基础:位运算07,右移

回到目录

下一篇:无

本节前言

在上一节,我们讲解了位运算的右移运算。结束了右移运算的讲解以后,整个的位运算的知识,也就告一段落了。

从本节开始,我们来讲解调试。

调试,大概是在进入正式的 Win32 与 MFC 章节之前,我们所讲解的最后一部分的铺垫知识了。希望大家能够将调试的知识给学好。

一.    调试介绍

调试是什么?

调试可以让程序每次执行一条指令,执行完了以后就停下来。调试也可以连续执行程序指令,直到某条指令将要执行而尚未执行的时候便停下来。

调试可以帮助程序员了解程序的运行情况,排查程序中的逻辑错误。

关于程序中的错误,可以分为两种,一种是语法错误,另一种是逻辑错误。语法错误,这个,编译器或者集成开发环境会帮助我们检查。对于语法错误,发现了以后,我们可以根据编译器的错误提示,找到相应的错误语法,修改了语法错误,重新编译,编译通过了以后,就可以运行程序了。

而另一种错误类型,逻辑错误,它是说,语法上并没有错误,但是呢,程序的逻辑上是有错误的。

(一)排查逻辑错误

我们来看一看下面的代码。

int i;for (i = 0; i < 10; i++)
{if (i = 6){printf("此刻,i 的值为 6\n");}else;
}

在【if (i = 6)】这一行代码里,假定,我们的本意是想要在 i 等于 6 的时候,打印输出一行提示信息。这样一来, if 语句中,写的应该是【if (i == 6)】,等号应该是两个,而不是一个。然而,如果写代码的时候,我们因为粗心,错误地将两个等号写成了一个等号,那么,就会出现逻辑错误了。

出现了这样的逻辑错误以后,代码并未按照我们的设想去执行,而是按照另外的逻辑去执行了。

对于这样的逻辑错误,想要排查并且解决它,我们就需要用调试来予以解决了。

(二)了解程序的运行情况

调试还可以帮助我们了解程序的运行情况。

比如说,可以帮助我们了解,程序在执行完了某一条语句之后,各个局部变量和全局变量的值的变化情况。

对于某些个不太容易理解的程序代码,如果我们想要了解其执行逻辑,了解其功能,我们就可以通过调试的方式,来了解它的运行情况。

二.    本专栏涵盖的调试知识

对于调试,我也不是很擅长。也许,你也并不擅长。

在这里,我设置调试章节,主要是为了,让学习完了 C/C++ 的学习者,对调试有一个初步的了解。至于说,如何让自己成为一个代码调试的高手,那就得靠你自己了。

或许,以后,当我的调试技能更为纯熟的时候,我会专门地建立一个专栏,用来讲解调试知识。而在本专栏里面,我们所讲解的调试知识,仅仅是一些个基础用法,而且只是调试中的一小部分。

调试知识,大概有这样的几个知识点,设置与取消断点,启用与禁用断点,连续运行,逐过程,逐语句,条件断点。

大概,就是这样的几个知识点了。

结束语

在前面的章节里,我在讲解进制和位运算的知识的时候,就觉得很不好讲。其实,到了调试的部分,也是一样的,我同样是觉得不好讲。

不过,既然是已经讲到这儿了,也只好硬着头皮讲下去了。

大家努力学,我也努力讲吧。

专栏导航

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

(一)WIn32 专栏导航

上一篇:编程基础:位运算07,右移

回到目录

下一篇:无

(二)MFC 专栏导航

上一篇:编程基础:位运算07,右移

回到目录

下一篇:无

相关文章:

  • Summary
  • ES和MySQL概念对比
  • 向量数据库
  • 解锁元生代:ComfyUI工作流与云原生后端的深度融合
  • 【设计模式】观察者
  • RabbitMQ 为什么引入 Exchange 的概念, 交换机有什么作用.
  • QML与C++:基于ListView调用外部模型进行增删改查(性能优化版)
  • 【Leetcode-Hot100】最大子数组和
  • 【教程】如何使用Labelimg查看已经标注好的YOLO数据集标注情况
  • C++| 深入剖析std::list底层实现:链表结构与内存管理机制
  • VTK知识学习(51)- 交互与Widget(三)
  • 小程序获取用户总结(全)
  • ArrayList vs LinkedList,HashMap vs TreeMap:如何选择最适合的集合类?
  • CEPH配置优化建议
  • 小程序css实现容器内 数据滚动 无缝衔接 点击暂停
  • AtomNet:在极端MCU约束下基于算子设计微型模型
  • LivePortrait 使用指南:让静态照片“动”起来的魔法工具
  • 【自动化测试】如何获取cookie,跳过登录的简单操作
  • 一个异步架构设计:批量消费RabbitMQ,批量写入Elasticsearch(golang实现)
  • hadoop执行sqoop任务找不到jar
  • 欧盟决意与俄罗斯能源彻底决裂之际,美国谋划新生意:进口俄气对欧转售
  • 【社论】职业上新,勇于“尝新”
  • 1450亿元!财政部拟发行2025年中央金融机构注资特别国债(二期)
  • 欧洲史上最严重停电事故敲响警钟:能源转型如何保证电网稳定?
  • 近4小时会谈、3项联合声明、20多份双边合作文本,中俄元首今年首次面对面会晤成果颇丰
  • 上海发布预付卡消费“10点提示”:警惕“甩锅闭店”套路