Freigeben über


Debugger2-Schnittstelle

Mit dem Debugger2-Objekt können die Zustände des Debuggers und des Programms, das momentan gedebuggt wird, abgefragt und bearbeitet werden. Das Debugger2-Objekt hat Vorrang vor dem Debugger-Objekt.

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

Syntax

'Declaration
<GuidAttribute("8B5E2BFD-4642-4EFE-8AF4-0B2DA9AAA23C")> _
Public Interface Debugger2 _
    Inherits Debugger
[GuidAttribute("8B5E2BFD-4642-4EFE-8AF4-0B2DA9AAA23C")]
public interface Debugger2 : Debugger
[GuidAttribute(L"8B5E2BFD-4642-4EFE-8AF4-0B2DA9AAA23C")]
public interface class Debugger2 : Debugger
[<GuidAttribute("8B5E2BFD-4642-4EFE-8AF4-0B2DA9AAA23C")>]
type Debugger2 =  
    interface 
        interface Debugger 
    end
public interface Debugger2 extends Debugger

Der Debugger2-Typ macht die folgenden Member verfügbar.

Eigenschaften

  Name Beschreibung
Öffentliche Eigenschaft AllBreakpointsLastHit Ruft eine Auflistung der gebundenen Haltepunkte ab, die als letztes gleichzeitig erreicht wurden.
Öffentliche Eigenschaft BreakpointLastHit Ruft den zuletzt erreichten Haltepunkt ab.
Öffentliche Eigenschaft Breakpoints Ruft eine Auflistung von Haltepunkten ab.
Öffentliche Eigenschaft CurrentMode Ruft den aktuellen Modus des Debuggers im Kontext der IDE ab.
Öffentliche Eigenschaft CurrentProcess Ruft den aktiven Prozess ab oder legt ihn fest.
Öffentliche Eigenschaft CurrentProgram Legt das aktive Programm fest oder gibt dieses zurück.
Öffentliche Eigenschaft CurrentStackFrame Ruft den aktuellen Stapelrahmen ab oder legt ihn fest.
Öffentliche Eigenschaft CurrentThread Ruft den aktuellen Thread ab, der gedebuggt wird, oder legt ihn fest.
Öffentliche Eigenschaft DebuggedProcesses Ruft eine Liste der Prozesse ab, die momentan gedebuggt werden.
Öffentliche Eigenschaft DTE Ruft das Erweiterbarkeitsobjekt der obersten Ebene ab.
Öffentliche Eigenschaft HexDisplayMode Ruft den Wert ab, der angibt, ob die Ausdrücke als Dezimal- oder Hexadezimalwert ausgegeben werden, oder legt diesen Wert fest.
Öffentliche Eigenschaft HexInputMode Ruft einen Wert ab, der angibt, ob die Ausdrücke als Dezimal- oder Hexadezimalwert ausgewertet werden, oder legt diesen Wert fest.
Öffentliche Eigenschaft Languages Ruft eine Liste der vom Debugger unterstützten Sprachen ab.
Öffentliche Eigenschaft LastBreakReason Ruft die zuletzt aufgetretene Ursache für den Programmabsturz ab.Bei laufendem Programm wird DBG_REASON_NONE zurückgegeben.
Öffentliche Eigenschaft LocalProcesses Ruft die Liste der Prozesse ab, die momentan auf dem Computer ausgeführt werden.
Öffentliche Eigenschaft Parent Ruft das unmittelbar übergeordnete Objekt des Debugger2-Objekts (DTE2) ab.
Öffentliche Eigenschaft Transports Ruft eine Auflistung der unterstützten Debugtransporte ab.

Zum Seitenanfang

Methoden

  Name Beschreibung
Öffentliche Methode Break Bewirkt, dass dieser Prozess angehalten wird, sodass der aktuelle Zustand analysiert werden kann.
Öffentliche Methode DetachAll Trennt alle angehängten Programme.
Öffentliche Methode ExecuteStatement Führt die angegebene Anweisung aus.Wenn das TreatAsExpression-Flag auf true festgelegt ist, wird die Zeichenfolge als Ausdruck interpretiert und die Ausgabe an Befehlsfenster gesendet.
Öffentliche Methode GetExpression Wertet einen Ausdruck basierend auf dem aktuellen Stapelrahmen aus.Wenn ein Ausdruck analysiert, aber nicht ausgewertet werden kann, wird ein Objekt zurückgegeben, das jedoch keinen gültigen Wert besitzt.
Öffentliche Methode GetExpression2 Wertet einen Ausdruck basierend auf dem aktuellen Stapelrahmen aus.Wenn ein Ausdruck analysiert, aber nicht ausgewertet werden kann, wird ein Objekt zurückgegeben, das jedoch keinen gültigen Wert besitzt.
Öffentliche Methode GetProcesses Ermöglicht es dem Aufrufer, eine Auflistung der Prozesse auf einem Remotecomputer abzurufen.
Öffentliche Methode Go Startet die Programmausführung von der aktuellen Anweisung.
Öffentliche Methode RunToCursor Führt das Programm an der aktuellen Position des Quelldateicursors aus.
Öffentliche Methode SetNextStatement Legt gemäß der Cursorposition in der aktuellen Quelldatei die nächste auszuführende Anweisung fest.
Öffentliche Methode StepInto Führt einen Einzelschritt in den nächsten Funktionsaufruf aus, falls möglich.
Öffentliche Methode StepOut Verlässt die aktuelle Funktion.
Öffentliche Methode StepOver Überspringt den nächsten Funktionsaufruf.
Öffentliche Methode Stop Hält den Debugvorgang an und beendet oder trennt alle angefügten Prozesse.
Öffentliche Methode TerminateAll Beendet alle laufenden Programme, die momentan gedebuggt werden.
Öffentliche Methode WriteMinidump Wenn ein Programm gedebuggt wird und sich im Unterbrechungsmodus befindet, wird von der Funktion ein Minidump der aktuellen Debugsitzung erstellt.

Zum Seitenanfang

Hinweise

Der Debugger ist über die Debugger-Eigenschaft des DTE2-Objekts verfügbar, wie im Beispiel unten zu sehen ist. Für jede Instanz der Entwicklungsumgebung wird ein Debugger-Objekt bereitgestellt.

Beispiele

Imports EnvDTE
Imports System.Diagnostics

Public Module Module1
    'This function returns true if the debugger is actively debugging.

    Function IsDebugging() As Boolean
        Dim debugger As EnvDTE80.Debugger2 
        debugger = DTE2.Debugger

        If (debugger Is Nothing) Then
            MsgBox("Debugger doesn't exist! Fatal error.")
            IsDebugging = false
        Else
            IsDebugging = (debugger.CurrentMode <> _
            dbgDebugMode.dbgDesignMode)
        End If
    End Function
End Module
// 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 "dte.olb" raw_interfaces_only named_guids
using namespace EnvDTE80;
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(&pDebugger2)) && 
            pDebugger2
            != NULL){
                dbgDebugMode mode;
                if (SUCCEEDED(pDebugger2->get_CurrentMode(&mode))) {
                    if (mode != dbgDesignMode) {
                        printf("Debugger is active.\n");
                        nRet = 1;
                    }
                    else {
                        printf("Debugger is not active.\n");
                    }
                }
            }
        }
    }
    CoUninitialize();
    return nRet;
}

Siehe auch

Referenz

EnvDTE80-Namespace