Hi Gary,
Sorry for the delayed response.
This debugger is a software debugger designed to replace the need to litter code with Serial.print() instructions.
Arduino does not have any simple debugging which is why serial.print() commands are used to report runtime position or values back to the pc serial terminal.
In effect, the Visual Micro debugger does the same thing as a result of adding breakpoints with the various optional properties.
Arduino compilations are always performed in a temp copy of the real code which allows the debugger to injects serial statements without touching the real code.
To answer your question these injected statements are always injected at the end of the line of code at the breakpoint position. Therefore setting a breakpoint on the "if" statement would only execute when the "if" evaluates to be true in your example "delayedTime < 100".
The same applies if you add a breakpoint to a return statement. The code would have returned before being able to process the breakpoint.
Because we can not easily step a single line of source it seemed to make more sense to report the breakpoint after the line of code has executed, it was also easier to design it this way.
So the debugger isn't perfect but a step forward compared to the usual Arduino solution of sending Serial messages from withing the code.
There is a
wiki with some articles but the docs need more work. There is also this
debug overview which also needs improvement. This
YouTube video is a little slow at the start but can be useful