Debugger-Schnittstelle

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

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

Syntax

'Declaration
<GuidAttribute("338FB9A0-BAE5-11D2-8AD1-00C04F79E479")> _
Public Interface Debugger
[GuidAttribute("338FB9A0-BAE5-11D2-8AD1-00C04F79E479")]
public interface Debugger
[GuidAttribute(L"338FB9A0-BAE5-11D2-8AD1-00C04F79E479")]
public interface class Debugger
[<GuidAttribute("338FB9A0-BAE5-11D2-8AD1-00C04F79E479")>]
type Debugger =  interface end
public interface Debugger

Der Debugger-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 Debuggermodus im Kontext der integrierten Entwicklungsumgebung (IDE) ab.
Öffentliche Eigenschaft CurrentProcess Legt den aktiven Prozess fest oder ruft ihn ab.
Öffentliche Eigenschaft CurrentProgram Legt das aktive Programm fest oder ruft es ab.
Öffentliche Eigenschaft CurrentStackFrame Legt den aktuellen Stapelrahmen fest oder ruft ihn ab.
Öffentliche Eigenschaft CurrentThread Legt den aktuellen Thread fest, der gedebuggt wird, oder ruft in ab.
Ö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 ab oder legt fest, ob Ausdrücke im Hexadezimal- oder Dezimalformat ausgegeben werden.
Öffentliche Eigenschaft HexInputMode Ruft ab oder legt fest, ob Ausdrücke im Hexadezimal- oder Dezimalformat ausgewertet werden.
Ö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.Wenn das Programm ausgeführt wird, 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 eines Debugger-Objekts 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 angefügten 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 das Befehlsfenster gesendet.
Öffentliche Methode GetExpression Wertet einen Ausdruck auf Grundlage des aktuellen Stapelrahmens aus.Wenn der Ausdruck analysiert, aber nicht ausgewertet werden kann, wird zwar ein Objekt zurückgegeben, es enthält jedoch keinen gültigen Wert.
Öffentliche Methode Go Startet die Programmausführung von der aktuellen Anweisung.
Öffentliche Methode RunToCursor Führt das Programm bis zur aktuellen Position des Cursors in der Quelldatei 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 Beendet das Debuggen und bricht alle angefügten Prozesse ab.
Öffentliche Methode TerminateAll Beendet alle Prozesse.

Zum Seitenanfang

Hinweise

Der Debugger wird über das DTE-Objekt, genauer über dessen Debugger-Eigenschaft, bereitgestellt, wie Sie dem folgenden Beispiel entnehmen können. Für jede Instanz der Entwicklungsumgebung wird ein Debugger-Objekt bereitgestellt.

Beispiele

Im folgenden Beispiel wird die Verwendung des Debuggerobjekts veranschaulicht.

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 EnvDTE.Debugger
        debugger = DTE.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 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;

    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(&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");
                    }
                }
            }
        }
    }

    CoUninitialize();

    return nRet;
}

Siehe auch

Referenz

EnvDTE-Namespace

Weitere Ressourcen

Diagramm "Automationsobjektmodell"

Debuggen in Visual Studio