Acessando variáveis globais
Os nomes das variáveis globais são armazenados nos arquivos de símbolo criados quando um aplicativo é compilado. O depurador interpreta o nome de uma variável global como um endereço virtual. Qualquer comando que aceite um endereço como parâmetro também aceita o nome de uma variável. Portanto, você pode usar todos os comandos descritos em Acessando Memória por Endereço Virtual para ler ou gravar variáveis globais.
Além disso, você pode usar o ? (Avaliar expressão) para exibir o endereço associado a qualquer símbolo.
O WinDbg fornece elementos de interface do usuário que você pode usar (além de comandos) para exibir e editar variáveis globais. Consulte Exibindo e editando variáveis globais no WinDbg (clássico).
Considere o exemplo a seguir. Suponha que você queira examinar a MyCounter
variável global, que é um inteiro de 32 bits. Suponha também que o radix padrão seja 10.
Você pode obter o endereço dessa variável e exibi-lo da seguinte maneira.
0:000> ? MyCounter
Evaluate expression: 1244892 = 0012fedc
0:000> dd 0x0012fedc L1
0012fedc 00000052
A primeira saída de comando informa que o endereço de MyCounter
é 0x0012FEDC. Em seguida, você pode usar o comando d* (Exibir Memória) para exibir uma palavra dupla neste endereço. (Você também pode usar 1244892, que é a versão decimal desse endereço. No entanto, a maioria dos programadores C prefere usar 0x0012FEDC.) O segundo comando informa que o valor de MyCounter é 0x52 (decimal 82).
Você também pode executar essas etapas no comando a seguir.
0:000> dd MyCounter L1
0012fedc 00000052
Para alterar o valor de MyCounter
para decimal 83, use o comando a seguir.
0:000> ed MyCounter 83
Este exemplo usa entrada decimal, porque esse formato parece mais natural para um inteiro. No entanto, a saída do comando d\* ainda está no formato hexadecimal.
0:000> dd MyCounter L1 0012fedc 00000053