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

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

第一种代码致命错误。

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

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

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

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

的):

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

#include<stdio.h>

int main()

{

int iNumber;

scanf("%d",iNumber);

printf("%d",iNumber);

return 0;

}

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

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

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

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

打开调试:

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

反复按F10直到系统报错:

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

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

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

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


原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-07-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我是攻城师

Elasticsearch里面的segment合并

6805
来自专栏SHERlocked93的前端小站

Vue 使用中的小技巧

在vue的使用过程中会遇到各种场景,当普通使用时觉得没什么,但是或许优化一下可以更高效更优美的进行开发。下面有一些我在日常开发的时候用到的小技巧,在下将不定期更...

802
来自专栏Java职业技术分享

使用Python这么多年,才发现Python还有这些实用的功能和特点

在使用Python多年以后,我偶然发现了一些我们过去不知道的功能和特性。一些可以说是非常有用,但却没有充分利用。考虑到这一点,我编辑了一些你应该了解的Pytho...

1223
来自专栏linux驱动个人学习

链接器做了什么?

摘自《程序员自我修养》 ---- 机器指令的历史 为了更好的理解计算机程序的编译和链接的过程,我们简单地回顾计算机程序开发的历史一定会非常有益。 最原始的设备...

3476
来自专栏24K纯开源

Android Studio快捷键每日一练(4)

33、分析数据流到当前位置 苹果/Windows:无对应快捷键,可在菜单中选择Analyze->Analyze Data Flow to Here 通过分析当前...

1998
来自专栏跟着阿笨一起玩NET

HTML中显示的文字自动换行

http://www.cnblogs.com/zjxbetter/articles/1323449.html

1651
来自专栏CDA数据分析师

不能不懂的 Python 7大功能和特点

在使用Python多年以后,我偶然发现了一些我们过去不知道的功能和特性。一些可以说是非常有用,但却没有充分利用。考虑到这一点,我编辑了一些你应该了解的Pytho...

1788
来自专栏Vamei实验室

被解放的姜戈04 各取所需

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 我们在庄园疑云中讲到了服务器上的数据。当...

1815
来自专栏漫漫前端路

记录面试中一些回答不够好的题(Vue 居多)

grid 学习:https://www.jianshu.com/p/d183265a8dad

1292
来自专栏WebHub

可视化讲解 DOM 的构建过程

最近在看 Secrets of the JavaScript Ninja, 书中第二章讲到 DOM 的构建流程.

492

扫码关注云+社区