VS环境-C语言调试技巧

 

  

调试快捷键(调试时才能看到)

F9——设置断点(代码执行后,停在断点处),和F5(跳到下一个断点处)连用。

F10——逐过程,不进入函数内部

F11——逐语句,进入函数内部(像printf这样的库函数不一定能看),shift+F11跳出函数内部。

CTRL+F5——开始执行不调试 

shift+F9——快速监视

shift+F5——停止调试

 窗口

自动窗口——不用手动添加变量名,但是有些变量名会自动消失,不能自行添加变量名。

局部变量——不用手动添加变量名,只能观察局部代码块中的内容,不能自行添加变量名。

监视——最常用 

内存——常用

反汇编、寄存器

调用堆栈(像压子弹一样看函数调用的关系)

 

 在红色小圆点处右击,可以设置条件断点,提高速度。

#define _CRT_SECURE_NO_WARNINGS 1

#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++)
	{
		printf("hehe\n");
		arr[i] = 0;
	}

	return 0;
}

 神奇代码死循环的原因

内存分为几个区:栈区/堆区/静态区

而栈区内存放的是局部变量

1.栈区的默认使用:先用高地址处的空间,再使用低地址处的空间。

2.数组随着下标的增长,地址是由低到高的。

而数组越界了,就会一直向上放值,直到i的值改变成0;

至于为什么要空两格,也就是8个字节,这是给你容错用的。不同编译器也不同,也就是说内存布局不同。

 Debug版本

 Release版本

 

assert(断言) ,用头文件#include <assert.h>

可以判断()中的语句是否有问题。有问题会查出错误。

断言按中文的意思就是十分肯定的说,

那assert(dest != NULL),说是十分肯定dest不是NULL,是NULL会报错。

 

1)const 放在左边时,修饰的是*p,指针指向的值不能改变,也就是说进行解引用时会err。

2)const放在右边时,修饰的是p,num的地址,可以进行这个地址的解引用操作,但是不能修改它的地址。

 

 

 加上const使代码更具有安全性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值