程序员如何调试?如何找错?

Posted 流浪孤儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序员如何调试?如何找错?相关的知识,希望对你有一定的参考价值。

前言:

本篇文章内容概念较多,但确非常重要,望君细细观看,必能让您从此获益

开发环境win10环境,编译器为visual studio 2017(下面的结果依赖于这个环境,visual studio2013~2019都行)

首先说一下这次我们要调试的程序代码:

#define _CRT_SECURE_NO_WARNINGS 1
#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;
}

常见的错误分类:

 编译型错误

 编译型错误

 运行时错误:

需要进行调试

调试:

1、调试环境的准备:选择DEBUG模式

release版本对我们来说是无法进行调试的,测试开发人员才会使用它

 

       2、使用快捷键:

 第一对快捷键:F5与F9

 

 

 第2对快捷键F10与F11

 

 第3个快捷键ctrl+F5

执行你的程序,不进行调试

 

 上面就是我们要调试的代码

再次拷贝一下

#define _CRT_SECURE_NO_WARNINGS 1
#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;
}

运行该程序就会发现会陷入死循环

数一数输出了多少hehe?

不用怀疑确实陷入了死循环,来,我们通过调试找出这个原因

提示:一定要在win10下且用visual studio系列的编译器哦

打好断点并按F5如图

 在调试状态下那么就可以调出监视窗口,记住一定要在调试状态下,不然是不会有监视选项的

 在监视窗口输入arr与i

 

 接下来按F10或者F11进行调试

当按下多次F10或F11到达这一步

 好家伙,i终于到了12,是不是for循环结束了呀?再按一下F10或F11

 这是啥情况?怎么i又变为0了?大白天见乌龟了呀!!!

继续添加调试的变量

 发现i与arr[12]的地址是相同的,也就是说他们有一个共同的家(内存空间),

他们的值是相同的,当i=12时,arr[12]被赋值为0,那么i又变回0了!!!

解决办法:换成release

或者改成这样:

 

好了通过调试终于解决了问题,至于为什么要这样改我会在C语言知识讲堂上细讲,附上第一节的C语言知识讲堂

1)C语言之数据类型、变量、常量

以上是关于程序员如何调试?如何找错?的主要内容,如果未能解决你的问题,请参考以下文章

运行/调试你的PHP代码

6.调试程序

我应该如何使用 Outlook 发送代码片段?

如何使用 Swift 使用此代码片段为 iOS 应用程序初始化 SDK?

如何在片段中使用 GetJsonFromUrlTask​​.java

如何使用导航架构组件修复动态功能模块中片段的发布版本中的ClassNotFoundException?