I would expect print-debugging to change the behavior in such cases too.
Usually writing to stdout is behind some synchronization so using print debugging will drop performance and make program less parallel.
You can change where to put the prints if they do change the behavior (which incidentally also helps in understanding what's happening). You can print only if a condition happens, or only before/after critical sections, or print counters that you compute in the fast path. With the debugger you're always taking the overhead in and breakpoints will always change the flow of the program.