For several releases now, the native debugger has supported a pseudo-register @clk. @clk can be used as a quick and dirty profiler. As you step along, it can give you some sort of guess as to how long each function is taking. Prior to VS 8.0, the simple way to do this was to add a watch item of <'@clk=0'>. However, people often got them selves into trouble by adding watch items with side-effects, so VS8.0 does NOT reevaluate watch items with side effects. So the 8.0 version of the debugger quick-and-dirty profiler needs to be a macro.
Native Debugger Quick-And-Dirty profiler:
Sub OnBreak(ByVal Reason As EnvDTE.dbgEventReason, byref executeAction as EnvDTE.dbgExecutionAction) Handles DebuggerEvents.OnEnterBreakMode
If (Reason = dbgEventReason.dbgEventReasonStep) Then
Dim val As String = DTE.Debugger.GetExpression("@clk").Value
OutputLine("@clk is " + val)
Sub OutputLine(ByVal text As String)
Dim commandWindow As CommandWindow = DTE.Windows.Item(Constants.vsWindowKindCommandWindow).Object
commandWindow.OutputString(text + vbNewLine)
The way this works is that after each step, @clk is re-evaluated, and the value is dumped to the command window.