Dela via


Åtkomst till globala variabler

Namnen på globala variabler lagras i symbolfilerna som skapas när ett program kompileras. Felsökningsprogrammet tolkar namnet på en global variabel som en virtuell adress. Alla kommandon som accepterar en adress som en parameter accepterar också namnet på en variabel. Därför kan du använda alla kommandon som beskrivs i Åtkomst till minne efter virtuell adress för att läsa eller skriva globala variabler.

Dessutom kan du använda ? (Utvärdera uttryck) kommando för att visa adressen som är associerad med valfri symbol.

WinDbg innehåller användargränssnittselement som du kan använda (förutom kommandon) för att visa och redigera globala variabler. Se Visa och redigera globala variabler i WinDbg (klassisk).

Tänk dig följande exempel. Anta att du vill undersöka den MyCounter globala variabeln, som är ett 32-bitars heltal. Anta också att standardradixet är 10.

Du kan hämta den här variabelns adress och sedan visa den på följande sätt.

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

Det första kommandot anger att adressen till MyCounter är 0x0012FEDC. Du kan sedan använda kommandot d* (Visningsminne) för att visa ett dubbelord på den här adressen. (Du kan också använda 1244892, som är decimalversionen av den här adressen. De flesta C-programmerare föredrar dock att använda 0x0012FEDC.) Det andra kommandot anger att värdet för MyCounter är 0x52 (decimal 82).

Du kan också utföra de här stegen i följande kommando.

0:000> dd MyCounter L1 
0012fedc  00000052

Om du vill ändra värdet för MyCounter till decimal 83 använder du följande kommando.

0:000> ed MyCounter 83 

I det här exemplet används decimalindata eftersom det formatet verkar mer naturligt för ett heltal. Utdata från kommandot d\* är dock fortfarande i hexadecimalt format.

0:000> dd MyCounter L1 0012fedc  00000053