Condividi tramite


Accesso alle variabili globali

I nomi delle variabili globali vengono archiviati nei file di simboli creati durante la compilazione di 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 ? (Evaluate Expression) 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 di variabili globali in WinDbg (versione classica).

Si consideri l'esempio seguente. Si supponga di voler esaminare la MyCounter variabile globale, ovvero un numero intero a 32 bit. Si supponga inoltre che il valore predefinito sia 10.

È possibile ottenere l'indirizzo di questa variabile e quindi visualizzarlo come segue.

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 parola doppia 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 numero intero. Tuttavia, l'output del comando d\* è ancora in formato esadecimale.

0:000> dd MyCounter L1 0012fedc  00000053