2013-05-16 74 views
2

我已經開發了幾個代理,我在類型聲明中使用DebuggerTypeProxyAttribute來指定它們的嵌套類型。但是當這些代理有錯誤時,很難調試。我還沒有找到使用調試器(嵌套調試會話)逐步完成代理的方法。如何調試DebuggerTypeProxy代理?

任何關於如何做到這一點的指針?

+0

順便說一句,在過去的某個時候,我很確定我能夠將一個調試器附加到devenv.exe(是的,兩個IDE一次打開),而devenv.exe調試對象正在調試我的應用程序,因此設置了斷點類型代理來查看發生了什麼。但最近似乎並不奏效。 –

+0

我在調試t4模板時一直這樣做。我很驚訝它不適用於調試器類型代理。 –

回答

2

嘗試手動創建類型代理的實例並評估其屬性。如果在Visual Studio中調試時在立即窗口中這樣做,則類型代理中的斷點將會工作。只需確保在此過程中從您的類型中刪除[DebuggerTypeProxy]屬性,以便完全控制何時創建這些實例。

+0

好的提示,儘管在我的情況下,失敗似乎只發生在調試器視圖是實例化代理的時候。例如,關於要求任何線程切換或鎖定採集是非常特殊的。在我現在面臨的情況下,調試器似乎完全忽略了代理。因此,如果我自己執行它,它會很好地工作,但我需要知道調試器爲什麼忽略它。 –

2

山姆的反應啓發,我已經能夠在VS2013只有一個調試器來做到這一點:)

1調試器附加到具有您希望通過一個調試器型代理檢查一個類型的過程和

2)實例化調試器類型的代理在即時窗口:

new YourDebuggerTypeProxy(thingBeingDebugged)

你的調試器應在調試器類型的代理範圍內打破。這似乎是因爲VS將通過直接窗口生​​成的代碼直接注入到附加進程中。