vs调试技巧(详细)

news2025/7/29 22:20:03

调试技巧

  • 一.简介
    • 1.调试是什么
    • 2.调试的基本动作
    • 3.Debug和Rlease的介绍
  • 二.调试介绍
    • 1.调试环境准备
    • 2.快捷键的使用
  • 三.调试时看当前信息
    • 1.查看临时变量的值
    • 2.查看内存
  • 四.多多动手调试

在这里插入图片描述

一.简介

1.调试是什么

在这里插入图片描述

调试本身是一个动作,是用来除去错误的动作

2.调试的基本动作

1.发现程序错误所在

主要有三类人发现bug
1.程序员自己
2.测试人员
3.用户

2.以隔离消除等方式对错误进行定位

顾名思义,就是先找到错误的代码在哪一部分,再对这段代码进行检测

3.确定错误产生的原因

4.提出纠正错误的解决方法

5.对错误进行修改和测试

3.Debug和Rlease的介绍

在这里插入图片描述

在我的vs里有这样的格式:

在这里插入图片描述

具体的区别就是Debug的模式是程序员自己用的版本,里面包含各种调试信息,程序员可以在里面进行调试

在这里插入图片描述

Rlease版本就是用户使用的版本,不包含调试信息,所以不能调试,但因此它占的内存会更小,更有利于发布

ps:这里补充一个小知识,其实vs并不是编译器,而是被叫做IDE(集成开发环境)(集编译器和调试器为一体)

二.调试介绍

1.调试环境准备

调到Debug模式
在这里插入图片描述

2.快捷键的使用

在这里插入图片描述
F5

启动调试,常用来跳到下一个断点处

F9

创建断点和取消断点

断点的重要作用,可以在程序的任意位置设置断点

这样就可以使得程序在想要的地方停下来,继而一步步执行下去
断点就是让程序停下来的点

这两个键经常一起使用

在这里插入图片描述

我在123行按一下F9,出现了一个 红点,这就是断点,再按F5,看下图

在这里插入图片描述

这里先叫我输入,因为前面有个scanf函数,如果没有这个scanf,那么按F5的话就会直接跳到这个红点位置

ps:断点可以设置多个,依次按F5会依次跳到下一个断点

在这里插入图片描述

F10

逐过程,通常处理有个过程,一次过程可以是一个函数调用或者一条语句

F11

逐语句,就是每次都执行一条语句,但这个快捷键可以帮助我们进入函数内部(这个功能是最常用的)

CTRL+F5

开始执行不调试,也就是我们常用的运行程序的键位

F10的使用
在这里插入图片描述
在这里插入图片描述

与F5不同的是,F5是直接跳到断点处,而F10是一条一条的执行

F11的使用
在这里插入图片描述

使用F11就可以直接进入menu函数内部,而用F10会直接跳到retrn 0

当然我们使用F5和F9组合也可以进入函数内部,只需要将断点放在函数内部就可以了

在这里插入图片描述

三.调试时看当前信息

1.查看临时变量的值

首先打开监视窗口

在这里插入图片描述

记得看窗口时一定要先调试(按F5或F10)起来,不然是无法看到的

在这里插入图片描述

随便打开一个调试窗口,然后我们向里面输入我们要查看的变量

在这里插入图片描述

这里还没有初始化,,所以里面放的是随机值

在这里插入图片描述

按F10向下走,这时就可以看到x,y被初始化了,接下来我们再添加z监视,再按一下F10

在这里插入图片描述

可以看到直接完成了函数得出了z的值

如果我们检测数组会怎样呢
在这里插入图片描述

可以看到我们依然可以看到arr的所有元素,那么我们如果进入函数呢,按F11进入函数

在这里插入图片描述

可以看到这里只显示了第一个元素,那我们如何显示所有元素呢

在这里插入图片描述

其实很简单,只需要再数组后面加个,再加上数字,就可以让你看到几个元素啦

2.查看内存

在这里插入图片描述

如果我们想看a的地址那么我们只需要&a就可以了

在这里插入图片描述

然后按回车,里面出现的值就是a的地址啦

在这里插入图片描述

需要注意的是地址在编译器中其实是二进制放的,但为了方便看,所以用16进制表示

在这里插入图片描述

这里面的数就是a的值,其实它在内存中也是二进制放的,但为了方便也是16进制显示的。a在16进制中就是10

这样其实不好看,因为a是int类型,只有32位2进制也就是8位16进制,所以在后面全放的是c(至于为什么是c而不是其他值就要看函数堆栈啦),我们不需要看后面的数,所以我们可以调整窗口让其只显示前8位16进制数,也就是4列

在这里插入图片描述在这里插入图片描述

同理我们可以看看b的内存,在16进制中c就是12

在这里插入图片描述

四.多多动手调试

调试是非常重要的

在这里插入图片描述

好啦,这里就介绍到这里啦,当然vs的调试功能是很强大的,其他窗口像是反汇编,堆栈…有兴趣的朋友可以自己看看啦

在这里插入图片描述

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

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

相关文章

【前端】JavaScript-PC端网页特效

目录 一、元素偏移量offset系列 1.1offset概述 1.2offset与style区别 二、元素可视区client系列 立即执行函数 三、元素滚动scroll系列 三大系列总结 mouseenter和mouseover的区别 一、元素偏移量offset系列 1.1offset概述 offset系列相关属性可以动态的得到该元素的位置…

三十四、Java Iterator(迭代器)

Java Iterator(迭代器) Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。 Iterator 是 Java 迭代器最简单的实现,ListIterator 是 Co…

使用Emscripten编译Eigen算法模块为WebAssembly

前言 最近大降温,才意识到秋天是真的来了。古人有诗云:“眉如青山黛,眼似秋波横。”这足以说明秋天的水是多么的浪漫、多情、温柔。 秋天都懂得浪漫,你天天被人说木讷,何不做点改变?今天我来教大家属于程…

Android 开发音频录播中媒体录制器MediaRecorder和媒体播放器MediaPlayer的讲解及实战(超详细 附源码)

需要源码请点赞关注收藏后评论区留下QQ~~~ 一、媒体录制器MediaRecorder MediaRecorder是Android自带的音视频录制工具,它通过操纵摄像头和麦克风完成媒体录制,既可录制视频又可以单独录制音频 下面是它的常用方法 reset 重置录制资源 prepare 准备录制…

C/C++语言 3 —— 输入输出

C语言的io函数&#xff1a; printf 输出 和 scanf输入 是 C语言的标准IO函数的一部分&#xff1a; scanf函数会将屏幕上输入的字符&#xff0c;根据格式的要求转化为对应的数据&#xff1a; scanf 需要提供内存地址代码&#xff1a; #include <iostream> using nam…

【数字电路基础】进制转换:二进制、十进制、八进制、十六进制、反码、补码、原码

文章目录 一、无符号数进制转换1.1、十进制转二、八、十六1.1.1、 十进制转二进制1.1.2、 十进制转八进制1.1.2、 十进制转十六进制1.2、二、八、十六转十进制1.3 二进制转八、十六1.4 八、十六转二进制1.4 八转十六二、有符号数进制转换2.1 正数进制转换2.2 负数进制转换一、无…

Linux安装Tomcat详细教程(图文)

1、下载Linux版本****的Tomcat 下载地址 2、在usr目录下新建tomcat目录&#xff0c;然后将下载的tomcat拷贝到新建的tomcat目录中 创建目录命令&#xff1a;mkdir /usr/tomcat 3、进入到tomcat目录中解压下载的tomcat安装包 解压命令&#xff1a;tar -zxvf apache-tomcat-8…

自动驾驶感知算法实战13——自动驾驶感知未来发展方向分享

自动驾驶感知算法实战专栏:https://blog.csdn.net/charmve/category_12097938.html目录 发展方向:分享:自动驾驶3.0未来需要解决的问题发展方向: 多模态感知 多任务处理 大模型(通用智能) 分享: 自动驾驶3.0 第一,自动驾驶3.0是数据驱动,更是“真实场景下的海量大数据…

底物多肽Phe-Gly-His-Phe(NO2)-Phe-Ala-Phe-OMe、50572-79-7

胃蛋白酶的良好底物&#xff0c;也被组织蛋白酶 D 切割。 A good substrate for pepsin which is also cleaved by cathepsin D.编号: 402332 中文名称: Phe-Gly-His-Phe(NO2)-Phe-Ala-Phe-OMe CAS号: 50572-79-7 单字母: H2N-FGH-F(4NO2)-FAF-OMe 三字母: H2N-Phe-Gly-His-Phe…

企业信息化的供给侧改革

企业信息化建设供给侧改革的新思路 传统的企业信息化建设思路是什么呢&#xff1f;它是从需求侧的规划跟实施入手的&#xff0c;然后解决做哪些和怎么做业务信息化的问题&#xff0c;用不着关注承担这个项目建设的供给体系的质量、效率、结构问题。这就会导致在项目建设过程中…

[附源码]java毕业设计在线视频网站

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

垃圾分类解决方案-最新全套文件

垃圾分类解决方案-最新全套文件一、建设背景垃圾分类的意义1.为什么要进行垃圾分类2.智慧垃圾分类的重要性二、建设思路三、建设方案四、获取 - 垃圾分类全套最新解决方案合集一、建设背景 垃圾分类的意义 1.为什么要进行垃圾分类 将易腐有机成分为主的厨房垃圾单独分类&…

运动需要的装备有哪些?2022年运动装备推荐

全民开始运动的今天&#xff0c;越来越多的年轻人会选择在一天的忙碌之后通过简单的运动缓解疲劳。而在运动装备的选择上&#xff0c;由于种类和品牌太多&#xff0c;小白很难从中选择到适合自己的运动装备&#xff0c;作为一个资深运动爱好者&#xff0c;对这方面是非常在行的…

「运维有小邓」如何更有效的避免密码攻击

在这表文章中&#xff0c;让我们一起了解密码在网络安全中的重要性&#xff0c;在我们的日常工作中&#xff0c;密码泄露事件是常发生的&#xff0c; 那今天我们就一起了解ManageEngine ADSelfService Plus 是如何强化您的密码并加强您的企业AD域安全性的。 运维有小邓 2022 年…

MCE | 打破 Western Blot 玄学操作

看我一顿操作猛如虎&#xff1a; 电泳 → 转膜 → 封闭 → 孵一抗 → 孵二抗 → 检测&#xff0c;剩下的就是等待。 图 1. Western blot 操作流程简介[1] 我的实验结果中出现了各种稀奇古怪的玩意儿&#xff1f;&#xff1f;&#xff1f; ■ 古怪一&#xff1a;高背景 萌 Cece…

合作|创邻科技携手海颐软件成功中标,Galaxybase图平台赋能广西电网业务升级

近日&#xff0c;烟台海颐软件股份有限公司&#xff08;简称“海颐软件”&#xff09;携手浙江创邻科技有限公司&#xff08;简称“创邻科技”&#xff09;成功中标南方电网广西电网有限责任公司&#xff08;简称“广西电网”&#xff09;课题项目。期待通过结合双方产品优势&a…

【车间调度】遗传算法求解车间调度问题(含甘特图)【含Matlab源码 2216期】

⛄一、车间调度简介 1 车间调度定义 车间调度是指根据产品制造的合理需求分配加工车间顺序&#xff0c;从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上加工。问题需要满足的条件包括每个零件的各道工序…

如何将带GPS的网络化的软件定义无线电接收机应用于分布式和移动频谱监测?(一)

导言 无线信号无处不在。无线网络为我们的移动设备&#xff0c;物联网&#xff08;IoT&#xff09;&#xff0c;智能城市&#xff0c;自动驾驶汽车等提供动力。从基本视频流到整个公用电网的所有内容现在都依赖于可靠&#xff0c;高速和不间断的连接。这一新现实给频谱监测用户…

文本攻击textattack->openattack

一 文本对抗攻击的定义 很小的扰动&#xff0c;无法映射到原始输出。那么就是对抗样本&#xff0c;生成对抗样本的过程称为对抗攻击。 1.1 类型分类 根据是攻击者否了解模型的具体细节&#xff1a; 白盒攻击【攻击者可以访问模型的完整信息&#xff0c;包括模型结构&#xff0c…

表格软件之FineReport-JS实现大数据集导出(二)

1. 示例&#xff1a;大数据集导出动态参数值 1.1 新建模板 1.1.1 新建数据集 新建普通报表&#xff0c;新建数据集&#xff0c;SQL 语句如下&#xff1a; ds1&#xff1a;SELECT * FROM 销量 where 11 and 地区 in (${area}) and 销售员 in (${stuff}) ds2&#xff1a;SEL…