前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【入门必备】编程必备技能--抓出代码中的蛀虫

【入门必备】编程必备技能--抓出代码中的蛀虫

作者头像
程序员互动联盟
发布2018-03-13 16:54:37
9090
发布2018-03-13 16:54:37
举报

很多的朋友,在写代码的时候经常运行出错然而却找不到哪里错了。那就是你没有学会分析错误,你到底错在哪里了?为什么错了?

第一种代码致命错误。

一般的错误代码在编译器的编译的的时候就会在下方或某个输出框里输出你那里存在错误,这个时候你就要根据提示去找到错误的源点,去分析你那里错了?为什么错了?(经常总结是一个好习惯)。一般代码上的错误都能够通过编译器的提示,在对应的地方找到错误然后修改。还有一种错误叫做逻辑错误。这种错误编器是不能直接帮助你找出来的。也就是编译通过,但是你在执行的时候就会发生中断。这个时候没有编译器直接给你指错误的源点,你怎么去寻找错误呢?第一你就要想到你的代码没有致命错误。

第二你肯定是犯了逻辑错误。

逻辑错误就需要你去讯寻找哪一步的逻辑错误了?然后更改过来!解决逻辑错的方式你可以自己仔细的去检查你的代码,看是否写的和你想的一样,但是这种方法只针对于代码量小,逻辑层次少的代码。对于代码量很大的代码来说这种方法根本不可能找出你的错误。这个时候就需要到一种方式:调试(DEBUG).调试和我们的运行类似,只是他会把你想看到的那部分代码在运行过程中显示出来,这时候系统会把运行权利交还到你的手中,由你自己来操作代码的运行,这个时候你就可以一步一步的跟着代码走,同时你要对应你自己的想法,看看每一步代码是不是像你想象那样运行到对应的代码上去的。简单逻辑错误,当你在调试的过程中,遇到哪里就会中断,这个时候你也就知道到底是那一句代码哪里出错了。但是对于复杂一点的代码你就需要不停地运行,看看是不是卡死在那个循环或者那个地方了,这样就能很快捷的找到你错误的地点,以便于你去及时的改正!

下面演示一下简单逻辑错误调试(例子编译器为VS2010不同的编译器可能控件不一样,但是运行步骤都是一样

的):

第一种错误简单逻辑错误(少了某些东西,但是编译能够通过,运行失败:

#include<stdio.h>

int main()

{

int iNumber;

scanf("%d",iNumber);

printf("%d",iNumber);

return 0;

}

编译通过,但是在运行时出错:

第一步:我们在程序入口后的第一句执行代码出设置断点(断点:即系统交还控制权的第一句代码位置处):

当断点设置成功后在哪一句代码的前方会出现一个小红点(不同的编译器可能显示的图案不一样,但是都会有一个标识的)。同一段代码可以设置多个断点。

第二步:开始执行断点后的代码(对于我的编译器是(F10下一步(逐过程),F11下一步(逐句))他们的区别是,逐句就是每一句代码都是一步一步的走,当你运行到函数时,他会进入到函数体内接着运行显示内部代码。而逐过程就是当运行到函数是不会进入到函数体内显示运行过程代码。一般用F10当遇到函数时用F11:

打开调试:

在这个小红点内有一个黄色的箭头,这个箭头指向的就是下一句将要执行的代码。

反复按F10直到系统报错:

这个时候系统报错了,箭头指向的那一句代码就是有问题的代码。我们回到源代码去看看那一句代码我们忽略了什么。

原来是我们在读取的时候少了一个‘&‘符。触犯了我在论代码规范的重要性里面的代码书写规范了。修改过来再运行:

这样我们就完成了一次DEBUG,采用此方法可以解决很多你意想不到的错误。

希望对你有所帮助。——稻草人


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员互动联盟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档