Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

debugger's block [closed]

Tags:

debugging

Do you ever run into a bug where you are just out of ideas and don't know what to try next, and you're getting really annoyed? Are there any general ideas on how to break out of this mode?

like image 948
JoelFan Avatar asked May 27 '09 11:05

JoelFan


3 Answers

When I get blocked like that, the best advice I've found is leave for a while. Whether it's going for a long lunch or leave for the day. Come back fresh and take a new look. Most of the time the answer will be staring you in the face. So far a 10 minute coffee break hasn't been enough for me, but your mileage may vary.

Second, talk to your peers. Walk through everything you've tried. Just ask them to listen, and while you're talking it through, a lot of times, the answer will come to you.

Those are just the two that I use most often when I'm debugging blocked.

like image 68
nathan Avatar answered Sep 20 '22 17:09

nathan


  • Five minute break

Utterly critical, lest you smash your keyboard.

  • Explain the problem in an email to your sister

Or your two year old son. Someone who wouldn't understand a word* unless you explained it very clearly. You don't need to send the email, you just need to be certain that you understand it inside out. You be surprised at how many times simply restating the problem suddenly makes it obvious to you where you went wrong. This is a good way of discovering what your assumptions were about the problem, and how they might not necessarily be correct.

*That link is to an excellent answer by JaredPar on a different SO question.

  • Talk to a colleague

By this point you've already 'emailed' the family pet, so you know that you've hopefully covered all the stupid aspects, it's time to talk to a real person. They may have experienced some obscure thing in the past that reminds them of this situation, and they'll definitly have a different perspective. Try to make sure you are clear about what the problem is, not what you think it is. You don't want to bias them. You can and should talk about what they've tried, and explain why you think the problem is in that area (you're probably right) but you don't want to close your mind to their suggestions, even if they don't seem right.

  • Look at the code again

By this time, you should hopefully be less violent, and you should be armed with new ideas. Start by re-verifying the bug. A simple step, but I've been frustrated for hours on a bug that was in our test script and not in our code. Once you've verified the bug again, start at the top. Verify EVERYTHING. Put a breakpoint at the last point you are 100% confident in, and then work your way forward until you find that the output is broken again. That's a huge success because you now have a hopefully smaller code block to investigate. Then, if necessary, pull in a colleague to look at the actual running code.

like image 36
DevinB Avatar answered Sep 20 '22 17:09

DevinB


I usually take a break... if that doesn't work, I sleep on the problem. (Actually, to be honest, I should say that I spend a sleepless night mulling over the problem).

I almost always have a list of possible solutions ready by morning. :-)

like image 45
Cerebrus Avatar answered Sep 21 '22 17:09

Cerebrus