This article briefly summarizes a couple of strategies and mindsets that are useful when establishing a modus operandi to deal with software defects.
We generally think in terms of three distinct steps when triaging and solving bugs:
Before you take any further steps you have to be able to reliably and deterministically reproduce the problem in a controlled environment. This typically requires you to identify and re-create the conditions needed to reproduce the problem in your development environment.
If you can't accurately reproduce the problem it will be nearly impossible to properly diagnose, non-deterministic behaviors will be very hard to spot and remove, and attempting to verify that you've actually solved the problem will be a more or less hopeless endeavor.
git bisect ) is a very useful tool when trying to systematically determine when the problem was introduced into the code base.The next step is to formulate hypotheses about the possible cause and run repeatable experiments to prove or disprove them.
When you've properly diagnosed the problem and identified the root cause it is time to implement the solution.
Happy hunting!