!ClrStack局部变量 - 是值类型还是引用类型

时间:2010-09-28 15:30:56

标签: windbg sos

如何确定局部变量是值类型还是引用类型?

0:000> !CLRStack -a
操作系统线程ID:0xf74(0)
Child-SP RetAddr呼叫站点
000000000023e9c0 000007fef6b32012 ConsoleApplication2.Program.Main(System.String [])
    参数:
        args = 0x00000000028f3c70
    LOCALS:
        0x000000000023e9e0 = 0x0000000000000000
        0x000000000023e9e8 = 0x00000000028f3c90
        0x000000000023e9f0 = 0x00000000000493e0

1 个答案:

答案 0 :(得分: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缺乏。