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来辅助我们进行练习一定要学会用好身边的资源。那么我们就下篇文章再见了哈