Je vais avoir du mal à comprendre comment se rendre à l'adresse d'un membre statique de classe .NET à l'aide WinDBG w/SOS. Compte tenu d'un programme d'entrée comme celui-ci:Trouver l'adresse du champ statique dans WinDbg w/SOS
namespace windg_static_test
{
class StaticTest
{
public static bool static_bool_field = true;
public void show_and_set()
{
while (static_bool_field)
{
Console.WriteLine("static_bool_field = " + static_bool_field + "\nEnter new value: ");
static_bool_field = Console.ReadLine()[0] == '0' ? false : true;
}
}
}
class Program
{
static void Main(string[] args)
{
StaticTest st = new StaticTest();
st.show_and_set();
}
}
}
je peux trouver le EEClass en utilisant name2ee, et je peux voir les valeurs à l'aide dumpclass w/la valeur name2ee!.
0:004> !dumpclass 1c12e0
Class Name: windg_static_test.StaticTest
mdToken: 02000002
File: C:\Develop\Projects\windg static test\bin\Release\windg static test.exe
Parent Class: 64f84920
Module: 001c2e94
Method Table: 001c3844
Vtable Slots: 4
Total Method Slots: 6
Class Attributes: 100000
Transparency: Critical
NumInstanceFields: 0
NumStaticFields: 1
MT Field Offset Type VT Attr Value Name
65377208 4000001 1f System.Boolean 1 static 1 static_bool_field
Mais je ne peux pas sembler comprendre comment obtenir l'adresse que la valeur est stocké à. Comment cela est-il fait, en général?
Merci, Eglin
Quelle version de .NET sont le débogage? –
Oh, ça alors! Je suis désolé - j'ai essayé si fort de faire une question complète, et échoué gravement. J'utilise 4.5 sur Win 7 x64, en compilant "Any CPU", et en utilisant la version 32 bits de WinDbg. – Eglin