Methoden zum Steuern von Haltepunkten
Sie können den Speicherort eines Haltepunkts nach virtueller Adresse, Modul- und Routineoffsets oder Quelldatei und Zeilennummer (im Quellmodus) angeben. Wenn Sie einen Haltepunkt für eine Routine ohne Offset setzen, wird der Haltepunkt aktiviert, wenn diese Routine eingegeben wird.
Es gibt mehrere zusätzliche Arten von Haltepunkten:
Ein Haltepunkt kann einem bestimmten Thread zugeordnet werden.
Ein Haltepunkt kann eine feste Anzahl von Durchläufen durch eine Adresse aktivieren, bevor sie ausgelöst wird.
Ein Haltepunkt kann bestimmte Befehle automatisch ausgeben, wenn er ausgelöst wird.
Ein Haltepunkt kann für nicht ausführbaren Speicher und watch festgelegt werden, damit dieser Speicherort gelesen oder geschrieben werden kann.
Wenn Sie mehrere Prozesse im Benutzermodus debuggen, hängt die Sammlung von Haltepunkten vom aktuellen Prozess ab. Um die Haltepunkte eines Prozesses anzuzeigen oder zu ändern, müssen Sie den Prozess als aktuellen Prozess auswählen. Weitere Informationen zum aktuellen Prozess finden Sie unter Steuern von Prozessen und Threads.
Debuggerbefehle zum Steuern und Anzeigen von Haltepunkten
Zum Steuern oder Anzeigen von Haltepunkten können Sie die folgenden Methoden verwenden:
Verwenden Sie den Befehl bl (Breakpoint List), um vorhandene Haltepunkte und deren aktuelle status aufzulisten.
Verwenden Sie den Befehl .bpcmds (Display Breakpoint Commands), um alle Haltepunkte zusammen mit den Befehlen aufzulisten, die zu deren Erstellung verwendet wurden.
Verwenden Sie den Befehl bp (Breakpoint festlegen), um einen neuen Haltepunkt festzulegen.
Verwenden Sie den Befehl bu (Nicht aufgelösten Haltepunkt festlegen), um einen neuen Haltepunkt festzulegen. Haltepunkte, die mit bu festgelegt werden, werden als nicht aufgelöste Haltepunkte bezeichnet; sie haben andere Eigenschaften als Haltepunkte, die mit bp festgelegt werden. Ausführliche Informationen finden Sie unter Nicht aufgelöste Haltepunkte (bu Breakpoints).
Verwenden Sie den Befehl bm (Set Symbol Breakpoint), um neue Haltepunkte für Symbole festzulegen, die einem angegebenen Muster entsprechen. Ein mit bm festgelegter Haltepunkt wird einer Adresse (z. B. einem bp-Haltepunkt) zugeordnet, wenn der Schalter /d enthalten ist. es wird nicht aufgelöst (z. B. ein Bu-Haltepunkt), wenn dieser Schalter nicht enthalten ist.
Verwenden Sie den Befehl ba (Break on Access), um einen Prozessorhaltepunkt festzulegen, der auch als Datenhaltepunkt bezeichnet wird. Diese Haltepunkte können ausgelöst werden, wenn der Speicherort des Arbeitsspeichers geschrieben wird, wenn er gelesen wird, wenn er als Code ausgeführt wird oder wenn kernel-E/A auftritt. Ausführliche Informationen finden Sie unter Prozessor breakpoints (ba Breakpoints).
Verwenden Sie den Befehl bc (Breakpoint Clear), um einen oder mehrere Haltepunkte dauerhaft zu entfernen.
Verwenden Sie den Befehl bd (Breakpoint Disable), um einen oder mehrere Haltepunkte vorübergehend zu deaktivieren.
Verwenden Sie den Befehl be (Breakpoint Enable), um einen oder mehrere deaktivierte Haltepunkte erneut zu aktivieren.
Verwenden Sie den Befehl br (Breakpoint Renumber), um die ID eines vorhandenen Haltepunkts zu ändern.
Verwenden Sie den Befehl bs (Update Breakpoint Command), um den Befehl zu ändern, der einem vorhandenen Haltepunkt zugeordnet ist.
Verwenden Sie den Befehl bsc (Update Conditional Breakpoint), um die Bedingung zu ändern, unter der ein vorhandener bedingter Haltepunkt auftritt.
In WinDbg gibt es mehrere Benutzeroberflächenelemente, die das Steuern und Anzeigen von Haltepunkten erleichtern. Weitere Informationen finden Sie unter Festlegen von Haltepunkten in WinDbg (Klassisch).
Jedem Haltepunkt ist eine Dezimalzahl namens Breakpoint-ID zugeordnet. Diese Zahl identifiziert den Haltepunkt in verschiedenen Befehlen.
Haltepunktbefehle
Sie können einen Befehl in einen Haltepunkt einschließen, der automatisch ausgeführt wird, wenn der Haltepunkt erreicht wird. Der folgende Befehl unterbricht z. B. MyFunction+0x47, schreibt eine Speicherabbilddatei und setzt dann die Ausführung fort.
0:000> bu MyFunction+0x47 ".dump c:\mydump.dmp; g"
Hinweis Wenn Sie den Benutzermodusdebugger über den Kerneldebugger steuern, verwenden Sie nicht g (Go) in der Haltepunktbefehlszeichenfolge. Die serielle Schnittstelle kann mit diesem Befehl möglicherweise nicht Schritt halten, und Sie können in CDB nicht wieder aufbrechen. Weitere Informationen zu dieser Situation finden Sie unter Steuern des User-Mode Debuggers über den Kerneldebugger.
Anzahl der Haltepunkte
Im Kernelmodus können Sie maximal 32 Softwarehaltepunkte verwenden. Im Benutzermodus können Sie eine beliebige Anzahl von Softwarehaltepunkten verwenden.
Die Anzahl der unterstützten Prozessorhaltepunkte hängt von der Zielprozessorarchitektur ab.
Bedingte Haltepunkte
Sie können einen Haltepunkt festlegen, der nur unter bestimmten Bedingungen ausgelöst wird. Weitere Informationen zu diesen Arten von Haltepunkten finden Sie unter Festlegen eines bedingten Haltepunkts.
Mehrdeutige Haltepunkte
In Version 10.0.25310.1001 und höher der Debugger-Engine wird jetzt mehrdeutige Breakpointauflösung unterstützt. Mehrdeutige Haltepunkte ermöglichen es dem Debugger, Haltepunkte in bestimmten Szenarien festzulegen, in denen ein Haltepunktausdruck an mehrere Speicherorte aufgelöst wird. Weitere Informationen finden Sie unter Mehrdeutige Breakpointauflösung.