- break FileName:LineNo legt einen Breakpoint an einer Position in der Quelle fest.
- break~zahl legt einen Breakpoint an einem Symbol fest, das kurz vorher mit dem x-Befehl angezeigt wurde.
- break modul!klassenname.methode+IlOffset legt einen Breakpoint am vollqualifizierten Speicherort fest.
value
als aktuelle Option festgelegt. Die folgenden Optionen sind derzeit verfügbar: - extpath
legt den Pfad fest, um Erweiterungen zu suchen, wenn der load
-Befehl verwendet wird.
- extpath+
fügt einen Pfad zum Laden von Erweiterungen hinzu.
-ad
Nr] Funktionsname [Argumente... ] Die -ad
-Option gibt die Anwendungsdomäne an, die zum Auflösen der Funktion verwendet werden soll. Wird die -ad
-Option nicht angegeben, ist die Standardeinstellung der Anwendungsdomäne für die Auflösung die Anwendungsdomäne, in der sich der für die Funktionsauswertung verwendete Thread befindet.
Wenn die ausgewertete Funktion nicht statisch ist, sollte der erste übergebene Parameter ein this
-Zeiger sein. Alle Anwendungsdomänen werden nach Argumenten für die Funktionsauswertung durchsucht.
Um einen Wert aus einer Anwendungsdomäne anzufordern, stellen Sie der Variablen den Modul- und Anwendungsdomänennamen als Präfix voran, z. B. funceval -ad 0 System.Object.ToString hello.exe#0!MyClass.g_rootRef
. Mit diesem Befehl wird die Funktion System.Object.ToString
in der Anwendungsdomäne 0
ausgewertet. Da die ToString
-Methode eine Instanzfunktion ist, muss der erste Parameter ein this
-Zeiger sein.
-oder-
? [Befehl]
Wenn der Debugger auf eine Ausnahme trifft, verwenden Sie diesen Befehl, um für den Debugger einen Rollback zur angegebenen Framenummer auszuführen. Sie können den Programmzustand mit dem set-Befehl ändern und mit dem go-Befehl fortfahren.
LoadExtension
vom Typ Microsoft.Tools.Mdbg.Extension.Extension
auszuführen.mode
ohne Optionen, um eine Liste der Debugmodi und ihre aktuellen Einstellungen abzurufen.-d
]-d
) aus.–r
(rekursiv), um die InnerException
-Eigenschaft für das Ausnahmeobjekt zu durchlaufen, um Informationen zur gesamten Ausnahmekette abzurufen.*
| [~
]threadNumber] Wenn für den threadnummer-Parameter *
angegeben wird oder die Threadnummer mit ~
beginnt, wird der Befehl auf alle Threads mit Ausnahme des durch threadnummer angegebenen Threads angewendet.
Das Fortsetzen eines nicht unterbrochenen Threads hat keine Auswirkungen.
-d
(ebug
) | -o
(ptimize
) |-enc
] [[path_to_exe] [args_to_exe]]run
-Befehl ausgeführt wurde. Wird das ausführbare Argument bereitgestellt, wird das angegebene Programm mit den optional angegebenen Argumenten ausgeführt.Wenn Ladeereignisse für Klassen und Module sowie Threadstartereignisse ignoriert werden (dies entspricht der Standardeinstellung), wird das Programm bei der ersten ausführbaren Anweisung des Hauptthreads angehalten.
Sie können den Debugger zur JIT-Kompilierung (Just-In-Time) des Codes zwingen, indem Sie eines der drei folgenden Flags verwenden:
- -d
( ebug
) deaktiviert Optimierungen. Dies ist die Standardeinstellung für "MDbg.exe".
- -o
( ptimize
) erzwingt eine Ausführung des Codes, die der Ausführung außerhalb des Debuggers ähnelt. Allerdings wird das Debuggen dabei auch erschwert. Dies ist die Standardeinstellung für die Verwendung außerhalb des Debuggers.
- -enc
aktiviert die Funktion „Bearbeiten und Fortfahren“ beeinträchtigt jedoch die Leistung.
Sie können auch eigene Debuggervariablen erstellen und ihnen Verweiswerte innerhalb der Anwendung zuweisen. Diese Werte fungieren als Handles zum ursprünglichen Wert, und auch der ursprüngliche Wert liegt außerhalb des Bereichs. Alle Debuggervariablen müssen mit $
beginnen (z. B. $var
). Löschen Sie diese Handles, indem Sie sie mit dem folgenden Befehl auf keinen Wert festlegen:
set $var=
-il
] zahl-il
Option angeben, stellt die Zahl einen CIL-Offset (Common Intermediate Language) in der Methode dar. Andernfalls stellt die Zahl eine Quellzeilennummer dar.*
angegeben wird, wird der Befehl auf alle Threads angewendet. Beginnt die Threadnummer mit ~
, wird der Befehl für alle Threads mit Ausnahme des durch threadnummer angegebenen Threads angewendet. Unterbrochene Threads werden von der Ausführung ausgeschlossen, wenn der Prozess entweder durch den go-Befehl oder den step-Befehl ausgeführt wird. Wenn sich keine nicht unterbrochenen Threads im Prozess befinden und Sie den go-Befehl ausgeben, wird der Prozess nicht fortgesetzt. Drücken Sie in diesem Fall STRG+C, um den Prozess zu beeinflussen. - symbol path
["value"
] – Zeigt den aktuellen Symbolpfad an oder legt diesen fest.
- symbol addpath
"value"
– Fügt dem aktuellen Symbolpfad den Wert hinzu.
- symbol reload
["module"
] – Lädt entweder alle Symbole oder die Symbole für das angegebene Modul erneut.
- symbol list
[module
] – Zeigt die derzeit geladenen Symbole für alle Module oder das angegebene Modul an.
]
-nick
-Parameter verwenden, um einem Thread einen Spitznamen zuzuweisen. - thread -nick
threadName weist dem aktuell ausgeführten Thread einen Spitznamen zu.
Spitznamen dürfen nicht aus Zahlen bestehen. Wenn dem aktuellen Thread bereits ein Spitzname zugewiesen wurde, wird der alte Spitzname durch den neuen ersetzt. Wenn der neue Spitzname eine leere Zeichenfolge ("") ist, wird der Spitzname für den aktuellen Thread gelöscht und dem Thread wird kein neuer Spitzname zugewiesen.
when
-Anweisungen an. beim Löschen aller | num
[ [num
num
...]] – Löscht die when
-Anweisung, die durch die Zahl angegeben wird, oder alle when
-Anweisungen, wenn all
angegeben wird.
wenn stopReason
[specific_condition
] [cmd
[cmd
...cmd
] ] – Der stopReason-Parameter kann einer der folgenden sein:
StepComplete
, ProcessExited
, , ThreadCreated
, BreakpointHit
, ModuleLoaded
, AssemblyLoaded
ClassLoaded
, , AssemblyUnloaded
, , UnhandledExceptionThrown
AttachComplete
AsyncStop
ExceptionThrown
ControlCTrapped
EvalComplete
EvalException
UserBreak
, , . . NativeStop
RemapOpportunityReached
specific_condition kann einen der folgenden Werte haben:
- zahl – Löst für ThreadCreated
und BreakpointHit
nur eine Aktion bei Beenden durch eine Thread-ID/Haltepunktnummer mit demselben Wert aus.
– [!
]name – Löst für ModuleLoaded
, ClassLoaded
, AssemblyLoaded
, AssemblyUnloaded
, ExceptionThrown
und UnhandledExceptionThrown
nur eine Aktion aus, wenn der Name dem Namen von stopGrund entspricht.
specific_condition muss für andere Werte von stopGrund leer sein.
-v
] [-c
Tiefe] [threadID] – Die -v
-Option liefert ausführliche Informationen über jeden angezeigten Stapelrahmen.
– Durch Angeben einer Zahl für depth
wird die Anzahl der angezeigten Frames beschränkt. Verwenden Sie den all-Befehl, um alle Frames anzuzeigen. Der Standard ist 100.
– Wenn Sie den threadID-Parameter angeben, können Sie steuern, welcher Thread dem Stapel zugeordnet wird. Der Standardwert ist nur der aktuelle Thread. Verwenden Sie den all-Befehl, um alle Threads abzurufen.
-c
nrsymbole] [modul[!
muster]]pattern
für ein Modul entsprechen. Wenn nrsymbole angegeben wird, wird die Ausgabe auf die festgelegte Anzahl beschränkt. Wenn !
(das einen regulären Ausdruck angibt) für muster nicht angegeben wird, werden alle Funktionen angezeigt. Wenn modul nicht angegeben wird, werden alle geladenen Module angezeigt. Symbole ( ~# ) können verwendet werden, um Haltepunkte mit dem break-Befehl festzulegen.