【C语言】——调试技巧

目录

​编辑

①前言

 1.什么是Bug?

2.什么是调试? 

2.1调试的基本步骤 

2.2Release与Debug

3.常用快捷键 

4.如何写出好的代码

4.1常见的coding技巧  

👉assert() 

 👉const() 

const修饰指针:


 

前言

  调试是每个程序员都必备的技能之一,调试能在程序逐步运行过程中锁定目标变量,找出问题,解决问题

一般把程序中的运行出现的问题称为 "Bug" ,Bug是程序员一生之敌

 1.什么是Bug?

Bug: 可以称之为“臭虫",现在指的是漏洞,就是在安全系统上出现缺陷,攻击者可以对未授权的情况下进行攻击,Bug(计算机漏洞) 可以形容在各个领域范围之内所出现的漏洞

 

👆第一次被发现的导致计算机错误的飞蛾,也是第一个计算机程序错误。 

2.什么是调试? 

调试:英文DeBug,又称作是除错,是发现和减少计算机程序设备中和电子仪器错误的过程。

调试其实就是找出bug,计算机有bug一定是程序的问题。

我们的调试环境:VS2019,当然VS系列方法都大同小异,掌握核心方法就行了。 

2.1调试的基本步骤 

✌发现程序错误的存在

✌以隔离、消除等方式对错误进行定位

✌确定错误产生的原因

✌提出纠正错误的解决办法

✌对程序错误予以改正,重新测试 

2.2Release与Debug

Release:

发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。是不能进行调试的。

Debug:

调试版本,是程序员使用的开发版本,不作任何优化,便于程序员调试程序,是可以进行调试的(包含了相应的调试信息)。

 

👇这段代码在Debug和Release模式下产生不同效果 

Debug:死循环打印;

Release:打印13行;

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("Who Say!!!\n");
        arr[i] = 0;
   }
    return 0;
}

3.常用快捷键 

 ✌( •̀ ω •́ )✌最常使用的几个快捷键:

F5 启动调试:

经常用来直接跳到下一个断点处。

F9 创建断点和取消断点:

断点的重要作用,可以在程序的任意位置设置断点。 这样就可以使得程序在想要的位置随意停止执行,继而一步步执行下去。

F10 逐过程:

通常用来处理一个过程,一个过程可以是一次函数调用,或者是一条语句。

F11 逐语句:

就是每次都执行一条语句,但是这个快捷键可以使我们的执行逻辑进入函数内部(这是最 长用的)。

CTRL + F5 :

开始执行不调试,如果你想让程序直接运行起来而不调试就可以直接使用。

F5和F9都是搭配使用的。

初学者掌握调试的内容可以达到事半功倍的效果,多多使用调试可以提高程序执行代码的效率。

4.如何写出好的代码

✌( •̀ ω •́ ):  代码整洁且规范

✌( •̀ ω •́ ):  注释清晰,且通俗易懂(代指写代码的人)

✌( •̀ ω •́ ):  可读性,有效性,可维护性

✌( •̀ ω •́ ):  bug尽量能够达到自己能够预期的范围之内,就是bug少,或者几乎没有bug

                        文档齐全,不乱去堆放 

4.1常见的coding技巧  

👉:养成良好的编码风格
👉:注释必要的还是要去添加,提高代码的可读性
👉:避免编码的陷阱
👉:尽量使用const
👉:使用assert,头文件#include<assert.h>,在assert();里面的表达式如果为真的话,assert表达式为真就什么都不会发生;

如果assert的表达式为假,那么就会报错

👉assert() 

是一个宏,不是函数

assert();括号里面放一个表达式

#include<assert.h>
void sort(const char* str)
{
    //assert(str!=NULL);
    assert(str);  //如果是空指针,表示为0,0是假;
}

 👉const() 

将变量转成常量

但并不是真正的变成常量,只是语法形式变成常量;本质上还是变量,

counst 修饰的变量不能再被改变;

const修饰指针:

修饰指针有两种方法

1. counst int* p ;

2. int * counst p;

  • const 放在的左边

限制的指针指向的内容,也就是说: 不能通过指针来修改指针指向的内容

但是指针变量是可以修改的,也就是指针指向其他变量的

  • const 放在的右边

限制的是指针变量本身,指针变量不能再指向其他对象

但是可以通过指针变量来修改指向的内容

int main() {
	const int num = 10;
	printf("num = d\n", num);
	//const 放在*的左边
	const int* p = &num;
	*p = 20;                //err
	int n = 100;
	p = &n;    //ok
	printf("num = d\n", num);
	return 0;
}
int main() {
	const int num = 10;
	printf("num = d\n", num);
	//const 放在*的右边边
	 int* const p = &num;
	*p = 20;                //OK
	int n = 100;
	p = &n;    //err
	printf("num = d\n", num);
	return 0;
}
	

 以上就是我对【C语言】调试技巧的介绍,文中不足的地方请指点!感激不尽!!!

 

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值