2011-09-17 55 views
6

當我使用!在windbg中做System.Guid對象時,我得到了該GUID對象的字段列表。我怎樣才能看到什麼是這個GUID的值(字符串表示)?Windbg - dumping System.Guid

回答

8

使用dt nt!_GUID <@ofobject> +4

+0

其實,我在64位機器上測試,所以在我的情況下,nt_ _GUID <@ofobject> + 8是可以的。謝謝。 – Mijalko

+0

對我來說,當我進行託管調試並通過SOS獲取地址時,正確的值會在我執行時顯示!_​​GUID <@ofobject> –

+0

如果此對象是值類型。使用dt nt!_guid <@ofobject> – fresky

0

Guid存儲爲整數和字節。當您調用ToString()時會創建字符串表示。如果您分析「死亡」轉儲文件,則無法調用方法。所以,最好的辦法是把剛纔複製的價值和使用this constructor和toString()在一個新的控制檯應用程序或一個單元測試:

public Guid(
    uint a, 
    ushort b, 
    ushort c, 
    byte d, 
    byte e, 
    byte f, 
    byte g, 
    byte h, 
    byte i, 
    byte j, 
    byte k 
) 

不是答案你要找的可能。希望你只需要做一次。

+0

不幸的是...如果你需要檢查十幾個GUID,這將是痛苦的。 – Mijalko

+0

很抱歉聽到這個消息。經常使用WinDbg可能表明您缺少單元測試並且需要改進設計。我提供的答案對於windbg的「偶爾」會話很有幫助。祝你好運。 – Dmitry