VS实⽤调试技巧(附调试例题)

🎁🎁创作不易,关注作者不迷路🎀🎀

VS实⽤调试技巧(附调试例题)

  • 前言
  • 一、什么是bug?
  • 二、什么是调试(debug)?
  • 三、Debug和Release
  • 四、VS调试快捷键
  • 五、监视和内存观察
    • 1. 监视
    • 2 内存
  • 六、调试举例
    • 数组的调试
    • 调试实例二


前言

💖The Begin💖点点关注,收藏不迷路💖
文章干货满满,还请您细细品读,如果您觉得作者写得不错,抑或对您有所帮助,不妨给俺点个免费的赞和玩玩呢? 关注作者不迷路,后续将有更多原创内容更新哟


一、什么是bug?

bug本意是“昆⾍”或“⾍⼦”,现在⼀般是指在电脑系统或程序中,隐藏着的⼀些未被发现的缺陷或问题,简称程序漏洞。

二、什么是调试(debug)?

当我们发现程序中存在的问题的时候,那下⼀步就是找到问题,并修复问题。这个找问题的过程叫称为调试,英⽂叫debug(消灭bug)的意思。

三、Debug和Release

在这里插入图片描述

在VS上编写代码的时候,就能看到有 debugrelease 两个选项,分别是什么意思呢?
Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序;程序员在写代码的时候,需要经常性的调试代码,就将这⾥设置为 debug ,这样编译产⽣的是debug 版本的可执⾏程序,其中包含调试信息,是可以直接调试的。
Release称为发布版本,它往往是进⾏了各种优化,使得程序在代码⼤⼩和运⾏速度上都是最优的,以便⽤⼾很好地使⽤。当程序员写完代码,测试再对程序进⾏测试,直到程序的质量符合交付给⽤⼾使⽤的标准,这个时候就会设置为 release ,编译产⽣的就是 release 版本的可执⾏程序,这个版本是⽤⼾使⽤的,⽆需包含调试信息等。

四、VS调试快捷键

调试最常使⽤的⼏个快捷键:

F9:创建断点和取消断点
断点的作⽤是可以在程序的任意位置设置断点,打上断点就可以使得程序执⾏到想要的位置暂停执⾏,接下来我们就可以使⽤F10,F11这些快捷键,观察代码的执⾏细节。
条件断点1:满⾜这个条件,才触发断点

F5:启动调试,经常⽤来直接跳到下⼀个断点处,⼀般是和F9配合使⽤。
F10:逐过程,通常⽤来处理⼀个过程,⼀个过程可以是⼀次函数调⽤,或者是⼀条语句。F11:逐语句,就是每次都执⾏⼀条语句,但是这个快捷键可以使我们的执⾏逻辑进⼊函数内部。在函数调⽤的地⽅,想进⼊函数观察细节,必须使⽤F11,如果使⽤F10,直接完成函数调⽤。
CTRL+F5:开始执⾏不调试,如果你想让程序直接运⾏起来⽽不调试就可以直接使⽤。

五、监视和内存观察

1. 监视

开始调试后,在菜单栏中【调试】->【窗⼝】->【监视】,打开任意⼀个监视窗⼝,输⼊想要观察的对象就⾏。
打开监视窗:在这里插入图片描述
在监视窗⼝中观察:
在这里插入图片描述

2 内存

如果监视窗⼝看的不够仔细,也是可以观察变量在内存中的存储情况,还是在【调试】->【窗⼝】->【内存】
在这里插入图片描述

六、调试举例

数组的调试

在数组传参,调试进⼊函数,如何在监视窗⼝观察数组的内容数组名,n 的形式

⼀维数组通过形参关键数组内容

一维数组的传参

二维数组通过形参关键数组内容

在这里插入图片描述

调试实例二

VS2022、X86、Debug的环境下,编译器不做任何优化的话,大家人文下⾯代码执⾏的结果是什么呢?

#include <stdio.h>
int main()
{int i = 0;int arr[10] = {1,2,3,4,5,6,7,8,9,10};for(i=0; i<=12; i++){arr[i] = 0;printf("hehe\n");}return 0;
}

经过实时运行,我们发现死循环了,那么调试一下看看为什么?

常理来讲,虽然代码中存在数组的越界问题,然而我们之前有提到过,此处并不会对数组的元素进行访问,那么代码应该执行13次就停止了,为什么会造成死循环呢?
经过调试我们发现,在执行到第13次时,程序不仅将arr[12]改成了0,还将i也改成了0,这就不难理解为什么会造成死循环了,至此问题解决了,可是是什么原因会造成i也被改变了呢?这里就需要我们了解一下上面程序的内存布局了:

在这里插入图片描述

  1. 栈区内存的使⽤习惯是从⾼地址向低地址使⽤的,所以变量i的地址是较⼤的。arr数组的地址整体是⼩于i的地址。
  2. 数组在内存中的存放是:随着下标的增⻓,地址是由低到⾼变化的。

如果是左边的内存布局,那随着数组
下标的增⻓,往后越界就有可能覆盖到i,这样就可能造成死循环的。
需要注意的是,这⾥确实是巧合,在不同的编译器下可能中间的空出的空间⼤⼩是不⼀样的,代码中这些变量内存的分配和地址分配是编译器指定的,所以的不同的编译器之间就有差异了。所以这个题⽬是和环境相关的


如果您觉得写得不错,还望赏个三连
以上就是关于的内容啦,各位大佬有什么问题欢迎在评论区指正,您的支持是我创作的最大动力!
💖The End💖点点关注,收藏不迷路💖
  1. 条件断点的设置发法如图所示在这里插入图片描述在这里插入图片描述 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/52308.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

上书房信息咨询:商业项目调研方法有哪些

商业项目调研是为了了解市场需求、竞争情况和目标受众&#xff0c;从而制定合适的商业策略和项目规划。下面是一些常用的商业项目调研方法&#xff1a; 1、市场调查和问卷调查&#xff1a;通过设计和分发问卷&#xff0c;收集潜在顾客和目标市场的意见、偏好和需求。这可以帮助…

linux dig域名DNS 查询与iptables域名ip访问流量限制;PTR 反向解析从 IP 地址到域名的映射

一、域名 dns查询 在 Linux 系统中&#xff0c;你可以使用多种工具和技术来进行 DNS 查询和 IP 限制。以下是一些常用的方法和工具&#xff1a; DNS 查询 dig 命令&#xff1a; dig 是一个强大的命令行工具&#xff0c;用于查询 DNS 信息。 dig example.com你可以指定查询类型…

Zookeeper用作服务发现~记当牛马的日子

1.什么是Zookeeper&#xff1f; Zookeeper是一个开源的、分布式的协调服务&#xff0c;它可以用于管理和协调大规模的分布式系统。它提供了一个简单的接口&#xff0c;用于处理分布式应用程序中的一些关键任务&#xff0c;比如统一命名服务、配置管理、分布式锁、分布式队列等…

dockerfile搭建部署LNMP

目录 实验 架构&#xff1a; 实验步骤&#xff1a; nginx部分 mysql部分 php部分 实验 实验&#xff1a;用dockerfile搭建LNMP论坛 架构&#xff1a; 一台docker虚拟机 docker部署nginx 1.22 指定ip地址172.111.0.10 docker部署mysql 8.0.30 指定ip地址…

标准库标头 <execution> (C++17)学习

此头文件是算法库的一部分。本篇介绍策略类型的一些应用示例&#xff1a; 类 is_execution_policy (C17) 测试一个类是否表示某种执行策略 (类模板) 在命名空间 std::execution 定义 sequenced_policyparallel_policyparallel_unsequenced_policyunsequenced_policy (C17)(C1…

ViewModel(9)viewmodel源码解读。

ViewModel 的源码实现较为复杂&#xff0c;以下是对其主要部分的解读&#xff1a; 一、核心类和接口 ViewModel&#xff1a;这是一个抽象类&#xff0c;定义了 ViewModel 的基本行为。它不持有对视图&#xff08;如 Activity、Fragment&#xff09;的引用&#xff0c;确保了 …

盘点黑神话中的黑科技

黑神话在科技方面展现出了诸多令人瞩目的亮点与创新&#xff0c;为玩家带来了一场前所未有的游戏盛宴。 一、空间计算技术的精妙应用 游戏制作团队大胆采用了先进的空间计算技术&#xff0c;其中北京虚拟动点科技有限公司的空间计算 - optitrack 光学定位捕捉技术发挥了至关重…

外排序之文件归并排序实现

外排序介绍 外排序是指能够处理极大量数据的排序算法。通常来说&#xff0c;外排序处理的数据不能一次装入内存&#xff0c;只能放在读写较慢的外存储器(通常是硬盘)上。外排序通常采用的是⼀种“排序-归并”的策略。在排序阶段&#xff0c;先读入能放在内存中的数据量&#x…

ACCESS 工具注入实战 凡诺靶场

简介 Access数据库注入攻击是一种常见的网络安全&#xff0c;通过注入SQL代码来获取未授权的数据访问权限。这种攻击利用了应用程序与数据库之间的交互漏洞&#xff0c;攻击者通过输入特定的SQL代码片段来操纵数据库查询&#xff0c;从而绕过应用程序的安全机制&#xff0c;获取…

简单聊聊云硬盘备份

什么是全量备份和增量备份&#xff1f; 云硬盘备份通常分为全量备份与增量备份两种类型&#xff1a; 全量备份&#xff1a;全量备份是指备份某个时刻整个云硬盘的所有数据&#xff0c;无论数据是否发生变化&#xff0c;都会创建全新的备份副本&#xff0c;第一次做备份时&…

基于x86 平台opencv的图像采集和seetaface6的人脸特征点功能

目录 一、概述二、环境要求2.1 硬件环境2.2 软件环境三、开发流程3.1 编写测试3.2 配置资源文件3.2 验证功能一、概述 本文档是针对x86 平台opencv的图像采集和seetaface6的人脸特征点功能,opencv通过摄像头采集视频图像,将采集的视频图像送给seetaface6的人脸特征点模块从而…

Selenium + Python 自动化测试19(补充-读取各种文件数据操作)

我们的目标是&#xff1a;按照这一套资料学习下来&#xff0c;大家可以独立完成自动化测试的任务。 上一篇我们讨论了数据驱动测试中如何完成重复的测试实例&#xff0c;今天我们补充一些读取各种文件的方法。 本篇文章我们讨论一下如何使用读取txt、CSV、Excel文件&#xff0…

多门店多端平台系统小程序源码

&#x1f525;【健身新纪元】多门店多端分开健身系统&#xff0c;打造你的个性化健身体验&#x1f31f; &#x1f3cb;️‍♀️ 一、告别单一&#xff0c;拥抱多元化健身时代 你还在为找不到合适的健身房而烦恼吗&#xff1f;或是想要随时随地开启健身模式&#xff0c;却受限…

xss靶场 pwnfunction WW3

目录 代码 代码分析 payload构造 结果 代码 <div><h4>Meme Code</h4><textarea class"form-control" id"meme-code" rows"4"></textarea><div id"notify"></div> </div><scri…

ubuntu上cmake3.30.2的安装

引言 安装下载安装包将安装包从windows拷贝到ubuntu解压进入解压后的文件夹执行boostrap编译CMake安装CMake查看是否安装成功 目前的ubuntu系统是20.04.4&#xff0c;用命令行安装了cmake的版本是3.16的&#xff0c;由于项目需要升级cmake到cmake3.22之上&#xff0c;使用命令行…

如何使用cornerstone3D渲染3D影像

&#x1f353; 前言 在日常开发中经常会遇到除了渲染MPR视图外&#xff0c;还需要渲染3D扫描影像&#xff0c;本文从具体的实现、viewport type解读、场景预设等方面来介绍3D具体的实现及涉及到的相关概念。 &#x1f951; 效果演示 点击查看完整代码 &#x1f352; 实现及概…

[BaseCTF 2024] 高校联合新生赛 PWN (week1-7)

pwn这块会略写&#xff0c;毕竟只有有用的才需要记。 week1 我把他丢了 溢出&#xff0c;很小的ROP,有bin/sh和system p.sendafter(b\n, b\0*0x78flat(pop_rdi, bin_sh, 0x40120f) Ret2text 溢出到后门 p.send(b\0*0x28flat(0x4011a9)) shellcode_level0 直接运行shel…

详细分析 el-progress的基本知识以及用法(附Demo)

目录 前言1. 基本知识2. Demo3. 实战 前言 由于实战项目中有所引用&#xff0c;对此记录基本的知识点&#xff0c;并且以Demo的形式呈现 1. 基本知识 el-progress 是 Element Plus UI 库中的一个进度条组件&#xff0c;用于显示任务的完成情况 可以帮助用户了解某个操作或任…

TTS 文本 vs SSML

给个例子&#xff1a; MRCP/2.0 246 SPEAK 1 Channel-Identifier: b227c392d70b478espeechsynth Content-Type: text/plain Voice-Name: xx Content-Length: 11 How are you 其中 Content-Type 是文本 那么 FreeSWITCH 能不能让 Content-Type 变成 ssxml 呢&#xff1f; 官方…

移动云电脑手机端3.0全新升级,畅享个人便捷管理,筑牢安全管控防线

在当今数字化飞速发展的时代&#xff0c;企业对于高效、便捷且安全的办公模式需求日益迫切。移动云电脑手机端3.0全新升级&#xff0c;迎来科技领域的又一突破。其基于企业管理平台为企业客户提供管理能力&#xff0c;实现对用户、终端、资源的全方位集中管控&#xff0c;助力提…