您现在的位置是:C语言初级:十一代码调试技巧 >>正文

C语言初级:十一代码调试技巧

德薄能鲜网8742人已围观

简介❤欢迎大佬访问#xff1a;折枝寄北-CSDN博客。折枝寄北擅长C语言的初级知识,折枝寄北关注python,c++,java,qt,c语言领域.。https://blog.csdn.n...

❤欢迎大佬访问#xff1a;折枝寄北-CSDN博客。折枝寄北擅长C语言的初级知识,折枝寄北关注python,c++,java,qt,c语言领域.。https://blog.csdn.net/2303_80170533?type=blog。
❤文章属于专栏。icon-default.png?t=O83Ahttps://blog.csdn.net/2303_80170533/category_12794764.html?spm=1001.2014.3001.5482

前言:

  在C语言编程的初始阶段,代码调试。是一项至关重要的技能。无论是初学者还是经验丰富的程序员,代码无法按预期运行。此时,掌握一些有效的调试技巧可以显著提高解决问题的效率,使编程过程更加顺畅。

  代码调试技巧涵盖了从基本语法错误检查到复杂逻辑问题的调查。这包括使用调试工具(GDB)、添加调试信息(如果打印语句)、设置断点,单步执行代码,检查变量值和内存分配。通过这些方法,开发者可以逐渐缩小问题范围,在代码中定位和修复错误。

  掌握良好的代码编写习惯,如模块化设计、清晰的变量命名和合理的注释,在调试过程中也能事半功倍。这些习惯不仅有助于理解代码,还可以让别人在需要的时候快速上手,协助调试。

1.bug࿱是什么?f;

来源󿂋ug;文心一言提供的答案)

  1. 昆虫起源:计算机科学,“bug“这个词最初指的是实际的昆虫。在计算机发展的早期阶段,如电子管计算机和晶体管计算机时期󿀌计算机的物理结构相对庞大而复杂,机器内部布满了复杂的电路和线路。这些环境很容易吸引各种昆虫,尤其是蟑螂、蜘蛛等小昆虫。这些小昆虫有时会爬到电路板上＀。c;短路或断路,导致计算机故障。因此,工程师们开始用“工程师们开始用”bug“生动地描述昆虫引起的计算机故障。

  2. 历史记录。:据说,1945年9月9日,美国哈佛大学Grace Hopper(格蕾丝·霍珀)调试Mark的医生 II计算机时󿀌发现了一只死蛾(moth)卡在继电器触点之间,这导致了计算机故障。她用胶带把蛾子粘在日志上＀上。c;并标注了“First actual case of bug being found"(第一个实际bug案例)。这一事件被广泛认为是“bug“这个词在计算机领域的起源。

2.调试的作用。

调试(英语:Debugging /。 Debug。),也叫除错�计算机程序或电子仪器设备中程序的发现和减少 一个错误的过程。

 调试步骤。

发现程序错误。

通过隔离和消除来定位错误。

确定错误的原因。

提出纠正错误的解决方案。

纠正程序错误,重新测试。

3.介绍debug和release。

Debug 通常称为调试版。,它包含调试信息,不进行任何优化,方便程序员调试程序。 Release 被称为发布版。,它通常进行各种优化,使程序在代码大小和运行速度上都是最好的 ,使用户能够很好地使用它。

int main(){ 	int n = 0;	int a = 0;	scanf("%d %d", &a, &n);//2 5	//计算	int sum = 0;	int i = 0;	int k = 0;	for (i = 0; i < n; i++)	{ 		k = k * 10 + a;		sum += k;	}	//打印	printf("%d\n", sum);	return 0;}。

Debug环境中上述代码的结果显示:

Release环境中上述代码的结果显示:

所以我们说调试是在Debug版本的环境中,在代码中找到潜在问题的过程

4.windows环境调试介绍

4.1   准备调试环境。

调试代码,选择在Debug环境中进行。

4.2  学会使用快捷键。按f10进入调试,在上图中,我们可以看到如何调试和查看相应的变量和操作步骤。

最常用的快捷键:

F5 启动调试󿀌它通常被用来直接跳到下一个断点

F9 创建和取消断点 #xff0c;断点可以设置在程序的任何位置。 这样,程序就可以在想要的位置随意停止执行,然后一步一步执行

F10 过程,通常用于处理过程,一个过程可以是函数调用,或者一个句子。

F11 逐句,每次都要执行一个句子,但是这个快捷键可以让我们的执行逻辑进入函数内部(这是最 长用)。

CTRL + F5 开始执行不调试󿀌假如你想让程序在不调试的情况下直接运行,就可以直接使用。

CTRL+F可查询文件中的变量名等。

4.3  检查程序的当前信息。

查看临时变量值 调试开始后,用于观察变量值。

5.如何编写好代码(易于调试)

1. 代码运行正常 2. bug很少 3. 效率高 4. 可读性高 5. 可维护性高 6. 注释清晰 7. 文档齐全。

1. 使用assert()//断言。

2. 尽量使用const

3. 形成良好的编码风格。

4. 添加必要的注释。

5. 避免编码陷阱。

//实现库函数strlen-求字符串长度unsigned int my_strlen(const char * str){ int count = 0; assert(str != NULL); while (*str++ != '\0') { count++; } return count;}int main(){ char arr[] = "abcdef"; printf("%d\n", my_strlen(arr)); return 0;}。

注意:

1. 设计分析参数(命名,类型),设计返回值类型。

2.野指针,空指针危害。

3. 使用assert,assert的作用。

4. 参数部分 const 的使用。

void my_strcpy(char* dest, char* src){ //if (src == NULL || dest == NULL)//防止空指针 //{ // return; //} //断言 表达式＀可以放在/assert中c;表达式的结果是假的,会报错。 //如果是真的,什么都不会发生 ///assert在release版本中优化 /*assert(src != NULL); assert(dest!= NULL);*/ assert(src && dest); while (*dest++ = *src++)// ASCII码值为0,while循环判断为假,停止 { ; }}。

///const修改指针变量//1.把const放在*的左边,修改指针指向的内容,表示指针指向的内容,指针不能改变////const int* p=&num;//  //2.const放在*的右边,const修改了指针变量本身,// 指针变量本身的内容不能改变,但是指针指向的内容不能改变///int* const p=&num;//int main()///{ ///	/*const int num = 10;//	const int* p = &num;//	*p = 20;*///	//printf("%d\n", num);////	return 0;//}。
6.常见的编程错误。

6.常见的编程错误。

1 编译型错误 直接阅读错误提示信息(双击),解决问题。或者可以通过经验来完成。相对简单。

2 链接型错误 查看错误提示信息󰀌错误信息中的标识符主要在代码中找到,然后定位问题所在。一般来说,标识符名不是 存在或拼写错误。

3 运行时错误 借助调试�逐步定位问题。最难搞。

Tags:

相关文章



友情链接