Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein Haltepunkt ist ein Speicherort im ausführbaren Code, an dem das Betriebssystem die Ausführung beendet und in den Debugger einbricht. Auf diese Weise können Sie die Ziel- und Problemdebuggerbefehle analysieren.
Sie können den Speicherort eines Haltepunkts durch eine virtuelle Adresse, durch Modul- und Routineoffsets oder durch eine Quelldatei und Zeilennummer angeben (im Quellmodus). Wenn Sie einen Haltepunkt auf eine Routine ohne Offset setzen, wird der Haltepunkt aktiviert, wenn die Routine aufgerufen 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 über eine Adresse ermöglichen, bevor er ausgelöst wird.
Ein Haltepunkt kann bestimmte Befehle automatisch ausführen, wenn er ausgelöst wird.
Ein Haltepunkt kann in nicht-ausführbarem Speicher gesetzt werden, um zu überwachen, ob diese Speicherstelle gelesen oder beschrieben wird.
Wenn Sie mehrere Prozesse im Benutzermodus debuggen, hängt die Sammlung von Haltepunkten vom aktuellen Prozess ab. Zum Anzeigen oder Ändern der Haltepunkte eines Prozesses 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 (Haltepunktliste), um vorhandene Haltepunkte und deren aktuellen Status aufzulisten.
Verwenden Sie den Befehl ".bpcmds" (Haltepunktbefehle anzeigen), um alle Haltepunkte zusammen mit den Befehlen aufzulisten, die zum Erstellen verwendet wurden.
Verwenden Sie den Befehl bp (Haltepunkt 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 sind, werden als nicht aufgelöste Haltepunkte bezeichnet; sie weisen unterschiedliche Merkmale als Haltepunkte auf, die mit bp festgelegt sind. Ausführliche Informationen finden Sie unter Unresolved Breakpoints (bu Breakpoints).
Verwenden Sie den Befehl bm (Set Symbol Breakpoint), um neue Haltepunkte für Symbole festzulegen, die einem angegebenen Muster entsprechen. Ein Haltepunktsatz mit bm wird einer Adresse (z. B. einem bp-Haltepunkt ) zugeordnet, wenn der Schalter /d enthalten ist; es wird nicht aufgelöst (wie 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 beschrieben wird, wenn er gelesen wird, wenn er als Code ausgeführt wird oder wenn Kernel-I/O auftritt. Ausführliche Informationen finden Sie unter Prozessor-Haltepunkte (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" (Haltepunkt aktivieren), 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 (Befehl 'Haltepunkt aktualisieren'), um den Befehl zu ändern, der einem vorhandenen Haltepunkt zugeordnet ist.
Verwenden Sie den Befehl bsc (Bedingten Haltepunkt aktualisieren), 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. Siehe auch Festlegen von Haltepunkten in WinDbg (Klassisch).
Jeder Haltepunkt weist eine Dezimalzahl auf, die als Haltepunkt-ID bezeichnet wird. Diese Zahl identifiziert den Haltepunkt (Breakpoint) 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 hält beispielsweise bei MyFunction+0x47 an, schreibt ein Speicherabbild und setzt dann die Ausführung fort.
0:000> bu MyFunction+0x47 ".dump c:\mydump.dmp; g"
Anmerkung Wenn Sie den Benutzermodusdebugger über den Kerneldebugger steuern, verwenden Sie nicht g (Go) in der Haltepunkt-Befehlszeichenfolge. Die serielle Schnittstelle kann möglicherweise nicht mit diesem Befehl auf dem Laufenden bleiben, und Sie können nicht wieder in CDB wechseln. Weitere Informationen zu dieser Situation finden Sie unter Steuern des User-Mode Debuggers aus dem Kerneldebugger.
Anzahl der Breakpoints
Im Kernelmodus können Sie maximal 32 Software-Haltepunkte verwenden. Im Benutzermodus können Sie beliebig viele Software-Breakpoints verwenden.
Die Anzahl der unterstützten Prozessorunterbrechungen 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 oder höher der Debugger-Engine wird jetzt die mehrdeutige Haltepunktauflösung unterstützt. Mehrdeutige Haltepunkte ermöglichen es dem Debugger, Haltepunkte in bestimmten Szenarien festzulegen, in denen ein Haltepunktausdruck an mehreren Code-Positionen aufgelöst wird. Weitere Informationen finden Sie unter "Mehrdeutige Haltepunktauflösung".