1.调试的基本步骤 a.发现程序错误的存在 b.以隔离、消除等方式对错误进行定位 c.确定错误产生的原因 d.提出纠正错误的解决办法 e.对程序错误予以改正,重新测试

2.debug和release debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。 release称为发布版本,往往进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好的使用。

3.VScode常用调试快捷键 F5-启动调试,经常用来直接调到下一个断点处; F9-创建断点和取消断点,断点的重要性:可以在程序的任意位置设置断点,这样就可以使程序在想要位置停止执行,继而一步步执行下去; F10-逐过程,通常用来处理一个过程,一个过程可以是一次函数调用,也可以是一条语句 F11-逐语句,就是每次都执行一条语句,这个快捷键可以使执行逻辑进入函数内部(这是常用的); Ctrl+F5-开始执行不调试,可以让程序直接运行而不调试。 调试时可以查看程序当前的信息: 查看临时变量的值; 查看内存信息; 查看调用堆栈; 查看汇编信息; 查看寄存器信息;

4.如何写出易于调试的代码 常见coding技巧: a.使用assert b.尽量使用const c.养成良好的编码风格 d.添加必要的注释 e.避免编码的陷阱 eg:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>

//字符串拷贝
void my_strcpy(char* dest, const char* src)
{
	assert(dest != NULL);//断言-保证指针有效性
	assert(src != NULL);
	//将src指向的字符串拷贝到dest指向的空间,包含'\0'
	while (*dest++ = *src++)
	{
		;
	}
}

int main()
{
	char arr1[] = "#############";
	char arr2[] = "hello";

	my_strcpy(arr1, arr2);

	printf("%s\n", arr1);

	return 0;
}

5.常见错误分类 a.编译型错误 直接看错误提示信息,解决问题,相对简单; b.链接型错误 看错误提示信息,主要在代码中找到错误信息中的标识符,然后定位问题所在,一般是标识符名不存在或拼写错误; c.运行时错误 借助调试,逐步定位问题,最难处理。