目录
编辑
①前言
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 = #
*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 = #
*p = 20; //OK
int n = 100;
p = &n; //err
printf("num = d\n", num);
return 0;
}
以上就是我对【C语言】调试技巧的介绍,文中不足的地方请指点!感激不尽!!!