I just witnessed something quite perplexing. I had set a breakpoint in each of two low-level methods, partly to see exactly what higher-level code was causing them to be called. Naturally for this reason I used the callstack display to visit the calling methods higher up th stack. I was astonished to see that when I did this, the program resumed. Not only that, but it invoked the method in which the first breakpoint was hit many, many times without stopping there again. The debugger didn't seem to "notice" that this execution was happening, except that the I/O activity indicator on the debugger's Console tab did flash.
If it might be significant, there are 5 greyed-out frames in the stack display starting immediately below the frame for the method with the breakpoint. Four of these correspond to a 3rd-party library I'm using. When those stack frames are selected, the appropriate source code is displayed (along with the notice "Debug info unavailalbe" for the methods from the 3rd-party library methods). Selecting any of these greyed-out stack frames does not trigger resumption of execution, but as soon as the next non-grey frame in the stack is selected (one corresponding to my own code), then the execution resumption occurs.
Is there an explanation for this? Something I can do to prevent it? I did a full re-build prior to this debugging session. The phenomenon is entirely repeatable.
I am at a loss to explain this, but it's certainly hampering my debugging activity.
I'm running IDEA 8.0.1 under Linux using Sun JDK 1.6.0_11 on x86 hardware.