C语言实用调试技巧(1)

英语中的bug是臭虫,飞蛾的意思,给大家看一张图

我们是如何写代码的?
又是如何排查出现的问题的呢?
这些是不是大家平时写代码的现状呢???
调试是什么?
调试(英语:Debugging / Debug),又称除错,是发现和减少计算机程序或电子仪器设备中程序 错误的一个过程
调试的基本步骤
发现程序错误的存在
以隔离、消除等方式对错误进行定位
确定错误产生的原因
提出纠正错误的解决办法
对程序错误予以改正,重新测试

Debug(调试版本),Release(发布版本),下面把详细概念告诉大家

Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序
Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优
的,以便用户很好地使用
release版本的代码是不包含调试信息,因此我们在VS2019上按住F10不能进行调试

 

上述代码在Release环境的结果展示

DebugRelease反汇编展示对比:

 

 

在调试的时候我们应该学会对应的快捷键,我们来详细看一下
我们先按住F9(你觉得哪个地方有可能出错你鼠标就点到哪一行,然后右击鼠标带点击切入断点)切换断点,配合着按键F5就会直接跳到你刚才的F9断点处,再配合着F10调试起来就会从断点处开始执行,这样就省去了很多不必要的步骤
看这个案例,右击鼠标添加断点,里面有个条件这个窗口,打开设置你所需的条件即可
下面给大家介绍几个快捷键
最常使用的几个快捷键:
F5
启动调试,经常用来直接跳到下一个断点处
F9
创建断点和取消断点
断点的重要作用,可以在程序的任意位置设置断点
这样就可以使得程序在想要的位置随意停止执行,继而一步步执行下去
F10
逐过程,通常用来处理一个过程,一个过程可以是一次函数调用,或者是一条语句
F11
逐语句,就是每次都执行一条语句,但是这个快捷键可以使我们的执行逻辑进入函数内部(这是最
长用的)
CTRL + F5
开始执行不调试,如果你想让程序直接运行起来而不调试就可以直接使用
调试的时候查看程序当前信息
如果说在你的电脑上F9,F10,F11不起作用,那是Fn这个键的问题,关掉Fn就可以了
或者Fn+F10   Fn+F5  Fn+F9  Fn+F11
3.3.1 查看临时变量的值
在调试开始之后,用于观察变量的值

调试起来点击监视(任意一个窗口即可),看下图3.3.2 查看内存信息     在调试开始之后,用于观察内存信息3.3.3 查看调用堆栈

在VS2013上面,我尝试过,按住F10调试起来,然后点击调试里面有个窗口,然后再点击调用堆栈,我在函数栈帧的创建与销毁那两篇博客已经详细讲到了,大家可以去看一看复习一下,直到出了main函数为止

3.3.4 查看汇编信息

在调试开始之后,有两种方式转到汇编    第一种方式:右击鼠标,选择【转到反汇编】

第二种方式    可以切换到汇编代码

3.3.5 查看寄存器信息
4. 多多动手,尝试调试,才能有进步
一定要熟练掌握调试技巧
初学者可能80%的时间在写代码,20%的时间在调试。但是一个程序员可能20%的时间在写
程序,但是80%的时间在调试
我们所讲的都是一些简单的调试
以后可能会出现很复杂调试场景:多线程程序的调试等
多多使用快捷键,提升效率
下面我们来两个实例
看代码
这时候我们如果3,期待输出9,但实际输出的是15
这个阶乘是有错误的,我现在调试起来给大家看会占用文章很多空间,大家下来按照上面的方法尝试一下
在不同的编译器上会有不同的效果,上图已经给大家做了详细的解释
在i  <=  12的时候没有报错,为什么没有报错呢,因为他一直忙着死循环,没时间报错
当然i  <=  14的时候就理所当然的一直死循环,希望大家能够理解

还有一种情况是i  <=  11,出现的情况是没有死循环,但是会报错,原因就是我没有越界,就不构成死循环,就只是报错,希望大家能理解 
本章终,下一篇给大家讲最后两个部分,详细支持!!!

 

 

猜你喜欢

转载自blog.csdn.net/fjj2397194209/article/details/131196740
今日推荐