调试入门:5大步骤+2个实战案例,轻松掌握程序除错技巧
创作时间:
2025-01-21 21:54:14
作者:
@小白创作中心
调试入门:5大步骤+2个实战案例,轻松掌握程序除错技巧
调试是程序员必备的基本功之一。本文将从调试的基本概念出发,详细讲解调试的步骤、Debug与Release版本的区别、断点的使用方法、监视窗口的运用,并通过两个实例演示如何发现和解决代码中的错误。无论你是编程初学者还是有一定经验的开发者,都能从中学到实用的调试技巧。
什么是调试?
调试(英语:Debugging / Debug),又称除错,是发现和减少计算机程序或电子仪器设备中程序错误的一个过程。
调试的步骤
- 发现程序错误的存在
- 以隔离、消除等方式对错误进行定位
- 确定错误产生的原因
- 提出纠正错误的解决办法
- 对程序错误予以改正,重新测试
Debug与Release版本的区别
Debug版本包含调试信息,不作任何优化,便于程序员调试程序。例如,以下代码在Debug版本下的运行结果:
#include<iostream>
using namespace std;
int main()
{
int arr[10];
for (int i = 0; i < 10; i++)
{
arr[i] = i+1;
}
for (int i = 0; i < 10; i++)
{
cout << arr[i];
}
return 0;
}
点击调试后,在对应的文件中会创建debug文件,里面包含.exe的可执行文件:
Release版本则对代码进行了优化,调试信息较少。下图是Release版本的调试界面:
断点的使用与快捷键
断点可以在程序的任意位置设置,使得程序在指定位置停止执行,便于逐步检查代码。常用的调试快捷键有:
- F5:启动调试,跳到下一个断点
- F9:创建或取消断点
- F10:逐过程执行
- F11:逐语句执行
- CTRL + F5:开始执行不调试
监视窗口的使用
通过以下步骤调出监视窗口:
在程序运行之后按以下顺序点击
运用监视可以看到数据具体的变化
当然运用监视还可以看到内存窗口
当前存放的整形,因此将列数设置为4,因为是16进制,两个零代表一个字节,一行就是4个字节也就是一个整形数据
当然还有其他自动窗口,局部变量等就不逐一介绍了
实战演练
实例一:计算阶乘和
实现代码:求 1!+2!+3! …+ n! ;不考虑溢出。
int main()
{
int i = 0;
int sum = 0;//保存最终结果
int n = 0;
int ret = 1;//保存n的阶乘
scanf("%d", &n);
for(i=1; i<=n; i++)
{
int j = 0;
for(j=1; j<=i; j++)
{
ret *= j;
}
sum += ret;
}
printf("%d\n", sum);
return 0;
}
通过监视窗口,可以发现ret在每次内循环结束后没有恢复初始值。
实例二:分析死循环原因
研究程序死循环的原因。
#include <stdio.h>
int main()
{
int i = 0;
int arr[10] = {0};
for(i=0; i<=12; i++)
{
arr[i] = 0;
printf("hehe\n");
}
return 0;
}
在Debug环境中,会导致修改了i的值为0
出现如下图所示导致死循环
arr[10]与arr[11]是抽查位,但程序未结束,编译器无法进行抽查
抽查位的介绍见C++入门中空间越界小知识
在Release环境中系统做了优化就不出现死循环而是编译词报错
总结
调试需要多动手实践才能进步。除了掌握基本的调试技巧外,还应注意以下几点:
- 使用assert进行断言检查
- 尽量使用const限定符
- 养成良好的编码风格
- 添加必要的注释
- 避免常见的编码陷阱
记住,真相永远只有一个!
热门推荐
一到冬天,就馋这10道炖菜,滋补暖身又开胃,驱寒又滋补
如何正确解读体检报告
绩效奖金计算公式怎么确定?
向量叉乘:从历史到应用的全面解析
血脂和胆固醇的关系是什么
风水学入门,掌握环境布局的艺术
双向下单操作技巧详解:如何在金融市场中灵活运用这一策略?
资本寡头的崛起与影响:从苏联到现代经济全球化
测测你的犯罪分析:一种基于人工智能的犯罪预测工具
恶心呕吐的原因及缓解方法
关于视同缴费年限的养老金指数计算方法解析
早上玉米和鸡蛋可以一起吃吗
眼睛干涩可以热敷吗
海带扣(海带扣汤家常做法)
排序算法进阶——归并排序【详细图解,递归和非递归】
象州法院:她们用专业和坚守诠释巾帼风采
主动辞职算失业吗?没签劳动合同有赔偿吗?
汇率变动的影响有哪些?解析汇率变动对经济的影响
2025年研考国家线已发布 复试录取工作启动
事业单位人员能否开公司?相关法律问题详解
比例分成的计算方法有哪些?这些计算方法的实际应用如何?
南宁大明山风景区门票价格、开放时间、交通指南、一日游攻略
倚天中,可不止明教被六大派围攻,还有一门派,被六大派逼的更惨
移动泵车的启动前检查与运行管理
漳州的美食有哪些?
额头长痘痘是什么原因?如何调理?
鼻炎按摩哪个穴位 缓解鼻炎症状的方法
悉尼旅游特种兵,盘点必打卡的12个景点!
澳大利亚惊艳的海岸步道
硝酸甘油是救命良药还是催命“炸弹”?看你怎么服用!