程序员如何调试?如何找错?
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语言知识讲堂
以上是关于程序员如何调试?如何找错?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Swift 使用此代码片段为 iOS 应用程序初始化 SDK?