Dela via


Brytpunktssyntax

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__MyMethod 
    
  • I 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.

Se även

Använda brytpunkter

bp, bu, bm (Sätt brytpunkt)

Olösta brytpunkter (bu Brytpunkter)