📜  调试:提高它的技巧

📅  最后修改于: 2021-10-20 12:10:52             🧑  作者: Mango

调试……对于开发人员来说,这是最可怕和最痛苦的事情之一,无论每个开发人员在进行项目时都必须经历什么阶段。你开始满怀热情地从事一个项目。您在开发环境中编写了数千行干净的代码,在那里一切正常,但是当您尝试在生产环境中使用整个项目时,它不起作用或者它没有按照您希望的方式运行。很多开发人员可能在他们的职业生涯中都遇到过这个问题,当他们不得不清理其他人造成的混乱时,他们会更加沮丧。
调试就是找出问题的根源,而不是确定问题的原因,测试您的假设并尝试所有可能的解决方案以消除其意外行为背后的原因。每个开发人员都花费大量时间调试代码,有时超过一周甚至超过编写代码,这会消耗开发人员的热情。那么有什么办法可以减少调试代码的时间呢?如何最大限度地减少错误的发生?让我们详细讨论一下。

调试技巧

1. 更频繁地运行你的代码:这是最重要的建议,尤其是对于初学者。很多初学者都会犯这个错误,他们在文件中编写了一堆代码后第一次运行他们的代码。请避免这个错误,否则你会在检查自己的代码时变得更加困惑,并且会浪费时间在代码中寻找小错误。当你每次运行你的代码并测试它时,你会得到反馈并检查你是否朝着正确的方向前进。

2. 有效使用Print Statement:每个程序员最简单、最喜欢的工具之一,尤其适合初学者调试代码。大多数调试问题都可以通过在代码中插入打印语句来解决。打印变量并检查您的控制台中存储的值是否正确。打印数组、对象、变量,只要你觉得检查你的数据值。

3. 谷歌、谷歌和谷歌:是的……我们不能否认谷歌为我们的大多数问题提供了解决方案,这是最简单的建议,尤其是对于初学者。当您不理解屏幕上所写代码的错误消息时,您可能会遇到问题。您可以做的最简单的事情是复制错误消息并使用谷歌搜索。一旦您尝试搜索它,您很有可能在StackOverflow (最大的开发人员社区)或其他论坛或社区(从 StackOverflow 切换的机会更少)上得到答案。

4. 尝试替代解决方案:当您不了解原因并且不知道如何解决问题时,尝试不同的解决方案。如果仍然,它不工作尝试另一个。也有可能您获得了解决方案,但遇到了新的错误。在这种情况下不要惊慌并接受每个开发人员都必须经历这个阶段。如果您是初级开发人员或初学者,在向高级开发人员或其他人寻求帮助之前,您一定要尝试其他解决方案以找出问题的根本原因。如果您不尝试替代解决方案并直接寻求帮助,他们会问自己的第一个问题“您尝试过其他解决方案吗? “。因此,请确保您不需要再次回到座位上并在寻求帮助后尝试不同的解决方案。

5.有效地使用注释:在任何语言中,注释不仅仅是在代码中留下注释或解释代码。您还可以巧妙地使用它来调试代码。很多初学者不明白如何有效地使用注释来调试代码。您可以暂时注释掉当时不需要运行的一段代码,然后检查另一段代码以确定是哪一段代码导致了问题。检查剩余代码并识别错误变得容易。很多初学者为了检查错误而不是将其注释掉,而是删除代码,请不要这样做并练习将代码注释掉。

6. 重现错误:很多时候,当您在生产环境(Godaddy、Heroku 等)中上传您的网站时,它不起作用。它在您的本地环境中运行良好,但您在生产环境中遇到了问题,原因可能是环境变量发生了变化,或者您直接存储在本地环境中的 API 密钥等少数内容发生了变化,您在生产中做同样的事情出于安全原因,你不应该在那里做的环境。
要解决此类问题,最好的解决方案是在本地环境中重现相同的错误,但请确保不要在生产环境中使用代码,因为与服务器通信可能需要时间。

7. 使用二分搜索:在一个有问题的文件中找到一个复杂的错误真的很困难,尤其是当它有数千行代码时。在这些情况下,你需要检查越来越多的地方,为了避免这种情况,你能做的最好的事情就是应用二分搜索。在这个过程中,你需要将整束代码剪成两部分。注释掉一部分并运行另一部分。无论哪个部分导致错误,对该部分重复相同的过程并不断重复它,直到或除非您找不到导致错误的确切代码行。

8.使用调试工具:市场上有很多带有调试工具的IDE和环境,例如visual studio code,eclipse,你可以在那里写你的代码,你可以用它来找出错误,大多数语言有许多调试器以及不同的功能,如图形界面、断点设置。这些工具会停止执行并逐行检查数据值,您只需设置一个断点即可。
单步执行、单步执行、设置下一个断点这些东西在大多数调试工具中都是可用的。 GDB(C) 或 PDB(Python) 或 Chrome 开发者工具 (JavaScript) 是一些很棒的调试工具,您可以使用它们来找出错误,但问题是大多数程序员或初学者不知道如何有效地使用这些工具.花一些时间学习这些工具可以节省大量时间。

9. 自动化测试:很多公司都使用这种技术来检测错误。执行自动化测试和其他一些单元测试以检查实际输出是否与预期输出匹配,这是通过使用某些工具或编写一些测试脚本来完成的,我们在其中使用特定输入执行软件。如果您要做出任何假设或假设,请编写单元测试(检查单个函数或类的函数)并检查结果。编写这些测试用例是遍历您的代码并检查它们的行为,这有助于发现错误。

10. 讨论和寻求帮助:如果你已经尝试了一切来找出错误并解决它,但没有任何效果,那么这可能是一个复杂的问题,比如 Race Condition,在这种情况下,你需要寻求帮助.解释有关问题的所有内容、您的假设、您尝试过的解决方案,并显示出现错误的代码。与其他人结对,或者如果您寻求帮助,您可能会得到解决方案,或者您可能需要考虑一些以前没有考虑过的其他场景可以解决您的问题。

快速提示:

  • 总是一次解决一个问题。您可能会在解决一个问题时发现另一个错误,但不要弄乱另一段代码。始终选择一个问题,解决该问题,然后再选择另一个问题来解决,否则您会感到困惑,或者这可能会成为处理的噩梦。
  • 仔细阅读你的代码,有时它可能是一个非常小的错误,比如分号、逗号或括号。如果您是初学者并且学习代码机会更高,那么您的代码与老师试图教您的代码并不完全相同,因此每次都要仔细阅读您的代码。
  • 如果您正在使用任何类型的框架,在这种情况下,请随时了解您的框架。公司会定期更改这些框架,因此请随时了解最新情况。
  • 如果您开始失去耐心或精疲力竭,请休息一下并离开您的系统以重新设置您的想法。做一些其他的活动一段时间。听听音乐或喝一杯水或让眼睛适当休息。您可能会想出另一种方法来调试您的代码,或者在短暂休息后重新开始一切可能有助于解决问题。