带有 SOS 的 Windgb 不显示结构字段值
Windgb with SOS does not show struct field values
我正在尝试使用 WinDbg 调试 运行 ASP.NET 应用程序。我需要的是查看传递给方法的参数的值。所以我在这个方法的断点上,从 !clrstack -p
我得到这个:
PARAMETERS:
this (0x00000004af4fdc10) = 0x000001a2b8a06e68
ideaForum (0x00000004af4fdc18) = 0x000001a2b8b11bc8
page (0x00000004af4fdc20) = 0x0000000300000001
我对类型为 int?
(System.Nullable<System.Int32>
) 的 "page" 参数感兴趣,所以首先我找到了 System.Nullable`1[[System.Int32, mscorlib]]
的 MT 地址,它恰好是00007ffa263c7ae0。然后我调用 !dumpvc 00007ffa263c7ae0 0000000300000001
,这是我得到的结果:
Name: System.Nullable`1[[System.Int32, mscorlib]]
MethodTable: 00007ffa263c7ae0
EEClass: 00007ffa25dc6580
Size: 24(0x18) bytes
File: C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
Fields:
MT Field Offset Type VT Attr Value Name
00007ffa263da2e0 4000707 0 System.Boolean 1 instance hasValue
00007ffa263baf60 4000708 4 System.Int32 1 instance value
如您所见,我正在做 Windbg with SOS, How to dump a c# struct 中标记为答案的操作,但它不显示我需要的字段值。我还需要做什么才能获得价值?
谢谢。
编辑:看来我毕竟使用了错误的参数地址。参数名称后括号中的那个是正确的,所以我应该使用 0x00000004af4fdc20
。有了这个,!dumpvc 确实按预期工作。 Sosex 更易于使用,因为它只需要参数名称即可完成工作
使用!sosex.mk -a
。如果您想要的是字段值,请使用 !mdt
来转储类型。 Sosex 倾向于更友好地显示字段值,而 sos 擅长显示布局的更多技术细节。披露:我是 sosex 的作者,但它是完全免费的。
我正在尝试使用 WinDbg 调试 运行 ASP.NET 应用程序。我需要的是查看传递给方法的参数的值。所以我在这个方法的断点上,从 !clrstack -p
我得到这个:
PARAMETERS:
this (0x00000004af4fdc10) = 0x000001a2b8a06e68
ideaForum (0x00000004af4fdc18) = 0x000001a2b8b11bc8
page (0x00000004af4fdc20) = 0x0000000300000001
我对类型为 int?
(System.Nullable<System.Int32>
) 的 "page" 参数感兴趣,所以首先我找到了 System.Nullable`1[[System.Int32, mscorlib]]
的 MT 地址,它恰好是00007ffa263c7ae0。然后我调用 !dumpvc 00007ffa263c7ae0 0000000300000001
,这是我得到的结果:
Name: System.Nullable`1[[System.Int32, mscorlib]]
MethodTable: 00007ffa263c7ae0
EEClass: 00007ffa25dc6580
Size: 24(0x18) bytes
File: C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
Fields:
MT Field Offset Type VT Attr Value Name
00007ffa263da2e0 4000707 0 System.Boolean 1 instance hasValue
00007ffa263baf60 4000708 4 System.Int32 1 instance value
如您所见,我正在做 Windbg with SOS, How to dump a c# struct 中标记为答案的操作,但它不显示我需要的字段值。我还需要做什么才能获得价值? 谢谢。
编辑:看来我毕竟使用了错误的参数地址。参数名称后括号中的那个是正确的,所以我应该使用 0x00000004af4fdc20
。有了这个,!dumpvc 确实按预期工作。 Sosex 更易于使用,因为它只需要参数名称即可完成工作
使用!sosex.mk -a
。如果您想要的是字段值,请使用 !mdt
来转储类型。 Sosex 倾向于更友好地显示字段值,而 sos 擅长显示布局的更多技术细节。披露:我是 sosex 的作者,但它是完全免费的。