由入门到深解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中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

Pandas利用主表更新子表指定列小技巧

《Pandas利用主表更新子表指定列小技巧》本文主要介绍了Pandas利用主表更新子表指定列小技巧,通过创建主表和子表的DataFrame对象,并使用映射字典进行数据关联和更新,实现了从主表到子表的同... 目录一、前言二、基本案例1. 创建主表数据2. 创建映射字典3. 创建子表数据4. 更新子表的 zb

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

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