Always stick to theses essentials:
Understand the problem before you fix it .
Check for common defects.
Refine the test cases that produce the error.
Narrow the suspicious region of the code. / Expand the suspicious region of the code.
Be suspicious of classes and routines that have had defects before.
Check code that’s changed recently.
Set a maximum time for quick and dirty debugging => rewrite the code .
Change the code only for good reason AND Make one change at a time.
Never debug standing up :)