由入门到深解VS调试技巧

2023-10-09 19:30
文章标签 技巧 入门 调试 vs 深解

本文主要是介绍由入门到深解VS调试技巧,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

VS调试技巧

  • Visual Studio 简介
    • VS的安装简介:
      • 第一步
      • 第二部
    • VS的调试介绍
      • Debug和Release的介绍
      • 调试的基本技巧
      • 较深次了解调试

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%的时间在写代码。

——————

  • 以上可能还有一些很基本的调试技巧遗漏,望大家海涵,最后希望诸君且听这龙吟

这篇关于由入门到深解VS调试技巧的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/175082

相关文章

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

电脑win32spl.dll文件丢失咋办? win32spl.dll丢失无法连接打印机修复技巧

《电脑win32spl.dll文件丢失咋办?win32spl.dll丢失无法连接打印机修复技巧》电脑突然提示win32spl.dll文件丢失,打印机死活连不上,今天就来给大家详细讲解一下这个问题的解... 不知道大家在使用电脑的时候是否遇到过关于win32spl.dll文件丢失的问题,win32spl.dl

电脑报错cxcore100.dll丢失怎么办? 多种免费修复缺失的cxcore100.dll文件的技巧

《电脑报错cxcore100.dll丢失怎么办?多种免费修复缺失的cxcore100.dll文件的技巧》你是否也遇到过“由于找不到cxcore100.dll,无法继续执行代码,重新安装程序可能会解... 当电脑报错“cxcore100.dll未找到”时,这通常意味着系统无法找到或加载这编程个必要的动态链接库

Python FastAPI入门安装使用

《PythonFastAPI入门安装使用》FastAPI是一个现代、快速的PythonWeb框架,用于构建API,它基于Python3.6+的类型提示特性,使得代码更加简洁且易于绶护,这篇文章主要介... 目录第一节:FastAPI入门一、FastAPI框架介绍什么是ASGI服务(WSGI)二、FastAP

如何关闭 Mac 触发角功能或设置修饰键? mac电脑防止误触设置技巧

《如何关闭Mac触发角功能或设置修饰键?mac电脑防止误触设置技巧》从Windows换到iOS大半年来,触发角是我觉得值得吹爆的MacBook效率神器,成为一大说服理由,下面我们就来看看mac电... MAC 的「触发角」功能虽然提高了效率,但过于灵敏也让不少用户感到头疼。特别是在关键时刻,一不小心就可能触

前端bug调试的方法技巧及常见错误

《前端bug调试的方法技巧及常见错误》:本文主要介绍编程中常见的报错和Bug,以及调试的重要性,调试的基本流程是通过缩小范围来定位问题,并给出了推测法、删除代码法、console调试和debugg... 目录调试基本流程调试方法排查bug的两大技巧如何看控制台报错前端常见错误取值调用报错资源引入错误解析错误

mysql线上查询之前要性能调优的技巧及示例

《mysql线上查询之前要性能调优的技巧及示例》文章介绍了查询优化的几种方法,包括使用索引、避免不必要的列和行、有效的JOIN策略、子查询和派生表的优化、查询提示和优化器提示等,这些方法可以帮助提高数... 目录避免不必要的列和行使用有效的JOIN策略使用子查询和派生表时要小心使用查询提示和优化器提示其他常