2010-09-28 77 views
1

如何確定局部變量是值類型還是引用類型?!ClrStack局部變量 - 它是值類型還是引用類型

0:000> CLRStack -a
OS線程ID:!0xf74(0)
兒童-SP RetAddr呼叫網站
000000000023e9c0 000007fef6b32012 ConsoleApplication2.Program.Main(System.String [])
參數:
ARGS = 0x00000000028f3c70
LOCALS:
0x000000000023e9e0 = 0x0000000000000000
0x000000000023e9e8 = 0x00000000028f3c90
0x000000000023e9f0 = 0x00000000000 493e0

回答

2

最簡單的識別方法是使用sosex擴展名。命令!mk -l可以爲您提供內存地址以及類型。這裏有一個例子,其中s是結構,c是類

0a:M 002aec64 004700f3 ConsoleApplication1.Program.Main(System.String[])(+0x27 IL)(+0x83 Native) [C:\Users\nsrinivasan\Documents\Visual Studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs, @ 90,17] 
    [L0]:s:VALTYPE (MT=001a3884, ADDR=002aec70) (MyStruct) 
    [L1]:c:0x0276c098 (MyClass) 

另外sosex有一些很酷的東西,sos缺乏。