Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Die folgenden Syntaxelemente können beim Erstellen eines Haltepunkts verwendet werden, entweder über das Fenster "Debuggerbefehl" oder über die grafische Benutzeroberfläche von WinDbg.
Adressen in Unterbrechungspunkten
Haltepunkte unterstützen viele Arten von Adresssyntax, einschließlich virtueller Adressen, Funktionsoffsets und Quellzeilennummern. Sie können beispielsweise einen der folgenden Befehle verwenden, um Haltepunkte festzulegen:
0:000> bp 0040108c
0:000> bp main+5c
0:000> bp `source.c:31`
Weitere Informationen zu dieser Syntax finden Sie unter Syntax für numerische Ausdrücke, Quellzeilensyntax und den einzelnen Befehlsthemen.
Haltepunkte für Methoden
Wenn Sie einen Haltepunkt für die MyMethod-Methode in der MyClass-Klasse platzieren möchten, können Sie zwei verschiedene Syntaxen verwenden:
In der MASM-Ausdruckssyntax können Sie eine Methode durch einen Doppelpunkt oder einen Doppelunterstrich angeben.
0:000> bp MyClass::MyMethod 0:000> bp MyClass__MyMethodIn der C++-Ausdruckssyntax müssen Sie eine Methode durch einen Doppelpunkt angeben.
0:000> bp @@( MyClass::MyMethod )
Wenn Sie einen komplexeren Haltepunktbefehl verwenden möchten, sollten Sie die MASM-Ausdruckssyntax verwenden. Weitere Informationen zur Ausdruckssyntax finden Sie unter Auswerten von Ausdrücken.
Haltepunkte mit komplizierten MASM-Ausdrücken
Um einen Haltepunkt für komplizierte Funktionen festzulegen, einschließlich Funktionen, die Leerzeichen enthalten, sowie ein Element einer öffentlichen C++-Klasse, schließen Sie den Ausdruck in Klammern ein. Verwenden Sie z. B. bp (?? MyPublic) oder bp (Operator neu).
Eine vielseitigere Technik ist die Verwendung der @!"chars" Syntax. Dies ist eine besondere Escape-Sequenz im MASM-Evaluator, die es Ihnen ermöglicht, beliebigen Text zur Symbolauflösung anzugeben. Sie müssen mit den drei Symbolen @!" beginnen und mit einem Anführungszeichen (") enden. Ohne diese Syntax können Sie keine Leerzeichen, Winkelklammern (<, >) oder andere Sonderzeichen in Symbolnamen im MASM-Evaluator verwenden. Diese Syntax richtet sich ausschließlich an Namen und nicht an Parameter. Vorlagen und Überladungen sind die primären Quellen von Symbolen, die diese Anführungszeichennotation erfordern. Sie können den bu-Befehl auch mit der @!"chars"-Syntax festlegen, wie das folgende Codebeispiel zeigt.
0:000> bu @!"ExecutableName!std::pair<unsigned int,std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> > >::operator="
In diesem Beispiel ist ExecutableName der Name einer ausführbaren Datei.
Diese Escapesyntax ist für C++ (z. B. überladene Operatoren) anstelle von C nützlich, da in C-Funktionsnamen keine Leerzeichen (oder Sonderzeichen) vorhanden sind. Diese Syntax ist jedoch auch aufgrund der erheblichen Verwendung von Überladungen in .NET Framework für viele verwalteten Code wichtig.
Um einen Haltepunkt für beliebigen Text in der C++-Syntax festzulegen, verwenden Sie bu @@c++(text) für C++-kompatible Symbole.
Haltepunkte in Skripts
Breakpunkt-IDs müssen nicht explizit referenziert werden. Stattdessen können Sie einen numerischen Ausdruck verwenden, der zu einer ganzen Zahl aufgelöst wird, die einer Haltepunkt-ID entspricht. Um anzugeben, dass der Ausdruck als Haltepunkt interpretiert werden soll, verwenden Sie die folgende Syntax.
b?[Expression]
In dieser Syntax sind die eckigen Klammern erforderlich, und Expression steht für einen beliebigen numerischen Ausdruck, der zu einer ganzen Zahl aufgelöst wird, die einer Haltepunkt-ID entspricht.
Mit dieser Syntax können Debuggerskripts programmgesteuert einen Haltepunkt auswählen. Im folgenden Beispiel ändert sich der Haltepunkt abhängig vom Wert eines benutzerdefinierten Pseudoregisters.
b?[@$t0]
Haltepunkt-Pseudoregister
Wenn Sie in einem Ausdruck auf eine Haltepunktadresse verweisen möchten, können Sie ein Pseudoregister mit der $bpNumber Syntax verwenden, wobei Number die Haltepunkt-ID ist. Weitere Informationen zu dieser Syntax finden Sie unter Pseudo-Register Syntax.
Mehrdeutige Haltepunktauflösung
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".