来自翻译者。 许多程序员的调试软件是一项枯燥而例行的任务。 但是,如果不进行调试,那简直是不可能的。 这篇文章是尼克·卡尼克
( Nick Karnik)的
原始文章的翻译,他在其中分享了自己对调试错误和不足的看法,不仅在新手程序员中,而且在专家中也是如此。
不幸的是,我们所有人都编写有时无法正常工作的代码。 这是正常现象,只是开发过程的一部分。 如果程序出现错误,有时您只是不知道下一步该怎么做以及如何解决它。 不用担心-所有问题都已解决,即使是经验最丰富的编码人员也都有错误。
Skillbox建议:实用的年度课程“ PHP开发人员从无到有 。 ”
我们提醒您: 对于所有“哈勃”读者来说,使用“哈勃”促销代码注册任何Skillbox课程时均可享受10,000卢布的折扣。
为了使错误最小化,必须同时开发编程和调试技能。
它们本身分为两种类型:逻辑和语法。
最常见的开发人员错误
缺少错误消息最困难的情况之一是当应用程序崩溃时,没有关于发生事件的原因的消息。 为了能够解决代码中的问题,您需要了解问题是在启动过程中发生还是已经在过程中发生。 您可以通过在代码开头添加应用程序消息日志来查找。
如果没有日志,则很有可能在加载过程中程序崩溃,甚至在开始将某些内容写入日志之前。
如果您有一条消息日志,请仔细阅读并查找可能的崩溃原因。 为了缩小搜索范围,值得让程序记录其工作过程中的主要事件。 在这种情况下,问题将更容易发现。
恐惧症错误讯息如果我们在谈论前端,那么通常会在应用程序本身,用户界面或开发人员控制台中显示错误。 有时,可以使用终端在后端或事件日志中看到消息。 不管错误的类型如何,初学者都会害怕此类消息,甚至不会阅读它们。
这是一些开发人员花这么长时间调试的主要原因。
首先,有必要研究错误,以最彻底的方式分析所有内容。
不愿意学习系统日志某些程序会写入日志文件或生成事件日志。 所有这些只是有用信息的仓库。 如果您无法在事件日志中找到错误原因的确切指示,请尝试查找有关失败或相反的消息(模块,服务)成功启动的消息,这将有助于了解错误的原因。
缺少跟踪日志跟踪有助于跟踪程序的过程并处理数据。 在软件运行时记录跟踪消息可简化调试过程。 跟踪日志是了解应用程序如何工作的简单方法。
无法分阶段工作许多开发人员编写大量代码,然后将它们编译并作为应用程序的一部分进行测试。 但是值得记住的是,在代码中搜索错误的时间与代码量成正比。
如果有很多更改,您将不得不花费大量时间寻找突然出现的问题。 最好分阶段进行。 进行较小的更改,编译代码,测试应用程序-然后重复所有这些操作。 当您以较小的迭代次数实现更改时,这最终会加快创建应用程序的过程。 如果某事不起作用,您可以迅速了解原因。
编写代码后,我经常对其进行修改以简化编写过程。
不愿执行自动测试单元测试和端到端测试自动化使您能够在潜在错误发生时进行识别。 错误的原因之一是开发人员在对代码进行彻底测试之前对其进行了重构,也就是说,更改不会自动进行测试。
无法使用异常方法如果您无法确定问题的根本原因,则需要使用异常方法。 您可以注释掉新的代码块,以检查错误是否消失。 这有助于诊断问题。
在调试过程中,您可以制定特定的假设,并尝试使用上面提出的方法来证明或反驳它。
使用StackOverflow复制粘贴通常,开发人员会从StackOverflow复制和粘贴代码,而对所复制部分的工作一无所知。 此类行动会带来许多负面后果,其中一些是隐性的。 确保注意添加的内容,尝试了解哪些函数负责执行插入的代码。
顺便说一句,通常当我在StackOverflow上提问时,我会稍后回答,因为我在编写过程中一直在思考问题。
在讨论团队中的问题时,也会发生同样的事情。 您自己找到问题的解决方案,仅仅是因为您正在考虑问题的原因。
不愿意重新检查代码我知道最成功的调试方法之一是反复研究代码。 在某些情况下,从头开始编写一段代码会有所帮助。
无法跟踪函数调用在您的应用程序中学习函数调用有时也会有所帮助。 您只需要检查变量及其期望值。 在此过程中,您可以在程序中找到导致其奇怪行为的问题区域。
调试器无知您肯定需要学习如何使用调试器。 这是时间的最佳投资。 所有IDE都具有功能强大的调试工具,它们的工作方式大致相同。 学习这些工具,您将在编写代码时解决大部分问题。
Skillbox建议: