When bugs arrive there are many things that might have cause them, and actually we spend more time trying to find the bugs than coding .
If we would put in one sentence, debugging It is a two step process, first the location of the failure and then the fixing of the issue. The debugging process relies on developers questions but also relies on tools and approaches.
Modern debugging tools employ sophisticated mechanisms to help answering this question, however sometimes, actually most of the times, it is not enough just to use tools to find answers, it’s actually necessary to use several approach/more than one sometimes, to find the causes of issues.
1.Try and fail approach
For small development problems, the try and fail approach is effiencient and ok. However, to bigger problems we need to change the way to solve them actually.
1. Why? Chain of failure.
2. What? Related to entity level.
3. Whether? Set of events on the
The questions can be used combined with hypothesis testing, which is a quite interesting and reliable approach to solve problems on code that you know and code that you don’t know.
 How Did the Failure Come to Be? Mohammadreza Azadmanesh and Matthias Hauswirth. CoCos’17, October 23, 2017, Vancouver, Canada.