Accesso alle variabili globali
I nomi delle variabili globali vengono archiviati nei file di simboli creati quando viene compilata un'applicazione. Il debugger interpreta il nome di una variabile globale come indirizzo virtuale. Qualsiasi comando che accetta un indirizzo come parametro accetta anche il nome di una variabile. È pertanto possibile usare tutti i comandi descritti in Accesso alla memoria per indirizzo virtuale per leggere o scrivere variabili globali.
Inoltre, è possibile usare ? (Valuta espressione) comando per visualizzare l'indirizzo associato a qualsiasi simbolo.
WinDbg fornisce elementi dell'interfaccia utente che è possibile usare (oltre ai comandi) per visualizzare e modificare le variabili globali. Vedere Visualizzazione e modifica delle variabili globali in WinDbg (versione classica).
Si consideri l'esempio seguente. Si supponga di voler esaminare la MyCounter
variabile globale, ovvero un intero a 32 bit. Si supponga anche che il radix predefinito sia 10.
È possibile ottenere l'indirizzo della variabile e quindi visualizzarlo come indicato di seguito.
0:000> ? MyCounter
Evaluate expression: 1244892 = 0012fedc
0:000> dd 0x0012fedc L1
0012fedc 00000052
Il primo output del comando indica che l'indirizzo di MyCounter
è 0x0012FEDC. È quindi possibile usare il comando d* (Display Memory) per visualizzare una doppia parola in questo indirizzo. È anche possibile usare 1244892, ovvero la versione decimale di questo indirizzo. Tuttavia, la maggior parte dei programmatori C preferisce usare 0x0012FEDC. Il secondo comando indica che il valore di MyCounter è 0x52 (decimale 82).
È anche possibile eseguire questi passaggi nel comando seguente.
0:000> dd MyCounter L1
0012fedc 00000052
Per modificare il valore di MyCounter
in decimale 83, usare il comando seguente.
0:000> ed MyCounter 83
In questo esempio viene usato l'input decimale, perché tale formato sembra più naturale per un intero. Tuttavia, l'output del comando d\* è ancora in formato esadecimale.
0:000> dd MyCounter L1 0012fedc 00000053