由入门到深解VS调试技巧

Visual Studio 简介

visual studio (简称VS) 是集成环境(含VC等)的一个软件,它本身也是由微软公司开发的工具和产品,它像是是一个可视化的工具集合,它将代码编辑,编译器,连接器,资源编辑器什么的整合在同一个开发环境中,可以编写Windows、Linux和iOS等平台的程序,可进行很多种编辑语言,比如:C、C++、Python和JavaScript等等。

VS的安装简介:

第一步

  1. 首先我们需要安装visual studio这个软件,在进入VS官方官网
    链接: VS官方下载途径,这是官方官网,对于一些不是太过专业的人来说,只需要在其下载【社区版】的,是免费的。
    下载完成后会有:
    在这里插入图片描述

第二部

在已经或者下载好了VS软件的基础上,我们可以创建一个自己的项目:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 源文件就是相当于是你完成任务的,在内写源代码。
    -在其中创建自己的源文件:
    其中在这里插入图片描述
    这样就创建了一个项目,进行代码的编写。

VS的调试介绍

  • 调试是进行调试后讨论查找错误(找出bug),假如说你写出一段代码,但是却会报错,这时就会需要调试,在寻找出程序中的bug;

在这里插入图片描述

  • 调试的基本步骤:

1.发现程序错误的存在;
2.以隔离、消除等方法错误进行定位;
3.确定错误产生的原因;
4.提出纠错错误的解决方法;
5.对程序错误予以改正,重新测试;

  • 当然对于一个嘎嘎肝的程序员来说,调试是在编程中很重要的一个技巧。
    在这里插入图片描述
    当然在这里,需要注意一点,这里有的是专门的调试版本发布版本

Debug和Release的介绍

1.Debug版本是被称为:调试版本,可进行调试,是因为在此版本下存在调试材料,它包含调试信息,并且不做如何优化,便于程序员的调试程序。(它是给程序员的版本)
2.Release版本被称为:发布版本,不可进行调试,它是往往进行了各种优化,使得在代码大小和运行速度都是最优的,以便于用户很好的体验。(它是个给用户体验的版本)

在这里插入图片描述
在VS上可以进行交换,这样就可以自由切换两个版本进行测试了。

可以看到在同一段代码,最后实现需要的大小,Debug需要的明显比Release版本所需更大的内存空间大小,并且在运行速度上有明显优势。

在这里插入图片描述

调试的基本技巧

  • 接下来我将以以下代码一样一样的进行调试;
#include<stdio.h>

int main()
{

	printf("haha");

	int i = 0;
	for (i = 0; i < 10; i++)
	{
		printf("hehe\n");
	}

	return 0;
}

接下来可以看到:很多功能,其中可以看到:开始调试和开始执行(不调试),这两个功能后面都有其快捷方式,如开始执行但不调试:Ctrl+F5;

在这里插入图片描述

Ctrl+F5:,按下Ctrl+F5,开始执行,但是不会进行调试。
开始执行代码,直到代码全部执行结束的一个过程:

请添加图片描述

F5:是开始调试,一般会和其中F9一起进行使用,因为,在F5调试后程序不会停下来,直到程序结束才会停下来,这个时候就需要断点的存在帮助程序可以快点来到你想要执行是点名端前。
——
F9:是可以在程序任意设置断点,让程序在执行到这个断点这停下来。

在这里插入图片描述

如图可以看到描述如果按下F5,就会让代码执行到第13行这里停下来。

在这里插入图片描述
请添加图片描述

  • 此时当程序执行到断点停下时,此时只打印出“haha”;

注意: 对于断点,如果对于循环体,可以控制在第几次循环后停下来,如:右击那个红点,进入条件,并且限制出条件,就可以。对着红点的那一行在此按下F9就可以取消这个断点,当然可以设置多个断点,但断点之间执行顺序也是依次执行。

F10:是逐语句,执行下去,直到,程序结束。
——
F11:是逐过程执行下去。

  • 这两者之间存在着的差别,可以看以下代码执行:
#include<stdio.h>

int add(int x, int y)
{

	return x + y;
}

int main()
{
	int i = 0;
	int j = 0;
	scanf("%d%d", &i, &j);

	int ret=add(i, j);
	printf("%d\n", ret);

	return 0;
}

对于F10
———— 如果遇到函数调用,直接就执行完成。
请添加图片描述
对于F11
————相比于F10的调用,更加的细致,会进入函数观察函数执行的过程
——
请添加图片描述
注意:在执行语句的时候,会有一个箭头,则箭头指向的那一个语句,就是你当时在进行执行的语句。

较深次了解调试

  • 当了解了上述的几个最基本的功能后,可以慢慢的挖掘出调试的更好的功能,如:
    注: 在这个窗口是在进入调试的后才会显示出后面的窗口的。
    较重要的调试功能:如图圈出来的功能,用的频率更高。
    在这里插入图片描述

监视:可以监视你在调试时,可以观察变量的变化的值;
——
内存:在调用之后,用于观察内存消息。

对于监视:当打开监视窗口,会有四个小监视,这四个监视可以打开任意一个,就可以进行观察。
在这里插入图片描述
如:这就是监视窗口;

在这里插入图片描述
又如你要观察变量i的值的变化,就可以输入变量名称i,用以观察变量 i 的变化。
在这里插入图片描述

  • 当然,你也可以一次观察多个变量。

1.在监视窗口可以观察,在进行逐句调试时,观察变量 i 的变化。

请添加图片描述
——除了监视窗口外,还有自动窗口 :
在这里插入图片描述

自动窗口:会自动显示出所有的变量的变化的观察;
请添加图片描述

对于内存:可以直接观察内存地址,其和监视的道理差不多,可以观察数值放入内存以后的现像。

如:

加油
——
对于调用堆栈

我想大家应该了解栈区堆区;其中栈区是用来存放局部变量、形式参数等等。

在这里插入图片描述

  • 在堆栈又称是和数据结构中的一种 ,栈区存放有个特点 : 由于只能在顶端执行插入和删除,因此最先插入堆栈的元素将最后从堆栈中删除,因此,有时堆栈被称为后进先出.
    (可以看出手枪的弹夹一样,最先放进去的子弹则最后打出)。
    在这里插入图片描述

可以举个例子:用以下代码来表示:对于这个含有很多函数调用,可以在栈上很清楚观察在堆栈上的变化;

void text2()
{
	printf("haha");
}

void text1()
{
	text2();
}

void text()
{
	text1();
}

int main()
{

	text();

	return 0;
}

  • 程序在执行函数调用的一个逻辑,可以在函数调用栈堆来显现:
  • 也可以在该过程中看到入栈,出栈操作

请添加图片描述

上述这些操作可以让我们更加深入程序的更深层次,了解并且熟练的掌握它们会让我们对程序有更好的理解。

  • 听过一句话:初学者可能80%的时间在写代码,只有20%的时间在调试;但是对于一个程序员,可能有80%的时间在调试,只有20%的时间在写代码。

——————

  • 以上可能还有一些很基本的调试技巧遗漏,望大家海涵,最后希望诸君且听这龙吟
  • 28
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值