第十章:C语言的调试

文章介绍了C语言调试的基本概念,强调了调试的重要性,包括Debug和Release模式的区别。在Windows环境下,详细说明了如何设置断点、使用快捷键进行调试,并展示了查看程序状态的方法。此外,文章通过举例讲解了编程中常见的错误类型和如何利用const关键字减少bug。最后,提供了模拟库函数strcpy的实现作为示例。
摘要由CSDN通过智能技术生成

> 作者:დ旧言~
> 座右铭:松树千年终是朽,槿花一日自为荣。

> 目标:C语言的简单结构体。

> 毒鸡汤:行到流水处,坐看云起时。

> 专栏选自:C语言初阶

> 望小伙伴们点赞👍收藏✨加关注哟💕💕

前言

很多小伙伴刚开始听到C语言的调试,这是个啥,表示很怀疑,敲代码不就是直接就是干嘛,结果很多小白们,一运行错误多的数都数不过来。就开始这改改,那删删,莫名奇妙就运行成功了。到最后都不知道到底那错了。有一种小朋友是否有多问号的感觉。可想而知代码调试有多么重要,一个正真的大佬,20%在敲代码,80%在调试代码。咱们不扯别的,直接进入今天的主题--C语言调试

 

 一,bug

概念:

在 Mark II 计算机上工作时电脑不能正常运作了,霍普和整个团队都搞不清楚为什么。后来才发现,是一只飞蛾意外飞入了一台电脑内部而引起的故障。终于把问题解除了,霍普在日记本中记录下了这一事件。

二,调试的重要性

①调试的步骤

  1. 发现程序错误的存
  2. 以隔离、消除等方式对错误进行定位
  3. 确定错误产生的原因
  4. 提出纠正错误的解决办法
  5. 对程序错误予以改正,重新测试

②Debug和Release的介绍

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

三,Windows环境调试介绍

①准备调试(要在Debug环境下才可以调试)

②学会快捷键

  • F5:启动调试,经常用来直接跳到下一个断点处。(在循环中跳到逻辑上的断点)
  • F9:创建断点和取消断点。
  1. 断点的重要作用,可以在程序的任意位置设置断点。
  2. 这样就可以使得程序在想要的位置随意停止执行,继而一步步执行下去。
  • F10:逐过程,通常用来处理一个过程,一个过程可以是一次函数调用,或者是一条语句。
  • F11:逐语句,就是每次都执行一条语句,但是这个快捷键可以使我们的执行逻辑进入函数内部(这是最常用的)。
  • CTRL+F5:开始执行不调试。

③调试的时候查看程序当前的信息

1.查看临时变量的值

2.查看内存信息 

 3.查看调用堆栈

四,编程常见的错误

  1. 编译型错误
  2. 链接型错误(无法解析的外部命令)
  3. 运行时错误逻移出现问题

五,采用相关代码来减少bug

方法:

  • const关键字(const的作用可以避免无意中由于修改数据造成的编程错误。)
  • const修饰指针变量的作用

图解:

举个栗子:

//模拟实现库函数:strcpy
#include<stdio.h>
#include<assert.h>

char* my_strcpy(char* dest, const char * src)
{
	char* ret = dest;
	assert(dest != NULL);//断言防止空指针
	assert( src != NULL);//断言防止空指针
	//1.第一种写法
	//while (*dest++ = *src++) 
	//	;
	//2.第二种写法
	while (*src != '\0')
	{
		*dest = *src;
		dest++;
		src++;
	}
	*dest = *src;// \0 的拷贝
	return ret;
}


int main()
{
	//初始化
	char arr1[] = "hello bit"; 
	char arr2[20] = "xxxxxxxxxxxxx";
	char* p = NULL;
	//调用函数
	my_strcpy(arr2, arr1);
	//打印arr2
	printf("%s\n", my_strcpy(arr2, arr1));
	return 0;
}

结束语

       今天内容就到这里啦,时间过得很快,大家沉下心来好好学习,会有一定的收获的,大家多多坚持,嘻嘻,成功路上注定孤独,因为坚持的人不多。那请大家举起自己的小手给博主一键三连,有你们的支持是我最大的动力💞💞💞,回见。

​​​ 

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值