Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Följande syntaxelement kan användas när du skapar en brytpunkt, antingen via felsökningskommandofönstret eller via det grafiska WinDbg-gränssnittet.
Adresser i brytpunkter
Brytpunkter stöder många typer av adresssyntax, inklusive virtuella adresser, funktionsavvikelser och källkodsradsnummer. Du kan till exempel använda något av följande kommandon för att ange brytpunkter:
0:000> bp 0040108c
0:000> bp main+5c
0:000> bp `source.c:31`
Mer information om den här syntaxen finns i Numerisk uttryckssyntax, källradssyntax och de enskilda kommandoavsnitten.
Brytpunkter för metoder
Om du vill placera en brytpunkt på metoden MyMethod i klassen MyClass kan du använda två olika syntaxer:
I MASM-uttryckssyntax kan du ange en metod med ett dubbelt kolon eller med ett dubbelt understreck.
0:000> bp MyClass::MyMethod 0:000> bp MyClass__MyMethodI syntaxen för C++-uttryck måste du ange en metod med ett dubbelt kolon.
0:000> bp @@( MyClass::MyMethod )
Om du vill använda ett mer komplext brytpunktskommando bör du använda MASM-uttryckssyntax. Mer information om uttryckssyntax finns i Utvärdera uttryck.
Brytpunkter med hjälp av komplicerade MASM-uttryck
Om du vill sätta en brytpunkt för komplicerade funktioner, inklusive de med mellanslag, samt en medlem i en offentlig C++-klass, inkludera uttrycket inom parenteser. Använd till exempel bp (?? MyPublic) eller bp (ny operator).
En mer mångsidig teknik är att använda @!"tecken"-syntax. Det här är ett speciellt undantag i MASM-utvärderare som gör att du kan ange godtycklig text för symbolupplösning. Du måste börja med de tre symbolerna @!" och avsluta med ett citattecken ("). Utan den här syntaxen kan du inte använda blanksteg, vinkelparenteser (<, >), eller andra specialtecken i symbolnamn i MASM-utvärderaren. Den här syntaxen är uteslutande för namn och inte parametrar. Mallar och överbelastningar är de primära källorna till symboler som kräver citatnotation. Du kan också ange bu-kommandot med hjälp av @!" teckensyntax, som visas i följande kodexempel.
0:000> bu @!"ExecutableName!std::pair<unsigned int,std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> > >::operator="
I det här exemplet är ExecutableName namnet på en körbar fil.
Den här escape-syntaxen är mer användbar för C++ (till exempel överlagrade operatorer) i stället för C eftersom det inte finns några blanksteg (eller specialtecken) i C-funktionsnamn. Den här syntaxen är dock också viktig för mycket hanterad kod på grund av den stora användningen av överbelastningar i .NET Framework.
Om du vill ange en brytpunkt för godtycklig text i C++-syntax använder du bu @@c++(text) för C++-kompatibla symboler.
Brytpunkter i skript
Brytpunkts-ID:t behöver inte uttryckligen hänvisas till. I stället kan du använda ett numeriskt uttryck som matchar ett heltal som motsvarar ett brytpunkts-ID. Om du vill ange att uttrycket ska tolkas som en brytpunkt använder du följande syntax.
b?[Expression]
I den här syntaxen krävs hakparenteser och Uttryck står för alla numeriska uttryck som matchar ett heltal som motsvarar ett brytpunkts-ID.
Med den här syntaxen kan felsökningsskript programmatiskt välja en brytpunkt. I följande exempel ändras brytpunkten beroende på värdet för ett användardefinierat pseudoregister.
b?[@$t0]
Pseudoregister för brytpunkter
Om du vill referera till en brytpunktsadress i ett uttryck kan du använda ett pseudoregister med syntaxen $bpTal , där Tal är brytpunkts-ID. Mer information om den här syntaxen finns i Pseudo-Register Syntax.
Tvetydig lösning för brytpunkter
I version 10.0.25310.1001 och senare av felsökningsmotorn stöds nu tvetydig brytpunktsupplösning. Tvetydiga brytpunkter gör det möjligt för felsökaren att ange brytpunkter i vissa scenarier där ett brytpunktsuttryck löser sig till flera platser. Mer information finns i lösning på tvetydigt brytpunktproblem.