调试入门: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限定符
- 养成良好的编码风格
- 添加必要的注释
- 避免常见的编码陷阱
记住,真相永远只有一个!
热门推荐
筋头巴脑是什么东西?
积分的线性性质
读懂城市|凭泉水“冠绝天下”的济南,如何诠释优雅生活
办理食品经营许可证:流程、要求及注意事项
派出所对民事纠纷怎么处理?
“憋气”时间超过“这个数”恭喜你,肺还算健康,你都达标吗?
警惕心理疾病的社交传染!多种方式提升心理免疫力
辩论策略:构建无懈可击的逻辑框架
哪些交通事故情况需要立即报警?
绿色能源及减排系统
意想不到的汽车材料:从食物废料到废旧衣物的绿色创新
医生眼中的「辛辣」食物是什么?原来你一直忌口错了
成本优化是什么?如何实施成本优化?
多模式利润中心:构建企业多元化盈利模式的实践指南
AI伦理政策,也需要“全球化”
3种跑步方法助你提升速度,减少受伤风险
灵活就业:按60%和100%档次缴费20年,每月养老金能差多少钱?
高考可以考哪些语言?除了英语还能选什么语种?选小语种有什么好处?
四川省中职生资助在线申请指南:如何联系相关部门,查询进度及解决问题?
探秘多糖铁:何时服用才适宜?
孕期必知:孕妇铁蛋白多少算贫血,对策全攻略
BLDC无刷直流电机Simulink模型的搭建与分析
运动笔记 | 理解骨盆
早上运动好还是晚上运动好?研究发现:不同的人“最佳运动时间”不同
手机也能拍出专业级风光大片!
拍摄梦幻天空的技巧指南
母亲节快乐!推荐六部关于母亲的高分电影吧
炒股看什么财经新闻最好,掌握市场脉搏,把握投资先机
给父母买什么样的保险好 投保注意事项有哪些
PP面处理油墨常见问题及解决方案