Stepping in Visual Studio 2005 is affected by numerous factors.

1. Debugger windows you have open  e.g. the callstack window requires us to walk the stacks every time you complete a step, Auto/Locals and watch window require us to evaluate all expressions in those windows  after you complete the step.

2. Visualizers /Autoexpanders provided by the engines

    • Autoexp.dat for native code.
      • Visual 2005 improves on autoexp.dat but adding support for STL types and also doing an "auto" expand on existing types. Some of the STL displays can be expensive (more on this later)
    •  Debugger display attributes for managed code.
      • Debugger displays can translate to execution of a  function in the debuggee context,  this is inherently very expensive for the debugger because the callstacks have to be refreshed once the function call is executed (more on this later)

3. Interop debugging, stepping and callstack walking is more involved.

4. Remote debugging, requests have to be made on the remote box where debug-gee resides.

We worked very hard on improving the stepping performance in Visual Studio 2005. However, its very likely that there are users scenarios we missed.

There are things that can improve stepping performance if this turns out to be an issue for you.

  • Close the Auto and Locals Window
  • Right click on the callstack window and turn off display of Parameter Types, Parameter Values and Parameter Names (these can actually be key off item #2 )
  • Close the callstack window (note that even with the callstack window closed, the debugger will request some callstack frames from the engine)