宝哥软件园

调试和故障排除的10个小建议

编辑:宝哥软件园 来源:互联网 时间:2021-11-09

在空白文本编辑器中打开一个全新的文本,没有一行代码。出现在我们面前的是一个充满无限可能和希望的项目。然而,在编写了数千行代码后,整个项目被bug淹没了,更不用说添加任何新功能了.这可能是对程序员最大的打击,给他们的热情泼了一盆冷水。事实上,最好的软件程序员当然知道如何发现和修复这些bug,在编程之初,他们使用软件工程的最佳方法来降低bug的概率。几乎没有程序员能写出没有bug的代码,但解决方案总是要困难得多。实践和决心是成功的关键,这样才能写出干净的代码,保证软件系统的可靠性。调试和排错建议

让我们来看看这些可以抑制bug的工具箱。1.调试输出语句代码的主要工具是插入可靠和真实的输出语句。当输出语句数量庞大且难以管理时,可以说在输出语句中适当使用录音系统是一种等效方案。许多编程语言都配备了现成的类库,例如Python中构建的记录库。Output语句是程序员检查数据值和变量类型的最快、最简单、最直接的方法。高效的输出语句可以帮助程序员跟踪一段代码中的数据流,并快速识别错误源。虽然有很多高级调试工具,但是如果你想调试一段代码,这种常见的输出语句的方法应该是程序员首先要考虑的方法。2.调试器源代码调试器在输出语言方法中采用逻辑推理。这使得程序员可以一行一行地遍历代码,监控从变量值到低级虚拟机整个状态的每一个动作。此外,大多数编程语言都有多个调试器,可以提供不同的功能,包括图形界面、终止程序的断点设置以及执行环境中任意代码的实现。在很多情况下,调试器可以说是大材小用,但是如果使用合理,调试器绝对是一个高效的工具。更多调试器功能参见Python调试器:pdb。3.错误跟踪系统。

在一些主要的软件项目中,有必要使用bug跟踪系统。如果不使用bug tracker,最典型的情况就是程序员要整理过去的邮件或者聊天记录才能发现bug。更糟糕的是,程序员根本不记得其他任何东西,只记得一点bug文档。一旦发生这种情况,bug将不可避免地充斥整个代码编程。此外,识别这些bug并确定它们的位置非常困难。一个简单的文本文件可以用作项目中的初始错误跟踪系统。随着代码库的增加,bug生成文本文件的时间不会太长。商业和开源bug跟踪软件提供了许多可以考虑的解决方案。选择哪个bug跟踪软件的第一部分是为了保证非程序员可以在编程项目中快速使用这个bug跟踪系统。4.Linter在某些编程语言中,Linter可以对代码进行静态分析,以便在代码编写和运行之前识别问题区域;在其他一些编程语言中,Linter工具对于语法检查和样式增强非常有帮助。编程时,在编辑器中打开一个Linter程序,或者在代码编写和运行之前通过Linter传递代码,这将有助于程序员在使用软件之前发现和纠正更多的错误。因此,使用Linter可以帮助您找出语法错误、排版错误或数据类型错误导致的bug来源,同时节省宝贵的时间。想知道什么棉绒最适合你,看看Python的棉绒工具:Pyflakes。5.版本控制在任何重大软件工程项目中,版本控制系统都不应被忽视。例如,像Git、Mercurial和SVN这样的版本控制允许在不同的基础上分离不同的代码库版本。不同的控件版本可以合并在一起,这样多个程序员可以同时运行同一个代码库。版本控制在代码调试中也起着重要的作用,它允许程序员回滚和修改早期版本的代码,并在错误发生之前尽可能修复代码库中的错误。6.缺乏架构的代码模块化是难以修复的bug的主要来源。只要代码简单易懂,理论上行得通,程序员就不难快速发现并修复bug。另一方面,代码越重要,出错的概率就越大,而发现这个错误相对比较困难。在设计软件组件时需要考虑的一件事是所谓的代码模块化,它可以帮助程序员从两个方面更好地理解软件系统。首先,模块化可以创建一定程度的抽象,系统模型可以在不完全了解所有细节的情况下进行想象。例如,程序员在构建业务系统时,可能会考虑信用卡处理模块,然后观察这个模块与其他代码的关系,而完全不考虑信用卡处理模块的所有细节。二、模块的详细描述,这个详细描述不会和其他模块混淆,就像每张卡只有一个卡号一样。7.自动化测试单元测试和其他类型的自动化测试与模块化密切相关,可以说是相辅相成的。自动化测试是指一段代码用特殊的输入值运行软件,从而检查程序是否按预期运行。单元测试主要用于测试单个功能的功能性,而功能测试用于检查特殊程序的性能,并结合单元测试来检查软件系统的整个部分。可以用来编写测试程序的测试框架有很多,目前流行的测试框架大多来源于Kent Bent编写的JUnit类库,Kent Bent是“测试驱动开发方法”最早的支持者之一。Python标准类库包含一个Python版本的JUnit,称为PyUnit或unittest单元测试框架。8.泰迪熊法(橡皮鸭调试)泰迪熊方法

在软件编程领域,我们不得不提到Brain Kernighan和Rob Pike这两位传奇人物。泰迪熊调试法起源于一所大学的计算机中心,学生遇到神秘的bug,可以先向桌上的泰迪熊说明问题,然后向老师或助教求助。因此,有时候只是和熊聊天就能解决问题。这种调试方法真的很有用,以至于在整个软件工程行业都很流行,就像打印语句一样。无论工具多么复杂,输出语句的方法在今天仍然非常流行。一种类似泰迪熊调试方法的方法叫做橡皮鸭调试方法。当你向这只一直保持沉默的橡皮鸭解释时,你会发现你的思想、观点和想法都偏离了实际的代码,所以你会在代码中发现bug。一旦一个问题被详细描述,解决方案也是显而易见的。你觉得这个方法是不是太“蠢”太“弱智”了?是的,能做到这一点的人似乎有问题。不过,我想告诉你,这个方法真的很有效。因为,这是“代码审查”的雏形!9.写代码笔记编写代码注释

注释的作用是在更容易理解的层面上解释代码编写的目的,并尽可能多地编写:每一行代码是为了什么,如何完成。这些问题在彻底阅读代码后应该很容易回答。此外,为各种函数和变量赋予合理的名称也有助于简化代码实现的过程。填写代码行下面的空白处,回答为什么使用特殊的实现函数,或者一段代码如何与程序的其他部分交互,等等。写详细的注释可以说是软件工程中可靠的检查步骤,即使在没有bug的代码中也是如此。这样,即使出现bug也不用担心。评论将为您节省数小时的故障排除时间。10.编译文档的代码注释由程序员以简单的方式从个人角度进行编译,而编译软件文档用于描述软件系统的功能,用户也可以看到这些软件文档。根据软件的类型,文档可用于详细说明程序界面、图形界面或工作流程。文档的另一个优点是,它可以显示您对软件系统的理解,并指出软件系统的不完美部分或可能是bug来源的部分。

更多资讯
游戏推荐
更多+