vs调试技巧

本文详细介绍了bug和debug的概念,以及VisualStudio中debug和release模式的区别。重点讲解了调试工具的使用,包括快捷键、监视和内存观察,以及示例代码中内存管理与越界问题。同时提及了常见的编译和链接错误类型。
摘要由CSDN通过智能技术生成

1.bug

bug是漏洞,指电脑系统程序中的缺陷或问题

2.debug

debug是调试,即消灭bug。通过手段定位问题所在,通过逐过程调试、隔离和屏蔽代码,确定错误原因,修饰代码,重新测试。

3.debug&release

vs有debug和release选项。

3.1debug

调试版本,包含调试信息,不作优化,便于调试程序

如果经常需要调试,可以选择debug,编译生成的是debug版本的可执行程序,包含调试信息,可以直接调试

3.2release

发布版本。是已经经过了各种优化,在大小和速度上都已经是最优,可以直接让用户使用的。

开发工程师写完代码交给测试对程序进行测试,直到代码质量符合用户使用要求,这时就设置为release版本,编译产生的可执行程序是不包含调试信息,大小上也会比debug版本小。

4 vs调试快捷键

4.1环境

将解决方案配置设置为debug。

4.2快捷键

F9:创建断电和取消断点。断点作用是可以在程序任意位置设置断点,当程序执行到断点为止时暂时停止执行,接下来才用F10和F11等快捷键观察细节

条件断点,即满足条件才触发断点(比如要求跳到某一次循坏,省去繁琐的F10)

F5:启动调试,经常用来直接跳到下一个断点处,配合F9

F10:逐过程,用来处理一个过程,可以是一次函数调用,也可以是一条语句

F11:逐语句,每次执行一条语句,可以进入函数的内部执行过程,只有F11才能观察函数调用地方内部的执行细节

CTRL+F5:执行不调试。

5.监视和内存观察

观察发生了变化的量

5.1监视

调试-窗口-监视     可以打开监视窗口,输入要观察的对象即可(数组/变量/常量等)

5.2内存

当监视不足以观察时,可以使用内存

调试-窗口-内存

 

左边ox开头是内存的地址。中间英文和数字的组合是内存数据的十六进制状态。右边带有符号的是内存的数据解析只能观察文本信息。

输入arr,&num,&c这类地址,观察该地址处的数据。

栈区内存,习惯从高地址向低地址使用,变量i的地址是较大的,arr数组的地址整体是小于i的地址

数组在内存中的存放是:随着下标的增长,地址是由低到高变化的。

代码中变量内存分配和地址分配由编译器指定,不同编译器会产生区别


int main()
{
	int i = 0;
	int arr[10] = { 0 };
	for (i = 0; i <= 12; i++)
	{
		arr[i] = 0;
		printf("hehe\n");
	}
	return 0;
}

在这个代码中,如果是vs环境,i与arr在内存栈区的存储,中间是2个整型空间的,循坏i到了13就会出现死循环,因为arr[12]在内存中与i的地址恰好一样,i每次到了13就会重置为0,arr[12]也是如此,因此造成死循环。

但越界的问题还是存在的,就算改成<=11,是会报出越界的错误。就算先定义数组再定义变量,也不影响越界的报错。 

数组传参,数组名后面跟数字,数组名,n(一维数组中是展现的元素个数/二维数组中是出现的行数)

编译错误:基本是语法错误

链接错误:头文件没包含,拼写错误,标识符名不存在,引用的库不存在。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值