When you have quite a few bugs at the same priority level how do you pick which one to start on? I tend to go for recent bugs, then bugs that may need to go to someone else, then bugs I think will be easiest to fix. I used to go to the hardest bug, but this has the horrible property of leaving bugs that someone else needs to look at bunched in your queue until you diagnose the hardest bug you have. I tend to find diagnosing the problem is the part that takes a bunch of time, rather than fixing it once you know what's really wrong.
I will still foolishly beat my head against a bug once in a while. Such as today. This afternoon I started tracking down a high priority bug in native retail code. Debugging retail code is harder because the debugger will get variable values wrong depending on compiler optimizations. You basically must look at the disasm to figure out what's going on. I eventually got far enough to determine that some specific objects are leaked and are the cause of the problem. Now in code compiled with the debug flag, we track these objects, but rather than step back and replace the 6 dlls I need with debug versions I wasted another hour trying to track AddRef/Release calls through the retail code.