vs调试技巧(详细)

2023-05-16

调试技巧

  • 一.简介
    • 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的调试功能是很强大的,其他窗口像是反汇编,堆栈…有兴趣的朋友可以自己看看啦

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vs调试技巧(详细) 的相关文章

  • 物联网平台搭建的全过程介绍(二)——物联网平台通信思维导图

    目前物联网平台很多 xff0c 本例以阿里云物联网平台为例 xff0c 介绍一下物联网平台通信的思维导图和实现的步骤 xff0c 本文仅做功能的宏观描述 xff0c 具体操作会在后续文章内详细介绍 其他物联网原理基本大同小异 思维导图如下图
  • web 前端的浏览器

    1 浏览器及内核 web浏览器是用于读取HTML文件 xff0c 并将其作为网页显示 浏览器最重要的部分或其核心是渲染引擎 xff0c 我们一般称为内核 xff1b 内核的作用负责对网页语法的解释并渲染网页 xff1b 五大浏览器 xff1
  • C++的第一个代码“Hello World!”

    代码展示 include lt iostream gt include lt cstdio gt using namespace std int main printf 34 Hello World n 34 printf 34 1 Def
  • C.刷oj1026有感

    1 if嵌套 if 条件1 语句1 if 条件2 语句2 if 条件3 语句3 语句4 诸如这样嵌套 xff0c 要先判断条件1是否成立 xff0c 如果成立 xff0c 执行语句1 xff0c 再继续下面操作 如果条件1不成立 xff0c
  • C.刷oj1037有感

    不能判断浮点数相等或不相等 xff01 因为浮点数是对实数的近似表达 如 double y if y 61 61 0 这样是错的 xff01 1 判断浮点数是否为0的方法 fabs y lt 1e 10 2 判断两个浮点数是否相等的方法 f
  • 逻辑或、与运算的短路

    假定i 61 5 j 61 5 i 43 43 xff1c xff1d 5 j 43 43 xff1c xff1d 5 首先这个表达式的结果为1 真 xff0c 但执行完这个表达式后i的值为6 xff0c j的值不变 xff0c 为5 xf
  • LED点阵-第1季第8部分-朱有鹏-专题视频课程

    LED点阵 第1季第8部分 1818人已学习 课程介绍 本课程是 朱有鹏老师单片机完全学习系列课程 第1季第8个课程 xff0c 讲解了16 16LED点阵的驱动方式和文字显示 本课程的学习目标是理解点阵式LED屏幕的驱动方式 74HC59
  • C语言声明变量时的小细节

    声明变量时不能连续赋值 xff0c 例如 int a 61 b 61 0 这样编译器会报错 xff1a b没有声明 可以在声明变量时给一个变量赋值 int a 61 0 int a b c d 61 0 或 int a b c 61 0 d
  • C.for循中表达式的省略

    省略第一个表达式 for 表达式2 表达式3 注意第一个分号不能省 xff01 xff01 xff01 省略第二个表达式 for 表达式1 表达式3 死循环 省略第三个 for 表达式1 表达式2 最后的表达式的分号就不要了 可以在循环体内
  • C语言新收获

    if x 语句3 表达式是变量 xff0c 如果x不等于0 xff0c 则条件判断结果为真 xff0c 执行语句3 if 1 语句4 表达式是非0整数 条件判断结果为真 xff0c 执行语句4 if 0 语句5 表达式是整数0 xff0c
  • C语言新收获

    若a 61 3 xff0c b 61 2 xff0c c 61 1 xff0c 则 d 61 a gt b xff0c 由于a gt b为真 xff0c 因此关系表达式a gt b的值为1 xff0c 所以赋值后d的值为1 f 61 a g
  • C语言swith语句小细节

    1 swtich 中的 里的数据只能为整形或字符型 xff0c 不能为浮点型 xff01 2 swith x xff5b case 1 语句1 case 2 xff1a 语句2 case 3 语句3 xff1b break case 4 语
  • switch语句每个csse后面可以跟多个值吗

    如果今天是星期三 xff0c 后天就是星期五 xff1b 如果今天是星期六 xff0c 后天就是星期一 我们用数字1到7对应星期一到星期日 给定某一天 xff0c 请你输出那天的 后天 是星期几 输入格式 xff1a 输入第一行给出一个正整
  • c学习笔记

    指针之间可以比较大小 xff0c 前提是两个指针指向同一数组 如 char a 20 xff1b char p1 61 a 43 1 char p2 61 a 43 2 则p2 gt p1
  • zzulioj1150

    数数多少个整数 题目描述 小明的老师给小明出了一道题目 xff1a 数数一篇文章出现了多少个数字 xff0c 请你帮帮他吧 输入 输入一个字符串 xff0c 由空格 英文字母 数字组成 xff0c 以回车结束 xff0c 长度小于1000

随机推荐

  • 1152: 二分搜索

    题目描述 在有序序列中查找某一元素x 输入 首先输入一个正整数n n lt 61 100000 xff0c 表示该序列有n个整数 xff0c 然后按从小到大的顺序输入n个整数 xff1b 接着是一个正整数m xff0c 表示有m次查找 xf
  • C语言反思提醒自己

    例如 xff1a char fun char p char s 101 return s 这样将不能正确返回字符串s xff0c 因为在离开fun 函数后该内存空间将不再存在 xff0c 应该使用malloc函数申请内存 xff0c 该函数
  • 按键-第1季第9部分-朱有鹏-专题视频课程

    按键 第1季第9部分 1716人已学习 课程介绍 本课程是 朱有鹏老师单片机完全学习系列课程 第1季第9个课程 xff0c 综合解决了独立按键和矩阵式按键的处理方法 xff0c 涉及到 xff1a IO的输入输出 按键抖动和消抖 中断的引入
  • C语言反思提醒自己

    int a scanf 34 d 34 amp a 当键入07时 xff0c a中存的是7 xff0c 自动舍弃前导0
  • zzulioj1168(账单)

    题目描述 每到月末 xff0c 小明就会对这个月的支出账单进行整理和统计 如今电脑已经普及大学校园 xff0c 所以小明想让电脑帮忙做这件事情 聪明的你就为小明编一个程序来完成这件事情吧 输入 多实例测试 首先输入一个整数ncase xff
  • 总结java中关于继承中的成员属性和成员方法的多态细节

    问题背景 xff1a 下面的代码会输出什么 xff1f 40还是20 xff1f public class Animal public int age 61 40 public void eat System out println 34
  • 【java】浅谈instanceof关键字

    作用 xff1a 用于判断某个对象是否是某个特定类或该特定类的一个实例 返回一个布尔类型 一般格式 object instanceof class class可以是类也可以是接口 xff09 具体使用 xff1a 分编译阶段和运行阶段 xf
  • zzulioj 1185: 添加记录(结构体专题)

    题目描述 有一学生成绩表 xff0c 包括学号 姓名 3门课程成绩 已知该成绩表按学号升序排序 请编程实现 xff0c 添加一个新的学生信息 xff0c 且使成绩表仍按学号有序 xff1b 若待添加的学号与已有学号重复 xff0c 则输出错
  • 初学Java小细节自总

    1 如果子类的构造方法中没有显示地调用父类的构造方法 xff0c 那么Java编译器会自动在子类的构造方法中插入一条默认的super 语句 xff0c 来调用父类的无参构造方法 因此 xff0c 如果父类没有提供无参构造方法 xff0c 而
  • 如何配置Java的环境变量

    1 找到电脑的环境变量 xff08 直接在电脑左下角放大镜搜环境变量即可 xff09 xff1a 2 在环境变量的系统变量里新建一个名称为 xff1a JAVA HOME变量值为jdk的安装目录 xff08 直接点浏览目录去找jdk的安装根
  • 字符集、ASCII、GBK、UTF-8、Unicode、乱码、字符编码、解码问题

    首先计算机是美国人发明的用来处理数据的 xff0c 那么问题来了美国人如何和计算机交流呢 xff1f 怎么把他们的字符存储到计算机里面呢 美国需要存储的字符仅仅只是一些英文大小写 xff0c 数字 xff0c 标点 xff0c 和一些特殊字
  • 1022: 三整数排序(利用三目运算符可以使程序更加简洁)

    从键盘输入三个整数x y和z xff0c 按从大到小的顺序输出它们的值 输入 输入三个整数x y和z 输出 按从大到小的顺序输出它们的值 样例输入 复制 20 16 18 样例输出 复制 20 18 16 自己的思路 xff1a 首先找到最
  • 1025: 最大字符(scanf输入问题以及gets()和getchar()和scanf()的区别)

    给你三个ASCII字符 不含空白字符 包括空格 制表符 t 回车换行符 n xff0c 找出其中最大的那个 输入 输入包含三个字符 xff0c 之间有一个空格隔开 输出 输出ASII码最大的那个字符 xff0c 占一行 样例输入 复制 a
  • 定时器和计数器-第1季第10部分-朱有鹏-专题视频课程

    定时器和计数器 第1季第10部分 1573人已学习 课程介绍 本课程是 朱有鹏老师单片机完全学习系列课程 第1季第10个课程 xff0c 主要内容是51单片机的定时器和计数器 xff0c 本课程的学习目标是对定时器的作用和意义有深入理解 x
  • 1037: 四则运算(易错:浮点数不能使用==或者!=)

    给你一个简单的四则运算表达式 xff0c 包含两个实数和一个运算符 xff0c 请编程计算出结果 输入 表达式的格式为 xff1a s1 op s2 xff0c s1和s2是两个实数 xff0c op表示的是运算符 43 xff0c 也可能
  • 1053: 正弦函数

    内存限制 xff1a 30 MB时间限制 xff1a 1 000 S 题目描述 输入x xff0c 计算上面公式的前10项和 输入 输入一个实数x 输出 输出一个实数 xff0c 即数列的前10项和 xff0c 结果保留3位小数 样例输入
  • 【无标题】

    递归算法的设计要素 递归思维是一种从下向上的思维方式 xff0c 使用递归算法往往可以简化我们的代码 xff0c 而且还帮我们解决了很复杂的问题 递归算法的难点就在于它的逻辑性 xff0c 一般设计 递归算法需要考虑以下几点 明确递归的终止
  • 递归,递推,迭代区别

    程序调用自身的编程技巧称为递归 xff08 recursion xff09 递归做为一种算法在程序设计语言中广泛应用 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法 xff0c 它通常把一个大型复杂的问题层层转化为一个与原问题
  • 51单片机无源蜂鸣器播放群青

    直接放代码 注 xff1a 晶振频率11 0592MHz 延时函数部分 delay c include lt intrins h gt void Delay ms unsigned int n 64 11 0592MHz while n u
  • vs调试技巧(详细)

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