How Conditional Breakpoints Work
werat.dev
werat.dev
Conditional is going to have some overhead because it has to re-evaluate the condition on every step of the program counter if you are near the offending line or not. While line stepping is more closer to a lookup table of where in the parsed strings are you compared to the current program counter. Which is a much simpler lookup and the previous step was nearby (so probably less than logn but not quite 1). While a conditional would have at least N search (all of your break points plus the calculation of the variables for the condition). Some hardware also assists with breakpoints by popping an exception when you hit a particular program counter making it much faster in some cases. Whereas with a conditional you have to ignore the hardware and do it the 'hard way' on every virtual step of the PC.
Is like someone adding what feels like a single field to a query, not accounting for the effort that goes into a join.
Edit: I should add that "difficulty with step debugging" isn't just "won't work." I picture "having to press resume a few hundred times to get exactly where I want to be" as difficulty, there.