A debugger of its own
Over the runtime's ICorDebug: breakpoints with conditions, hit counts and log messages, stepping through async code, Run to Cursor and Set Next Statement, the call stack and threads, variables you can open and set, watches and evaluation, and the values each line used drawn after it.