This documentation is archived and is not being maintained.

Debugger Interface

The Debugger object is used to interrogate and manipulate the state of the debugger and the program being debugged.

Namespace:  EnvDTE
Assembly:  EnvDTE (in EnvDTE.dll)

public interface Debugger

The Debugger type exposes the following members.

Public propertyAllBreakpointsLastHitGets a collection of bound breakpoints that were last simultaneously hit.
Public propertyBreakpointLastHitGets the last breakpoint hit.
Public propertyBreakpointsGets a collection of breakpoints.
Public propertyCurrentModeGets the current mode of the debugger within the context of the integrated development environment (IDE).
Public propertyCurrentProcessSets or gets the active process.
Public propertyCurrentProgramSets or gets the active program.
Public propertyCurrentStackFrameSets or gets the current stack frame.
Public propertyCurrentThreadSets or gets the current thread being debugged.
Public propertyDebuggedProcessesGets the list of processes currently being debugged.
Public propertyDTEGets the top-level extensibility object.
Public propertyHexDisplayModeGets or sets whether expressions are output in hexadecimal or decimal format.
Public propertyHexInputModeGets or sets whether expressions are evaluated in hexadecimal or decimal format.
Public propertyLanguagesGets a list of languages that the debugger supports.
Public propertyLastBreakReasonGets the last reason that a program was broken. If the program is running it returns DBG_REASON_NONE.
Public propertyLocalProcessesGets the list of processes currently running on this machine.
Public propertyParentGets the immediate parent object of a Debugger object.

Public methodBreakCauses the given process to pause its execution so that its current state can be analyzed.
Public methodDetachAllDetaches from all attached programs.
Public methodExecuteStatementExecutes the specified statement. If the TreatAsExpression flag is true, then the string is interpreted as an expression, and output is sent to the Command Window.
Public methodGetExpressionEvaluates an expression based on the current stack frame. If the expression can be parsed but not evaluated, an object is returned but will not contain a valid value.
Public methodGoStarts executing the program from the current statement.
Public methodRunToCursorExecutes the program to the current position of the source file cursor.
Public methodSetNextStatementSets the next instruction to be executed, according to the cursor position in the current source file.
Public methodStepIntoSteps into the next function call, if possible.
Public methodStepOutSteps out of the current function.
Public methodStepOverSteps over the next function call.
Public methodStopStops debugging, terminating, or detaching from all attached processes.
Public methodTerminateAllTerminates all processes.

The debugger is available through the DTE object by way of its Debugger property, as shown in the example below. One debugger object is available for each instance of the development environment.

The following example demonstrates how to use Debugger object.

// The following small C++ program can be run from the command line.
// It detects whether an instance of Visual Studio is currently 
// running,and if so, prints a message stating whether its debugger
// is actively debugging.

#include <stdio.h>
#import "dte.olb" raw_interfaces_only named_guids

using namespace EnvDTE;

int main(void)
    int nRet = 0;


    IUnknownPtr pUnk;
    GetActiveObject(CLSID_DTE, NULL, &pUnk);

    if (pUnk == NULL) {
        printf ("No instance of Visual Studio is running.\n");
    else {
        _DTEPtr pDTE = pUnk;
        if (pDTE) {
            DebuggerPtr pDebugger;
            if (SUCCEEDED(pDTE->get_Debugger(&pDebugger)) && pDebugger != NULL){
                dbgDebugMode mode;
                if (SUCCEEDED(pDebugger->get_CurrentMode(&mode))) {
                    if (mode != dbgDesignMode) {
                        printf("Debugger is active.\n");
                        nRet = 1;
                    else {
                        printf("Debugger is not active.\n");


    return nRet;