Visual Stdio2022调试技巧

本文详细介绍了VisualStudio中的调试方法,包括Debug和Release版本区别、常用调试快捷键、查看局部变量值(包括二维数组)、以及内存数据的查看。重点讲解了F10和F11在逐过程和逐语句调试中的作用。
摘要由CSDN通过智能技术生成

一、什么是调试?

调试(Debugging / Debug),又称除错,是发现和减少计算机程序或电子仪器设备中程序错误的一个过程。

二、Debug和Release版本介绍

  • Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。
  • Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。
  • Debug版本可以进行调试,而Release版本不能调试。
    在这里插入图片描述

三、调试的常用快捷键,如何启动调试

F5:启动调试,并直接跳到下一个断点处。(一般开始调试按F10或F11)
CTRL + F5:开始执行不调试,如果你想让程序直接运行起来而不调试就可以直接使用。

F9:创建断点和取消断点。
Ctrl+Shift+F9:删除全部断点。

F10:逐过程进行调试,通常用来处理一个过程,一个过程可以是一次函数调用,或者是一条语句。
F11:逐语句,就是每次都执行一条语句,但是这个快捷键可以使我们的执行逻辑进入函数内部(这是最长用的)。

一般开始调试代码,按下F10或F11。

  • F10和F11的区别?
  • 按下F10,从主函数第1条代码开始调试,再按F10执行下一条语句,如果下一条语句是一次函数调用,则不进入函数内部,直接把函数的结果运行出来,这个过程叫做逐过程调试。
  • 按下F11,从主函数第1条代码开始调试,再按F11执行下一条语句,如果下一条语句是一次函数调用,则进入函数内部,把函数里的代码也一条一条的执行,执行完成后,返回到调用函数的地方。这个过程叫做逐语句调试,即每条语句都执行。

四、启动调试后,如何查看局部变量的值

  • 在菜单栏依次找到调试-窗口-监视-监视(1)(2)(3)(4)任意打开一个即可。
    在这里插入图片描述
  • 打开之后默认是这样的,点击输入你想要查看的局部变量,回车确定。

在这里插入图片描述

  • 输入之后是读取显示内存的,因为语句还没有执行到创建arr数组的那条语句。按下F10走下一条语句。
    在这里插入图片描述

  • 多次按下F10, 可以看到局部变量的值。此时代码执行到第12行。
    在这里插入图片描述

  • 如果遇到函数,按下F10会直接把函数当成一条语句执行,因为F10是逐过程调试,一个过程可以是一条语句也可以是一次函数调用。
  • 想进入函数内部,就要按下F11, F11是逐语句调试,他会进入到函数内部,并把函数体的代码一条一条的执行。

4.1 启动调试后,二维数组的形参如何查看?

在这里插入图片描述

我们发现实参arr1传给形参arr, 在监视窗口查看arr变量,但是只能看到前5个元素,也就是第一行的元素,那么如何查看二维数组中所有的元素呢?

  • 我们在变量arr后面紧接着输入,和二维数组的行数,就能显示二维数组中所有的数据了。

在这里插入图片描述

五、启动调试后,如何查看内存中的数据

5.1 查看变量在内存中的存储

  • 在菜单栏依次找到调试-窗口-内存-内存(1)(2)(3)(4)任意打开一个即可。

在这里插入图片描述

  • 打开过后是这样的

在这里插入图片描述

#include <stdio.h>

int main()
{
	int a = 20;
	//00000000 00000000 00000000 00010100 -- 原码,反码,补码
	//16进制表示: 0x00 00 00 14
	//在内存中小端存储:14 00 00 00

	return 0;
}
  • 我们在地址栏中输入a的地址(&a),右侧修改展示的列数为4列。我们看到,变量a的地址是0x0000000000000004, 内容是?? ?? ?? ??。这是因为a变量还没有创建,按下F10/F11创建变量a。
    在这里插入图片描述
  • 我们发现变量a的地址变成了0x000000100390F934, 内容变成了14 00 00 00。内容和我们计算的结果是一致的。地址为什么变化了呢?因为刚开始调试,未执行到int a = 20;这条语句,变量a还没有创建,编译器未给变量分配地址,刚开始的地址是随机值。
    在这里插入图片描述

5.2 查看数组在内存中的存储

  • 我们在点击第19行,按下F9, 打个断点,在按下F5调试运行到第19行。此时整型数组arr已经创建,arr里面存放的是整型数据,并赋予了值,1,2,3… … 8,9,10。

如果对存储的数据有不理解的地方,可以查看数据在内存中的存储格式的详细解释
整型数据和浮点型数据在内存中的存储格式

在这里插入图片描述

总结

以上就是在VS中经常用到的调试技巧。

  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值