As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center提供指导。
已关闭8年。
程序员可能具有许多技能(理解问题,提出良好的问题,良好的设计技能等)。
我认为系统调试技能非常有值(value)。调试任何技术系统的一般技巧(从 Remote 中没电的电池到邻居的Ham Radio发出的信号干扰)。
这是我教计算机编程时给学生的方法:
定义问题(当我执行XYZ Repro步骤时,出现ABC症状) 确定测试范围并分成几部分。 使用消除过程测试每个部分,以找到引起问题的部分。 如果需要,可将小节分割为小节。 分析引起问题的小节。 修复。 通过使用“重现症状”的步骤来编写文本。
哇呀呀? 从结尾开始,产生症状/错误的变量/调用 从那里倒退的原因-是什么原因导致此错误值或错误调用? 继续在逻辑中向后追溯,直到找到罪魁祸首
当存在许多可能导致问题的前馈路径/可能性时,此功能很有用,但其优点是无需调试器或跟踪即可找出最可能的原因。
另一种技术是通常可疑的技术,您可以从最后接触到代码的任何部分或给您带来最多问题的地方开始调查,以查看其中是否有更改导致新问题
另一种技术是坐下来考虑什么情况可能产生观察到的错误/行为/值。当您急于不想系统地扫描很多地方时,此技术很有用,但需要您已经对系统有透彻的了解。当所讨论的错误/行为是由于设计缺陷或疏忽而不是编码错误引起的时,这很有用。
已关闭8年。
程序员可能具有许多技能(理解问题,提出良好的问题,良好的设计技能等)。
我认为系统调试技能非常有值(value)。调试任何技术系统的一般技巧(从 Remote 中没电的电池到邻居的Ham Radio发出的信号干扰)。
这是我教计算机编程时给学生的方法:
哇呀呀?
最佳答案
如果您定义“故障排除”以包括“调试”,那么是的,这很关键!
编辑:根据您的编辑,您列出的自上而下的消除过程技术是系统性的,非常有值(value)。
另一种技术是倒推:
当存在许多可能导致问题的前馈路径/可能性时,此功能很有用,但其优点是无需调试器或跟踪即可找出最可能的原因。
另一种技术是通常可疑的技术,您可以从最后接触到代码的任何部分或给您带来最多问题的地方开始调查,以查看其中是否有更改导致新问题
另一种技术是坐下来考虑什么情况可能产生观察到的错误/行为/值。当您急于不想系统地扫描很多地方时,此技术很有用,但需要您已经对系统有透彻的了解。当所讨论的错误/行为是由于设计缺陷或疏忽而不是编码错误引起的时,这很有用。
关于debugging - 您是否认为调试(系统故障排除)是程序员可以拥有的最重要的与技术无关的可衡量技术? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/217374/
10-12 02:45