This topic has not yet been rated - Rate this topic

Debugger3 Interface

Debugger3 is used to interrogate and manipulate the state of the debugger and the program being debugged. Debugger3 supersedes the Debugger2 and Debugger interfaces.

Namespace:  EnvDTE90
Assembly:  EnvDTE90 (in EnvDTE90.dll)
[GuidAttribute("87DFC8DA-67B4-4954-BB89-6A277A50BAFC")]
public interface Debugger3 : Debugger2

The Debugger3 type exposes the following members.

  NameDescription
Public propertyAllBreakpointsLastHit (Inherited from Debugger2.)
Public propertyAllBreakpointsLastHitGets a collection of bound breakpoints that were last simultaneously hit.
Public propertyBreakpointLastHit (Inherited from Debugger2.)
Public propertyBreakpointLastHitGets the last breakpoint hit.
Public propertyBreakpoints (Inherited from Debugger2.)
Public propertyBreakpointsGets a collection of breakpoints.
Public propertyCurrentMode (Inherited from Debugger2.)
Public propertyCurrentModeGets the current mode of the debugger within the context of the IDE.
Public propertyCurrentProcess (Inherited from Debugger2.)
Public propertyCurrentProcessGets or sets the active process.
Public propertyCurrentProgram (Inherited from Debugger2.)
Public propertyCurrentProgramSets or returns the active program.
Public propertyCurrentStackFrame (Inherited from Debugger2.)
Public propertyCurrentStackFrameGets or sets the current stack frame.
Public propertyCurrentThread (Inherited from Debugger2.)
Public propertyCurrentThreadGets or sets the current thread being debugged.
Public propertyDebuggedProcesses (Inherited from Debugger2.)
Public propertyDebuggedProcessesGets the list of processes that are being debugged.
Public propertyDTE (Inherited from Debugger2.)
Public propertyDTEGets the top-level extensibility object.
Public propertyExceptionGroupsGets the exception settings for the debugger. For each exception, these settings determine whether the debugger gives the code an opportunity to handle the exception before the debugger breaks execution.
Public propertyForceContinueGets or sets a value that determines whether the debugger breaks or continues when a tracepoint or breakpoint finishes executing a macro. The default behavior is set by the user in the dialog box when the tracepoint or breakpoint is created. This property can be used to change the default behavior.
Public propertyHexDisplayMode (Inherited from Debugger2.)
Public propertyHexDisplayModeGets or sets a value that indicates whether the expressions are output in hexadecimal or decimal format.
Public propertyHexInputMode (Inherited from Debugger2.)
Public propertyHexInputModeGets or sets a value that indicates whether the expressions are evaluated in hexadecimal or decimal format.
Public propertyLanguages (Inherited from Debugger2.)
Public propertyLanguagesGets a list of languages that the debugger supports.
Public propertyLastBreakReason (Inherited from Debugger2.)
Public propertyLastBreakReasonGets the last reason that a program was broken. If the program is running it returns DBG_REASON_NONE.
Public propertyLocalProcesses (Inherited from Debugger2.)
Public propertyLocalProcessesGets the list of processes that currently running on this computer.
Public propertyOnlyLoadSymbolsManuallyGets a value that determines whether symbols are loaded manually or automatically. The Visual Studio user can determine this setting in the Options dialog box. For more information about how to set this value within Visual Studio, see How to: Specify Symbol Locations and Loading Behavior.
Public propertyParent (Inherited from Debugger2.)
Public propertyParentGets the immediate parent object of the Debugger3 object (DTE2).
Public propertySymbolCachePathGets a string that contains the path to the symbols cache used by Visual Studio when you download symbols from a symbols server. You can specify the symbols cache path in the Options dialog box. For more information, see How to: Use a Symbol Server.
Public propertySymbolPathGets a string that contains paths to .PDB symbol files that are used by Visual Studio for debugging. The Visual Studio user can specify symbols paths in the Options dialog box. For more information, see How to: Specify Symbol Locations and Loading Behavior.
Public propertySymbolPathStateGets a string that represents the state of all symbol paths for the .PDB symbol files that are used by Visual Studio for debugging.
Public propertyTransports (Inherited from Debugger2.)
Public propertyTransportsGets a collection of supported debugging transports.
Top
  NameDescription
Public methodBreak(Boolean) (Inherited from Debugger2.)
Public methodBreak(Boolean)Causes the given process to pause its execution so that its current state can be analyzed.
Public methodDetachAll() (Inherited from Debugger2.)
Public methodDetachAll()Detaches from all attached programs.
Public methodExecuteStatement(String, Int32, Boolean) (Inherited from Debugger2.)
Public methodExecuteStatement(String, Int32, Boolean)Executes 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 methodGetExpression(String, Boolean, Int32) (Inherited from Debugger2.)
Public methodGetExpression(String, Boolean, Int32)Evaluates an expression based on the current stack frame. If the expression can be parsed but not evaluated, an object is returned but does not contain a valid value.
Public methodGetExpression2(String, Boolean, Boolean, Int32) (Inherited from Debugger2.)
Public methodGetExpression2(String, Boolean, Boolean, Int32)Evaluates an expression based on the current stack frame. If the expression can be parsed but not evaluated, an object is returned but does not contain a valid value. This member function is similar to GetExpression but with an additional Boolean parameter, which can be set to true to indicate that the expression is to be evaluated as a statement.
Public methodGetProcesses(Transport, String) (Inherited from Debugger2.)
Public methodGetProcesses(Transport, String)
Public methodGo(Boolean) (Inherited from Debugger2.)
Public methodGo(Boolean)Starts executing the program from the current statement.
Public methodRunToCursor(Boolean) (Inherited from Debugger2.)
Public methodRunToCursor(Boolean)Executes the program to the current position of the source file cursor.
Public methodSetNextStatement() (Inherited from Debugger2.)
Public methodSetNextStatement()Sets the next instruction to be executed, according to the cursor position in the current source file.
Public methodSetSymbolSettingsSets various settings for the .PDB symbols used by Visual Studio for debugging and forces reloading of all symbols.
Public methodStepInto(Boolean) (Inherited from Debugger2.)
Public methodStepInto(Boolean)Steps into the next function call, if possible.
Public methodStepOut(Boolean) (Inherited from Debugger2.)
Public methodStepOut(Boolean)Steps out of the current function.
Public methodStepOver(Boolean) (Inherited from Debugger2.)
Public methodStepOver(Boolean)Steps over the next function call.
Public methodStop(Boolean) (Inherited from Debugger2.)
Public methodStop(Boolean)Stops debugging and terminates or detaches from all attached processes.
Public methodTerminateAll() (Inherited from Debugger2.)
Public methodTerminateAll()Terminates all currently running debugging processes.
Public methodWriteMinidump(String, dbgMinidumpOption) (Inherited from Debugger2.)
Public methodWriteMinidump(String, dbgMinidumpOption)
Top

The debugger is available through the DTE2 object through its Debugger property, as shown in the following example. One debugger object is available for each instance of the interactive development environment (IDE).

// The following 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 "dte90.olb" raw_interfaces_only named_guids
using namespace EnvDTE90;
int main(void)
{
    int nRet = 0;
    CoInitialize(NULL);
    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(&pDebugger3)) && 
            pDebugger3
            != NULL){
                dbgDebugMode mode;
                if (SUCCEEDED(pDebugger3->get_CurrentMode(&mode))) {
                    if (mode != dbgDesignMode) {
                        printf("Debugger is active.\n");
                        nRet = 1;
                    }
                    else {
                        printf("Debugger is not active.\n");
                    }
                }
            }
        }
    }
    CoUninitialize();
    return nRet;
}
Did you find this helpful?
(1500 characters remaining)
© 2013 Microsoft. All rights reserved.