拒绝-迷信式调试!!!!
调试是什么?
调试(英语:Debugging / Debug),调试是保证所提供的设备能够正常运行的必须程序。又称除错,是发现和减少计算机程序或电子仪器设备中程序错误的一个过程。
调试的基本步骤
- 发现程序错误的存在
- 以隔离、消除等方式对错误进行定位
- 确定错误产生的原因
- 提出纠正错误的解决办法
- 对程序错误予以改正,重新测试
debug和release的介绍
Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。
Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。
对于下列代码debug和release的区别:
#include <stdio.h>
int main()
{
int a = 10;
printf("%d\n", a);
return 0;
}
在上述代码所属的项目下分别产生debug和release的应用程序
从上图中两种不同版本的相同代码所产生的应用程序的大小却相差30kb。
而且两种版本的反汇编代码也有差异:
debug:
release:
release版本对于代码的优化,可用下列代码验证:
#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版本下代码,程序陷入死循环。
release版本下代码,程序正常运行。
原因:
变量在内存中开辟的顺序发生了变化,影响到了程序执行的结果。
注意:
在release环境下调试不易观察到变量的变化,所以平时程序员所编写代码的环境就是debug环境下的。
所以我们说调试就是在Debug版本的环境中,找代码中潜伏的问题的一个过程。
windows环境调试介绍
调试环境的准备
在环境中选择 debug 选项,才能使代码正常调试。
学会快捷键
在上方任务栏中调试窗口中:
最常使用的几个快捷键:
F10
逐过程,通常用来处理一个过程,一个过程可以是一次函数调用,或者是一条语句。
#include <stdio.h>
int main()
{
int i = 0;
for