发布时间:2026/6/20 14:27:31
C语言入门基础6(VS2026调试技巧)
本章内容1.VS2026调试技巧1什么是bugbug就是指在电脑系统或程序中隐藏着的一些未被发现的缺陷或者问题简称程序漏洞经常玩游戏的道友肯定知道这个词比如我们在打王者荣耀的时候偶尔就会遇到bug比如说英雄的技能释放特效不显示或者显示不明显等这就是游戏程序员在设计的时候程序是有着隐藏的问题的程序员去进行代码测试的时候没有检查出来而玩家在玩游戏的过程中遇到了相对应的问题这时候程序员就要去维护代码找出这个bug然后快速进行修复那么我们也可以让opencode来进行回答发现它举例也是比较详细的列出了bug的一些常见类型及报错原因2什么是调试当我们发现了程序中是存在问题的那么程序员第一反应就是去找到问题并修复问题这个找问题的过程就被称为调试英文叫debug消灭bug的意思。调试一个程序首先我们要承认程序确实出现了问题不要自认为自己代码写的没问题觉得是编译软件或者其它方面有问题不可能是自己的程序的问题各位道友千万不要有这个想法这个想法是很危险的承认程序出了问题之后就要通过各种手段去定位问题的位置然后一步一步去对代码进行检查逐步缩小范围最终找到问题所在然后把它进行先修复再对代码进行重新测试。打个比方调试的过程就好比医生给我们做B超的过程我们身体不舒服了去医院检查这时候你就要告诉医生你哪里不舒服比如说肚子不舒服然后医生就会给你腹部做一个B超就好比我们在调试代码的时候大概心里有个数是哪一块的代码有问题就去对那个代码块进行调试不要对所有的代码去调试那样的话效率是非常低的那我们调试代码也就相当于在给程序做一个B超对吧。3debug和release在VS上编写代码的时候就能看到有debug和release两个选项debug通常被称为调试版本它包含调试信息并且不做任何优化便于程序员调试程序也就是说程序员在写代码的时候需要经常性的调试代码就将这里设置为debug这样编译产生的是debug版本的可执行程序因为它是包含调试信息的所以是可以直接调试的。release称为发布版本它往往进行了各种优化使得程序在大小和运行速度上都是最优的以便用户更好的去使用当程序员写完代码对程序要进行测试直到程序的质量符合交付给用户的使用标准这个时候就会设置为release版本编译产生的就是release版本的可执行程序这个版本是用户使用的所以它是不包含调试信息的是无法对其进行调试的。这是我写的一段程序分别在debug环境和release环境下进行编译产生的两个版本发现release版本明显小于debug版本这样就导致它在这个大小和运行速度上是明显优与debug版本的主要原因就是release版本是不包含调试信息的。4VS常用调试快捷键F9创建断点和取消断点断点的作用是可以在程序的任意位置设置断点打上断点就可以使得程序执行到想要的位置之后然后暂停执行接下来就可以使用F10F11这些快捷键观察代码的执行细节F5启动调试经常用来直接跳到下一个断点处一般和F9配合使用F10逐过程通常用来处理一个过程一个过程可以是一次函数调用或者是一条语句F11逐语句就是每次都执行一条语句但是它可以是我们的执行逻辑进入到函数内部在函数调用的地方想要进入函数观察细节必须使用F11如果使用F10就直接完成这个函数调用了不会进入到函数内部去CTRLF5开始执行不调试如果你想让程序直接运行起来而不调试就可以直接使用上面这些是我们调试过程中经常使用的一些快捷键当然还有很多快捷键不是很常用那么我们可以让opencode来列举一些5监视和内存观察监视在调试的过程中如果要观察代码中的变量的值就需要监视这些观察的前提是代码开始调试之后不然是找不到监视窗口的就可以通过监视窗口观察一些变量的值按F10一步一步观察变量值的改变如果需要进入到函数内部观察就需要按F11内存如果监视窗口看的不够仔细就可以在内存窗口观察变量在内存中的存储情况在打开内存窗口之后在地址栏输入arri等想要观察的内容的地址就可以观察到该地址中存储的数据信息了。当然在调试的窗口除了监视和内存还有自动窗口局部变量反汇编寄存器等等我们可以让opencode来简单介绍一下它们的功能6调试举例举例1在VS2026、x86、Debug 的环境下编译器不做优化的情况下这段代码的打印结果是什么发现它死循环打印hehhe了我第一次看到这个代码肯定会认为这里数组越界访问了代码肯定会报错在X64环境下确实如此那么为什么在X86环境下非但没有报错反而还使得程序陷入了死循环但通过调试我也找到了问题的所在通过画图来带大家分析一下下面我们再来看一下调试结果这样通过调试我们也就可以发现程序中潜在的问题这个代码其实就是简单带大家体验一下调试的正常写代码是不会写出数组越界访问的情况把for循环中的 i12 改为 i10 就可以了这段代码就是简单用来调试举例的一个案例希望各位道友也看懂了哈7编程常见的错误归类编译型错误编译型错误一般都是语法错误这类错误一般看到错误信息就大概已经知道问题在哪了编译错误随着语言的熟练掌握会越来越少很容易解决比如链接型错误看到该错误信息主要在代码报错里找到错误信息中的标识符然后定位问题所在一般是因为拼写错误、头文件没有包含、引用的库不存在、标识符名不存在等等比如运行时错误这个错误其实是最头疼的程序编译不会报错它是在运行的时候才会出错这种错误是千变万化的就需要借助调试逐步定位问题调试其实就是用来解决程序在运行时出现的问题。当然肯定不止这几种错误类型还有很多但是后面的内容我还没有讲到之后讲到了就再说哈。2.总结关于调试的内容我就介绍到这里了哈主要的还是各位道友要去自己体验调试的过程然后来掌握调试这个技能这样在程序出错的时候也不会慌乱其实在学习一门语言的时候我认为还是要多去练习才能更好的掌握就好比我们学习普通话很多人方言味比较重普通话不标准那你就得多去说普通话不断地说才能说好普通话对吧然后更好的和他人交流不然你说方言我听不懂就是无效交流那么编程也是一定要去多练习代码规范化编程不要你写的代码连计算机都看不懂那就没有意义了同时不断地积累自己的代码量这样才能更快的提高自己的编程能力当然不要盲目练习可以让AI来辅助我们进行练习一定要学会用好身边的资源。那么我们就下篇文章再见了哈

相关新闻

JVM虚拟机调优实战
2026/6/17 18:33:54

JVM虚拟机调优实战

参考: 2025年讲的最好的JVM虚拟机实战教程(JVM内存模型JVM调优JVM底层原理JVM面试题)比啃书效果好多了,一周学完让你少走99%的弯路!_哔哩哔哩_bilibili 一、JDK的体系结构 1.为什么Java可以跨平台 1. 编译阶段&#…

阅读更多
工商业储能系列: 主动均衡之集中式主动均衡<双向隔离DCDC+开关矩阵>
2026/6/14 6:13:25

工商业储能系列: 主动均衡之集中式主动均衡<双向隔离DCDC+开关矩阵>

前言 在锂电池储能系统中,电芯之间存在难以避免的容量和内阻差异,形成“木桶效应”——最差的那节电芯限制了整个模组的可用容量,并加速整体衰减。主动均衡技术正是为了解决这一问题而生。 集中式主动均衡属于主动均衡的一种主流技术路线&a…

阅读更多
AI真的在写AI了?Anthropic发布递归自我提升报告,附完整数据解读
2026/6/13 4:54:48

AI真的在写AI了?Anthropic发布递归自我提升报告,附完整数据解读

大家好,我是大飞。 昨天晚上,Anthropic(Claude Code背后的公司)在X上发了一条动态: 我们的内部数据显示,Claude 正在加速人工智能的发展—这可能是通往递归自我改进的路径,或者说人工智能自主构…

阅读更多
C++迭代器与范围编程
2026/6/20 13:59:12

C++迭代器与范围编程

C迭代器与范围编程迭代器是STL中连接容器和算法的桥梁。C20引入的范围库提供了更简洁的遍历方式,结合视图可以高效处理数据序列。迭代器类别决定其能力:输入、输出、前向、双向和随机访问。#include #include #include #include #include #includevoid i…

阅读更多
网盘下载效率革命:智能直链解析工具重塑文件获取体验
2026/6/20 13:59:12

网盘下载效率革命:智能直链解析工具重塑文件获取体验

网盘下载效率革命:智能直链解析工具重塑文件获取体验 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…

阅读更多
WinCC C脚本实战:从基础操作到高级动画的完整指南
2026/6/20 13:59:12

WinCC C脚本实战:从基础操作到高级动画的完整指南

1. WinCC C脚本入门:从零开始掌握基础操作 第一次接触WinCC C脚本时,我也被那些看似复杂的代码吓到过。但实际用起来才发现,它就像工业自动化领域的"乐高积木",通过简单的模块组合就能实现强大功能。WinCC作为西门子经…

阅读更多
目标文件/可执行文件查看-C/C++
2026/6/20 13:59:12

目标文件/可执行文件查看-C/C++

文章目录linux系统目标文件查看文件头段表内容段其他段符号表可执行文件查看程序头表程序虚拟地址空间分布手动生成目标文件Windowslinux系统 # 查看文件格式 $ file simpleSection.o simpleSection.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped目…

阅读更多
ARM7 LPC210x定时器、PWM与看门狗实战配置与避坑指南
2026/6/20 13:59:12

ARM7 LPC210x定时器、PWM与看门狗实战配置与避坑指南

1. 项目概述与核心价值在嵌入式系统开发,尤其是基于ARM7内核的LPC2101/02/03这类经典微控制器的项目中,定时器外设的掌握程度直接决定了你能否实现精准的时序控制、高效的PWM驱动以及可靠的系统监控。很多新手开发者拿到芯片手册,看到一堆寄存…

阅读更多
求职简历 PPT 模板怎么选?实测优选百度文库 AI 智能模板,覆盖全行业高效落地
2026/6/20 12:59:12

求职简历 PPT 模板怎么选?实测优选百度文库 AI 智能模板,覆盖全行业高效落地

简介:想要高效打造高通过率简历 PPT,选对模板平台是关键。本文围绕求职场景深度解析百度文库简历 PPT 模板全链路优势,依托平台 18 亿专业资源、GenFlow4.0 智能底座、行业首创智能 PPT 能力,从产品底层逻辑、内容资源、排版设计、…

阅读更多
别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)
2026/6/17 23:21:18

别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)

超越BERT:用Transformers库高效实现文本相似度计算的三种实战方案在自然语言处理领域,文本相似度计算是信息检索、问答系统和推荐系统等应用的核心技术。传统方法如TF-IDF或Word2Vec已逐渐被基于Transformer的预训练模型所取代。Hugging Face的Transform…

阅读更多
Prompt Engineering:重构人机协作的工程化方法论
2026/6/18 4:35:02

Prompt Engineering:重构人机协作的工程化方法论

1. 项目概述:这不是“写提示词”,而是重构人机协作的底层逻辑“Prompt Engineering”这个词,这两年被讲得太多,也太轻飘。很多人把它理解成“给AI发指令的技巧”,甚至简化为“多加几个形容词”“换种说法再试一次”。我…

阅读更多
Anthropic提示层归零:模型即协议的工程实践
2026/6/18 15:04:04

Anthropic提示层归零:模型即协议的工程实践

1. 项目概述:这不是一次普通更新,而是一次架构级“蒸发”“Anthropic Just Shipped the Layer That’s Already Going to Zero”——这个标题一出来,我正在调试一个Claude调用链的终端前停了三秒。不是因为震惊,而是因为熟悉&…

阅读更多
洛雪音乐终极音源指南:一站式获取全网无损音乐的完整解决方案
2026/6/20 0:59:03

洛雪音乐终极音源指南:一站式获取全网无损音乐的完整解决方案

洛雪音乐终极音源指南:一站式获取全网无损音乐的完整解决方案 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 你是否厌倦了在不同音乐平台之间来回切换,只为找到一首歌的无…

阅读更多
Display Driver Uninstaller深度清理方案:显卡驱动残留问题的终极解决方案(2024版)
2026/6/20 0:59:03

Display Driver Uninstaller深度清理方案:显卡驱动残留问题的终极解决方案(2024版)

Display Driver Uninstaller深度清理方案:显卡驱动残留问题的终极解决方案(2024版) 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitco…

阅读更多
深入解析MC68HC908AS32A的SCI模块:从异步通信原理到寄存器实战配置
2026/6/20 0:59:03

深入解析MC68HC908AS32A的SCI模块:从异步通信原理到寄存器实战配置

1. 项目概述:深入MC68HC908AS32A的异步串行通信核心在嵌入式系统开发中,尤其是面对工业控制、车载电子或智能仪表这类需要设备间稳定对话的场景,串行通信接口(SCI)往往是工程师最可靠的老朋友。它不像并行总线那样需要…

阅读更多
GIT修改用户名
2026/6/20 3:11:17

GIT修改用户名

在GIT中修改用户名可按以下步骤操作: 查看当前git的用户名,使用命令git config --list或git config user.name。修改git用户名,使用命令git config --global user.name "xxx(新的用户名)",将其中…

阅读更多
Win11Debloat:让你的Windows系统重获新生的终极优化工具
2026/6/19 20:40:12

Win11Debloat:让你的Windows系统重获新生的终极优化工具

Win11Debloat:让你的Windows系统重获新生的终极优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

阅读更多
技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
2026/6/20 7:34:01

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个…

阅读更多