Acceso a variables globales

Los nombres de las variables globales se almacenan en los archivos de símbolos que se crean cuando se compila una aplicación. El depurador interpreta el nombre de una variable global como una dirección virtual. Cualquier comando que acepte una dirección como parámetro también acepta el nombre de una variable. Por lo tanto, puede usar todos los comandos que se describen en Acceso a la memoria por dirección virtual para leer o escribir variables globales.

Además, puede usar ? (Evaluar expresión) comando para mostrar la dirección asociada a cualquier símbolo.

WinDbg proporciona elementos de interfaz de usuario que puede usar (además de comandos) para ver y editar variables globales. Consulte Visualización y edición de variables globales en WinDbg (clásico).

Considere el ejemplo siguiente. Supongamos que desea examinar la MyCounter variable global, que es un entero de 32 bits. Suponga también que el radix predeterminado es 10.

Puede obtener la dirección de esta variable y, a continuación, mostrarla como se indica a continuación.

0:000> ? MyCounter 
Evaluate expression: 1244892 = 0012fedc
0:000> dd 0x0012fedc L1 
0012fedc  00000052

La primera salida del comando indica que la dirección de MyCounter es 0x0012FEDC. A continuación, puede usar el comando d* (Memoria para mostrar) para mostrar una palabra doble en esta dirección. (También puede usar 1244892, que es la versión decimal de esta dirección. Sin embargo, la mayoría de los programadores de C prefieren usar 0x0012FEDC). El segundo comando indica que el valor de MyCounter es 0x52 (decimal 82).

También puede realizar estos pasos en el siguiente comando.

0:000> dd MyCounter L1 
0012fedc  00000052

Para cambiar el valor de MyCounter a decimal 83, use el siguiente comando.

0:000> ed MyCounter 83 

En este ejemplo se usa la entrada decimal, ya que ese formato parece más natural para un entero. Sin embargo, la salida del comando d\* sigue en formato hexadecimal.

0:000> dd MyCounter L1 0012fedc  00000053