Condividi tramite


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