Ideally, an app executes the same whether there's a debugger attached or not. This derives from very practical motivations:
So why might apps execute differently under the managed debugger?
IMO, I think the CLR debugger team was too naive about this problem in v1.0 / v1.1. Fortunately, we've taken a lot of great steps in v2.0 to address this: