我想用WinDbg調試正在運行的ASP.NET應用程序。我需要的是看到傳遞給方法的參數的值。所以我在此方法中設置斷點,並從!clrstack -p
我得到這個:與SOS Windgb不顯示結構字段值
PARAMETERS:
this (0x00000004af4fdc10) = 0x000001a2b8a06e68
ideaForum (0x00000004af4fdc18) = 0x000001a2b8b11bc8
page (0x00000004af4fdc20) = 0x0000000300000001
我很感興趣,在「頁面」參數,它是int?
型(System.Nullable<System.Int32>
)的所以首先我覺得MT地址爲System.Nullable`1[[System.Int32, mscorlib]]
恰好是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.mdt頁'''做了訣竅。我喜歡索羅克斯幫助頁順便說一句! – actionresult
我很高興它對你有用。 –