Sintassi dei simboli e corrispondenza dei simboli

I simboli consentono di modificare direttamente i token usati dal programma in fase di debug. Ad esempio, è possibile impostare un punto di interruzione nella funzione principale con il comando bp main o visualizzare la variabile integer MyInt con il comando dd MyInt L1.

In molti casi, i simboli possono essere usati come parametri nei comandi del debugger. Questo è supportato per la maggior parte dei parametri numerici ed è supportato anche in alcuni parametri di testo. Oltre alle regole generali per la sintassi dei simboli, esistono anche regole di sintassi dei simboli applicabili in ognuno di questi casi.

Regole di sintassi dei simboli generali

Un nome di simbolo è costituito da uno o più caratteri, ma inizia sempre con una lettera, sottolineatura (_), punto interrogativo (?) o segno di dollaro ($).

Un nome di simbolo può essere qualificato da un nome del modulo. Un punto esclamativo (!) separa il nome del modulo dal simbolo (ad esempio , mymodule!main). Se non viene usato alcun nome del modulo, il simbolo può comunque essere preceduto da un segno esclamativo. L'uso di un segno esclamativo senza nome di modulo può essere particolarmente utile, anche per le variabili locali, per indicare a un comando debugger che un parametro è un nome e non un numero esadecimale. Ad esempio, la sade della variabile verrà letto dal comando dt (Tipo di visualizzazione) come indirizzo, a meno che non sia preceduto da un contrassegno esclamativo o che venga usata l'opzione -n. Tuttavia, per specificare che un simbolo è locale, precederlo con un segno di dollaro ( $ ) e un punto esclamativo ( ! ), come in $!lime.

I nomi dei simboli sono completamente senza distinzione tra maiuscole e minuscole. Ciò significa che la presenza di un myInt e di un MyInt nel programma non sarà compresa correttamente dai debugger; qualsiasi comando che fa riferimento a uno di questi può accedere all'altro, indipendentemente dal modo in cui il comando viene maiuscolo.

Sintassi dei simboli nelle espressioni numeriche

Il debugger comprende due diversi tipi di espressioni: espressioni MASM (Microsoft Macro Assembler) e espressioni C++. Per quanto riguarda i simboli, queste due forme di sintassi differiscono come segue:

  • Nelle espressioni MASM ogni simbolo viene interpretato come indirizzo. A seconda del simbolo a cui fa riferimento, questo sarà l'indirizzo di una variabile globale, variabile locale, funzione, segmento, modulo o qualsiasi altra etichetta riconosciuta.

  • Nelle espressioni C++ ogni simbolo viene interpretato in base al relativo tipo. A seconda del simbolo a cui fa riferimento, può essere interpretato come intero, una struttura di dati, un puntatore a funzioni o qualsiasi altro tipo di dati. Un simbolo che non corrisponde a un tipo di dati C++ (ad esempio un nome di modulo non modificato) genererà un errore di sintassi.

Per una spiegazione di quando e come usare ogni tipo di sintassi, vedere Valutazione delle espressioni.

Se si usa la sintassi dell'espressione MASM, qualsiasi simbolo che può essere interpretato come numero esadecimale o come registro (ad esempio , BadFeed, ebX) deve essere sempre preceduto da un punto esclamativo. Ciò assicura che il debugger lo riconosca come simbolo.

Il comando ss (Set Symbol Suffix) può essere usato per impostare il suffisso del simbolo. Questo indica al debugger di aggiungere automaticamente "A" o "W" a qualsiasi nome di simbolo che non riesce a trovare in caso contrario.

Molte routine Win32 esistono sia nelle versioni ASCII che Unicode. Queste routine hanno spesso un "A" o "W" accodato rispettivamente alla fine dei loro nomi. L'uso di un suffisso di simboli consente al debugger durante la ricerca di questi simboli.

La corrispondenza del suffisso non è attiva per impostazione predefinita.

Sintassi dei simboli nelle espressioni di testo

I simboli possono essere usati nei parametri di testo di alcuni comandi, ad esempio bm (Set Breakpoint) e x (Esamina simboli).

Questi parametri di testo supportano un'ampia gamma di caratteri jolly e identificatori. Per informazioni dettagliate, vedere Sintassi con caratteri jolly stringa . Oltre ai caratteri jolly stringa standard, un'espressione di testo usata per specificare un simbolo può essere preceduta da un carattere di sottolineatura iniziale. Quando si corrisponde a questo a un simbolo, il debugger considera questo come qualsiasi quantità di caratteri di sottolineatura, anche zero.

Il suffisso del simbolo non viene usato quando i simboli corrispondenti nelle espressioni di testo.