C语言的调试技巧(详细)

在C语言来调试机器所检查不出来的错误,这是机器所不能达到的,来查看程序员的功力。

下面来看一下基础操作

F5:进行调试的开始

CTRL+F5:开始运行不调试

F10:逐语句进行调试

F11:能进入到函数内部进行更细微的调试

F9 :  断点和取消断点

注意:在调试过程中要设置成debug开发版本

          把ESC+FN打开

          如果无 法进行调试,可以选中代码来进行调试。

彩蛋:好用快捷键推荐:

ctrl+k+c注释

ctrl+k+u取消注释

监视窗口:自动窗口

                 手动输入

                 局部变量

内存

反汇编

寄存器

调用堆栈:反馈函数调用逻辑

案例1:

int main()
{
	int i = 0;
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	for (i = 0; i <= 12; i++)
	{
		arr[i] = 0;
		printf("hehe\n");
	}
	return 0;
}

测试发现:arr之后会越界访问;

栈区规律:

1.i和arr是局部变量

    局部变量是放在栈区上的

栈区内存的使用习惯是:

先使用高地址空间,再使用低地址空间;

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

#include
int main()
{
	int n = 0;
	scanf("%d", &n);
	int i = 0;
	int j = 0;
	int sum = 1;
	int ret = 0;
	
	for (i = 1; i <= n; i++)
	{ 
		sum = 1;
		for(j=1;j<=i;j++)
	{
		sum *= j;
		
	}
      ret += sum;

	}
	printf("%d\n", ret);
	return 0;
}
#include
#include
void void_strcpy(char* dest, char* src)
{
	/*while (*src != '\0')
	{
		*dest = *src;
		*dest++;
		*src++;
	}
	*dest = *src;*/
	while (*dest++ = *src++)
	{
		;
	}
}

int main()
{
	char arr1[20] = "xxxxxxxxxxxxx";
	char arr2[] = "hello";
	void_strcpy(arr1, arr2);
	/*strcpy(arr1, arr2);*/
	printf("%s", arr1);
	return 0;
}

你可能感兴趣的:(C语言基础,编辑器,c语言,算法)