C语言在VS编译器下的调试技巧

调试--代码编写过程会出现错误,导致代码运行不能达到所期望的效果,找到代码中的错误,并解决它的过程叫做调试。

程序员写代码-->测试人员测试代码-->用户使用该程序

Debug和Release的区别:

    Debug和Release是调试的两个版本,那么两者有啥差别呢?这么说吧,Debug是给程序员用的,程序员在编写代码的过程中,可能出现种种错误,导致程序运行不下去,或者程序可以运行但达不到期望的效果,而代码的‘量’又如此之大,编程人员不可能逐一排查,这时候就要定位到某一区域,调试运行该区域的代码,观察代码的运行结果 ,这个调试过程包括监视窗口,内存查找,栈堆调用等,这些调试功能就是隶属Debug调试版本下的。总的来说,相比于Release版本,Debug版本下的调试功能更加多样齐全。

    既然如此,那还要Release做什么呢?

    要知道,功能越丰富多样,其所需要占用的内存就更大,在高负荷下,其运行速度也要大打折扣。而Debug的功能用户是不需要使用的,用户只使用程序的运行功能。所以就需要对Debug的许多功能进行删减,从而为程序减压,Debug删减后的版本就是Release版本。

以下讲述Debug版本下的调试功能:

调试使用的快捷键(F5,CTRL+F5,F9,F10,F11)及其功能

1.逐过程(F10)

这是调试过程打开后的样子:

小箭头代表代码调试的阶段,按F10可以使小箭头跳动,即使代码一步步运转,注意,若小箭头到了调用的函数前,小箭头并不会进入到该函数内部,而是直接快速运行该函数然后出来(如,当小箭头到my_strcpy()函数时,并不会在my_strcpy()函数中一步步运转,而是快速访问后跳出来),若想是小箭头进入到函数内部,我们就需要用F11了,下面介绍F11的功能。

2.逐语句(F11)

使用F11,功能与F10极其相似,二者的区别仅仅在于F10不能使小箭头进入函数内部一步步运行,而F11可以,运行如下:

3..监视窗口(CTRL+ALT+W,1 ):

可以在‘要添加监视的项’中输出项目名称,包括:变量名,指针,数组名等;

调试过程中,在代码的行列前会出现一个箭头,该箭头显示的是代码正在调试的阶段,主要是由逐语句(F10)和逐过程(F11)控制;

注意:若箭头并未到达所输入的项目名前,则该项目处于未定义状态:

可以用F10,或F11,使箭头跳到所输项目名前。

4.*内存(CTRL+ALT+M,1 )

查看内存亦需要在调试的过程中进行,下面是查看内存的小窗口,在‘地址’处,输入某一变量的地址(或指针,或&+变量),下面即可输出改地址存放的变量,如下:

*这里需要注意的是,输入地址处不能以输入数组名,虽然数组名在大多数情况下代表的是数组首元素地址

5.栈堆--可以清楚地看清哪个函数调用哪个函数 被调用的函数在调用的函数上面

有时由于调用的函数太多,关系太复杂,一眼难以搞清楚函数的嵌套逻辑,如:

(*注意:这仍然只是少数调用的函数,并按照一定的顺序排列的,若添加更多的函数或函数的调用并没有在同一个文件中,那么其逻辑关系则更加难以分辨)

**同时注意,栈堆的使用通常与F11连用,因为栈堆亦需要小箭头进入到函数的内部。

下面是栈堆是使用:

函数的调用关系是从下往上的,即main()函数调用test()函数,后者再调用test1()函数,最后调用test2()函数。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨中豪杰ˇ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值