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 | |
---|---|---|
AllBreakpointsLastHit | Ruft eine Auflistung der gebundenen Haltepunkte ab, die als letztes gleichzeitig erreicht wurden. | |
BreakpointLastHit | Ruft den zuletzt erreichten Haltepunkt ab. | |
Breakpoints | Ruft eine Auflistung von Haltepunkten ab. | |
CurrentMode | Ruft den aktuellen Debuggermodus im Kontext der integrierten Entwicklungsumgebung (IDE) ab. | |
CurrentProcess | Legt den aktiven Prozess fest oder ruft ihn ab. | |
CurrentProgram | Legt das aktive Programm fest oder ruft es ab. | |
CurrentStackFrame | Legt den aktuellen Stapelrahmen fest oder ruft ihn ab. | |
CurrentThread | Legt den aktuellen Thread fest, der gedebuggt wird, oder ruft in ab. | |
DebuggedProcesses | Ruft eine Liste der Prozesse ab, die momentan gedebuggt werden. | |
DTE | Ruft das Erweiterbarkeitsobjekt der obersten Ebene ab. | |
HexDisplayMode | Ruft ab oder legt fest, ob Ausdrücke im Hexadezimal- oder Dezimalformat ausgegeben werden. | |
HexInputMode | Ruft ab oder legt fest, ob Ausdrücke im Hexadezimal- oder Dezimalformat ausgewertet werden. | |
Languages | Ruft eine Liste der vom Debugger unterstützten Sprachen ab. | |
LastBreakReason | Ruft die zuletzt aufgetretene Ursache für den Programmabsturz ab.Wenn das Programm ausgeführt wird, wird DBG_REASON_NONE zurückgegeben. | |
LocalProcesses | Ruft die Liste der Prozesse ab, die momentan auf dem Computer ausgeführt werden. | |
Parent | Ruft das unmittelbar übergeordnete Objekt eines Debugger-Objekts ab. |
Zum Seitenanfang
Methoden
Name | Beschreibung | |
---|---|---|
Break | Bewirkt, dass dieser Prozess angehalten wird, sodass der aktuelle Zustand analysiert werden kann. | |
DetachAll | Trennt alle angefügten Programme. | |
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. | |
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. | |
Go | Startet die Programmausführung von der aktuellen Anweisung. | |
RunToCursor | Führt das Programm bis zur aktuellen Position des Cursors in der Quelldatei aus. | |
SetNextStatement | Legt gemäß der Cursorposition in der aktuellen Quelldatei die nächste auszuführende Anweisung fest. | |
StepInto | Führt einen Einzelschritt in den nächsten Funktionsaufruf aus, falls möglich. | |
StepOut | Verlässt die aktuelle Funktion. | |
StepOver | Überspringt den nächsten Funktionsaufruf. | |
Stop | Beendet das Debuggen und bricht alle angefügten Prozesse ab. | |
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;
}