发布时间:2026/8/9 9:38:05
老板雇我来公司写Bug 文章目录啥是Bug??什么是调试(debug)??debug和release之间的区别是什么呢?调试快捷键监视和内存观察监视内存调试测试总结啥是Bug??bug本意是昆虫或者虫子,现在一般是指在电脑系统或者程序中,隐藏着的一些未被发现的缺陷或问题,简称为程序漏洞。Bug的创始人是格蕾丝·赫柏(Grace Murrary Hopper),她是一位美国海军电脑专家,1947年9月9日,格蕾丝·赫柏对Harvard Mark Ⅱ设置好17000个继电器进行完编程,技术人员启动机器,突然停止了工作,于是工人们去寻找原因,最后竟然发现是一只飞蛾飞到了触点上然后被高电压击死,因此在报告中赫柏用胶条贴上飞蛾,使用bug表示一个在电脑程序里的错误,Bug这个说法一直沿用至今.什么是调试(debug)??当我们发现程序里面有问题,那么我们就要找到它,解决这个问题找问题的过程被称之为调试,英文名为debug(消灭bug)debug和release之间的区别是什么呢?在vs上编写代码的时候我们经常看到这个选项那么这个debug和release是啥意思呢?debug通常称之为调试版本,它包括调试信息并且不做优化,便于程序员去调试程序,我们在写代码的时候经常去调试代码,就把这里设置为debug,这样编译产生的debug版本的可执行程序包括调试信息可以直接调试release称之为发布版本它通常是进行了各种的优化,让程序在代码大小和运行速度上都是最优的,方便用户很好的使用,当程序员写完代码并且调试完成,程序的质量符合用户的使用标准这时就会设置为release,编译产生的是release版本的可执行程序,这个版本是用户使用的,不用包含调试信息同一段代码编译生成的可执行文件的大小,release版本更小,debug版本更大因为release版本是优化过的并且不包含调试信息调试快捷键一下是调试最常用的几个快捷键:F9:创建断点和取消断点断点:断点的作用就是可以在程序的任意位置设置断点,打上断点就可以使程序执行到想要的位置暂停执行,接下来我们就可以配合F10,F11这些快捷键观察代码执行细节F5:启动调试,用来直接跳到下一个断点处,一般和F9配合使用F10:逐过程,通常用来处理一个过程,一个过程可以是一次函数调用,或者一条语句F11:逐语句,就是每次都执一条语句,但是这个快捷键可以让我们的执行逻辑进入函数内部在函数调用的地方想进入函数观察细节必须使用F11,如果使用F10会直接完成函数调用.ctrlF5:开始执行不调试,如果想让程序直接运行起来而不调试就可以直接使用监视和内存观察在调试的过程中如果要观察代码执行过程中,代码环境中的变量的值我们可以通过监视和内存观察,这些观察方式的前提条件一定是开始调试后观察的例如下面这段代码intmain(){inta[10]{0};inti0;for(i0;i10;i){a[i]i1;}return0;}监视开始调试后如下图操作打开监视窗口进入监视窗口后输入我们想要监视的变量或者数组等的名字然后一步步去调试我们就可以看到这些变量是如何变化的还有一个要注意的点就是当我们监视二维数组的时候不是简单的敲上二维数组的名字就行,还要再写上我们要监视几行例如有一个二维数组a[10][10],当我们要监视它的前五行时候打开监视窗口,然后在名称列输入: a,5 即可同理一维数组也是例如有一个一维数组b[10]我们想监视它所有的元素那么我们在监视窗口的名字列输入: b,10 即可二维数组我们选择了监视的行可以展开查看列内存注意我们想要观察谁就在谁的名字前面加上取地址符就行啦,数组就不用了因为数组名就是数组的首地址除此之外我们还有自动窗口自动窗口会根据我们的代码自动给出这些要监视的变量根据我们一步步的调试这些被监视的变量会消失或者出现,这样一来就不太利于我们去观察变量的变化了,因此我们只了解了解即可,平常我们依旧使用监视窗口来监视我i们想要监视的变量调试测试请大家在VS2022,X86,Debug的环境下,编译器不做任何优化,下面代码的结果是什么??#includestdio.hintmain(){inti0;inta[10]{1,2,3,4,5,6,7,8,9,10};for(i0;i12;i){a[i]0;printf(haha);}return0;}最后这个代码会陷入死循环,为啥呢?数组越界应该报错呀,为什么会死循环呢?我们无论如何是想不出来的,只有去调试才能知道这个代码中到底发生了什么导致死循环.其实这里是有一个巧合,这里我们一直让下标变化到了12,其实i的地址和a[12]的地址重合了因此导致了这组函数陷入了死循环,当然这种巧合是在我们这个代码环境中的如果我们的代码环境变了其实也不会造成这种巧合所以当我们遇见我们无法理解的情况的时候一定要去调试,调试完后我们就会恍然大悟,原来如此总结本文系统地介绍了 C/C 程序调试的核心概念与实用技巧Bug 与调试基础从 Bug 的历史起源到调试的基本定义明确了调试就是发现并解决程序问题的过程。Debug 与 Release 模式详细对比了两种编译模式的区别Debug 版本包含调试信息便于开发调试Release 版本经过优化适合发布使用。调试快捷键掌握了 F9断点、F5启动调试、F10逐过程、F11逐语句等核心快捷键的使用方法。监视与内存观察学会了在调试过程中通过监视窗口和内存窗口观察变量值的变化这是理解程序运行状态的关键手段。实战调试案例通过数组越界导致死循环的经典案例展示了调试在解决复杂问题中的不可替代性。调试不仅是解决问题的工具更是深入理解程序运行机制、提升编程能力的重要途径。掌握这些调试技能能够帮助开发者更快定位问题、更深入理解代码执行逻辑从而编写出更健壮、更高效的程序。记住当代码行为不符合预期时不要只是猜测打开调试器让程序自己告诉你发生了什么每日一问:今天你调试了吗?

相关新闻

2026/8/9 9:38:05

教育培训类网站建设指南:如何打造高转化率的在线学习平台

在这个知识付费和在线学习日益普及的时代,许多教育机构的老板、校长或者市场负责人都会问我同一个问题:“老师,我想做个网站,但市面上模板那么多,到底该怎么选?怎么弄才能既显得专业,又能真正招到学生?”说实话,这种困惑太正常了。因为我见过太多的教育机构,花了大价…

2026/8/9 9:38:05

围棋AI分析终极指南:5个步骤掌握LizzieYzy专业复盘工具

围棋AI分析终极指南:5个步骤掌握LizzieYzy专业复盘工具 【免费下载链接】lizzieyzy LizzieYzy - GUI for Game of Go 项目地址: https://gitcode.com/gh_mirrors/li/lizzieyzy 围棋AI分析工具LizzieYzy是每位围棋爱好者的智能复盘助手,这款免费开…

2026/8/9 10:43:10

如何快速掌握HexEdit:Windows二进制编辑完整指南

如何快速掌握HexEdit:Windows二进制编辑完整指南 【免费下载链接】HexEdit Catch22 HexEdit 项目地址: https://gitcode.com/gh_mirrors/he/HexEdit HexEdit是一款功能强大的开源十六进制编辑器,专为Windows平台设计。这款免费工具为开发者、逆向…

2026/8/9 10:43:10

如何用douyin-downloader高效管理抖音内容创作工作流

如何用douyin-downloader高效管理抖音内容创作工作流 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量…

2026/8/9 10:43:10

视觉特征提取器-训练范式02-自监督SSL-自蒸馏01:DINO的稳定教师 + 中心化 + 锐化【避免模型坍塌,对于当前样本:①中心化去掉每个维度的长期偏见;②锐化:放大所有当前维度的差异】

DINO 中的中心化与锐化:为什么它们能避免模型坍塌? 理解 DINO 中的 中心化(centering) 和 锐化(sharpening) ,最重要的不是先背公式,而是先回答三个问题: 自监督学习为什么会发生 模型坍塌(model collapse)? 中心化到底“减掉”了什么? 锐化为什么只需要调一个温…

2026/8/9 10:43:10

3步解锁中文GitHub:告别语言障碍的智能翻译方案

3步解锁中文GitHub:告别语言障碍的智能翻译方案 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 想象一下这样的场景&#…

2026/8/9 10:38:10

spring三级缓存解决循环依赖问题

spring三级缓存(解决循环依赖) 什么是循环依赖 多个 Bean 互相依赖对方,形成闭环。 //A依赖B Component public class A{Autowiredprivate B b; }//B依赖A Component public class B{Autowiredprivate A a; }A 需要 B 才能完成创建,B 又需要 A 才能完成创…

2026/8/9 0:01:56

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/9 0:01:56

当 LLM 遇见大文档:主流开源项目如何处理上下文超限

从 Agentic Loop 到 Repo Map,七种策略与六类陷阱引言:128K vs 10MB 的硬冲突 2026 年的 LLM 上下文窗口已达到 128K ~ 1M token(≈ 0.5MB ~ 4MB 文本),但 LLM 想要处理的真实数据规模远远超过这个量级:真实…

2026/8/9 0:01:56

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/9 0:01:56

当 LLM 遇见大文档:主流开源项目如何处理上下文超限

从 Agentic Loop 到 Repo Map,七种策略与六类陷阱引言:128K vs 10MB 的硬冲突 2026 年的 LLM 上下文窗口已达到 128K ~ 1M token(≈ 0.5MB ~ 4MB 文本),但 LLM 想要处理的真实数据规模远远超过这个量级:真实…

2026/8/7 9:44:18

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/7 19:03:32

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/8 2:17:42

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…