Sintassi punto di interruzione
Gli elementi di sintassi seguenti possono essere usati durante la creazione di un punto di interruzione, tramite la finestra del comando debugger o tramite l'interfaccia grafica WinDbg.
Indirizzi nei punti di interruzione
I punti di interruzione supportano molti tipi di sintassi degli indirizzi, tra cui indirizzi virtuali, offset di funzione e numeri di riga di origine. Ad esempio, è possibile usare uno dei comandi seguenti per impostare i punti di interruzione:
0:000> bp 0040108c
0:000> bp main+5c
0:000> bp `source.c:31`
Per altre informazioni su questa sintassi, vedere Sintassi dell'espressione numerica, sintassi della riga di origine e singoli argomenti dei comandi.
Punti di interruzione nei metodi
Se si vuole inserire un punto di interruzione nel metodo MyMethod nella classe MyClass , è possibile usare due sintassi diverse:
Nella sintassi dell'espressione MASM è possibile indicare un metodo in base a due punti o a un carattere di sottolineatura doppia.
0:000> bp MyClass::MyMethod 0:000> bp MyClass__MyMethod
Nella sintassi dell'espressione C++ è necessario indicare un metodo in base a due punti.
0:000> bp @@( MyClass::MyMethod )
Se si vuole usare un comando di punto di interruzione più complesso, è consigliabile usare la sintassi dell'espressione MASM. Per altre informazioni sulla sintassi delle espressioni, vedere Valutazione delle espressioni.
Punti di interruzione che usano espressioni MASM complesse
Per impostare un punto di interruzione su funzioni complesse, incluse le funzioni che contengono spazi, nonché un membro di una classe pubblica C++, racchiudere l'espressione tra parentesi. Ad esempio, usare bp (?? MyPublic) o bp (operatore nuovo).
Una tecnica più versatile consiste nell'usare @!" sintassi chars". Questo è un escape speciale nell'analizzatore MASM che consente di fornire testo arbitrario per la risoluzione dei simboli. È necessario iniziare con i tre simboli @!" e terminare con una virgolette ("). Senza questa sintassi, non è possibile usare spazi, parentesi graffe (<, >) o altri caratteri speciali nei nomi dei simboli nell'analizzatore MASM. Questa sintassi è esclusivamente per i nomi e non per i parametri. I modelli e gli overload sono le origini primarie dei simboli che richiedono questa notazione di virgolette. È anche possibile impostare il comando bu usando @!" sintassi chars, come illustrato nell'esempio di codice seguente.
0:000> bu @!"ExecutableName!std::pair<unsigned int,std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> > >::operator="
In questo esempio EseguibilName è il nome di un file eseguibile.
Questa sintassi di escape è più utile per C++ (ad esempio, operatori di overload) anziché C perché non sono presenti spazi (o caratteri speciali) nei nomi delle funzioni C. Tuttavia, questa sintassi è importante anche per un sacco di codice gestito a causa dell'uso considerevole di overload in .NET Framework.
Per impostare un punto di interruzione sul testo arbitrario nella sintassi C++, usare bu @@c++(text) per i simboli compatibili con C++.
Punti di interruzione negli script
Gli ID punto di interruzione non devono essere indicati in modo esplicito. È invece possibile usare un'espressione numerica che si risolve in un intero che corrisponde a un ID punto di interruzione. Per indicare che l'espressione deve essere interpretata come punto di interruzione, usare la sintassi seguente.
b?[Expression]
In questa sintassi sono necessarie le parentesi quadre e Expression si trova per qualsiasi espressione numerica che si risolve in un numero intero che corrisponde a un ID punto di interruzione.
Questa sintassi consente agli script del debugger di selezionare a livello di codice un punto di interruzione. Nell'esempio seguente il punto di interruzione cambia a seconda del valore di un pseudoregistrato definito dall'utente.
b?[@$t0]
Pseudoregistri punto di interruzione
Se si vuole fare riferimento a un indirizzo di punto di interruzione in un'espressione, è possibile usare uno pseudoregistro con la sintassi $bpNumero , dove Number è l'ID punto di interruzione. Per altre informazioni su questa sintassi, vedere sintassi Pseudo-Register.
Risoluzione ambigua dei punti di interruzione
Nella versione 10.0.25310.1001 e successiva del motore del debugger è ora supportata la risoluzione ambigua dei punti di interruzione. I punti di interruzione ambigui consentono al debugger di impostare punti di interruzione in determinati scenari in cui un'espressione di punto di interruzione si risolve in più posizioni. Per altre informazioni, vedere Risoluzione dei punti di interruzione ambigua.
Vedi anche
Sintassi punto di interruzione
Punti di interruzione non risolti (punti di interruzione bu)