如何提高你的调试技能
我们所有人都会写出在某个时刻崩溃的代码。这是开发过程的一部分。当你遇到错误时,你可能会感到不知所措。然而,即使是最经验丰富的开发人员也会犯一些错误和 bug,导致代码崩溃。毕竟,我们都是凡人。
重要的是从这些错误中吸取教训,并通过开发技巧来提高编程和调试技能,避免重蹈覆辙。错误主要体现在逻辑或语法上。有些错误会以异常或崩溃的形式出现,而有些错误可能仅在使用软件时才会出现。
以下是开发人员犯的一些错误。
无法记录消息
你可能遇到的最无助的情况之一是程序崩溃了,却没有任何错误消息表明出了什么问题。第一步是确定程序是在启动时崩溃还是在运行时崩溃。你可以在代码开头向终端打印一条简单的日志消息来实现这一点。
如果您没有看到日志消息,则您的程序很可能在加载时崩溃,这可能是依赖项或构建相关的问题。
如果您看到了相应的消息,则需要将范围缩小到崩溃的大致位置。最好的方法是根据崩溃时掌握的执行路径信息量,策略性地在整个程序中放置一些日志消息。然后,您只需查看打印了哪些消息即可。
无法读取错误消息
前端的异常消息通常显示在 UI 或开发者控制台上。有时,这些消息也会通过终端或日志文件在后端显示。无论这些错误发生在哪里,新开发人员都会被它们吓倒,不愿意花时间去阅读它们。
这就是为什么许多开发人员调试耗时更长的首要原因。你应该做的第一件事就是花时间阅读你面前的错误信息,仔细思考,并彻底处理它。
无法读取系统日志文件
一些程序会生成日志文件或写入系统事件日志。这些日志中通常包含有用的信息。即使它没有准确地告诉你错误是什么,也可能包含警告或错误消息,甚至可能是成功消息,提示错误发生之前发生了什么。
无法写入跟踪日志
跟踪是指跟踪程序流程和数据。在整个程序中写入跟踪消息有助于简化调试过程。跟踪日志是在整个应用程序运行时跟踪程序执行情况的一种简便方法。
未能进行渐进式更改、构建并测试它们
许多开发人员在构建和测试代码之前会编写大量代码。查找错误所需的时间会随着代码修改量而增加。您应该尽量进行增量式修改,并尽可能频繁地构建和测试这些修改。这将确保您不会陷入在发现程序无法正常工作之前已经编写了大量代码的情况。
通常,我甚至会重构我的代码来简化我所写的内容。
未能编写测试自动化
单元测试和端到端测试自动化能够让您在潜在错误发生时就将其捕获。现有代码中断的原因之一是,开发人员在测试覆盖率较低的情况下重构代码,这意味着并非所有更改都会自动进行测试。
未能使用排除法
如果您无法确定问题的根本原因,则需要使用排除法。您可以注释掉新的代码块,看看错误是否停止。排除代码块可以帮助您更接近问题的诊断。
你可以提出一个假设,并尝试证明或反驳它。很多时候,一个简单的假设就足以让你无法发现 bug。
从 StackOverflow 复制粘贴
开发人员经常从 Stack Overflow 复制粘贴代码,却不了解其具体功能。这会带来很多负面影响。首先,务必关注应用程序中的内容。
很多时候,当我在 StackOverflow 上写一个问题并思考如何有效地表达它时,我最终会回答我自己的问题!
同样,有时当我与团队其他成员交谈时,我最终会找到自己的答案。这是因为它迫使你思考自己的解决方案。
再次未能解决问题
我发现最成功的调试技巧之一是反复检查你的解决方案,有时甚至尝试从头开始重新实现某些功能。这迫使你通过重新创建实现来发现潜在的问题。
未能回溯
通常,如果您能将症状隔离到特定区域,就可以开始遍历调用堆栈来验证所有变量和预期值。这可以快速帮助您发现程序中出现异常行为的部分。
未能学习调试器
最后,你能为自己做的最好的投资就是学会使用调试器。所有 IDE 都自带强大的调试器。它们遵循相同的基本概念。它们允许你以编程方式停止应用程序的执行,无论是在启动时,还是在程序流程的特定部分。
还有大量的调试工具可以帮助完成这个过程。
如果这篇文章有帮助,请❤️并在 Twitter 上关注我。
文章来源:https://dev.to/theoutlander/how-to-improve-your-debugging-skills-3j5p