2009-10-22 80 views
3

我有一個靜態類,沒有靜態構造函數,但有很多靜態成員。當第一次使用類時,我會拋出TypeInitializationException。調試類型初始值設定項中的異常

我打破了CLR例外,並且禁用了「Just My Code」。

問題是,我只在第一次使用這個類時纔得到這個異常;我不打破在失敗的靜態字段初始值設定項。我當然可以刪除靜態成員,直到找到罪魁禍首,但有沒有更簡單的方法?

有沒有人有任何提示調試靜態字段初始化?

回答

12

單擊Debug,Exceptions(或按下Ctrl + D,E),並在任何異常拋出時告訴Visual Studio中斷。在拋出InnerException之前,它會在發生TypeInitializationException中的封裝之前斷開,並且會拋出異常。

或者,查看InnerException的調用堆棧並查看它匹配哪個字段。

或者,嘗試在每個靜態初始化器上設置一個斷點;最後一擊是拋出異常的那一擊。

+0

我怎麼從未知道這件事? – 2012-07-06 17:03:43

+0

這對我不起作用(VS2010,.Net4)。但是我可以看到內部的異常細節。我認爲原因是我使用Assembly.CreateInstance()實例化一個類型。 – redcalx 2012-12-19 12:55:03

+0

*更新*如果我禁用*'break on throw'並禁用'只是我的代碼',我現在可以打斷點。 – redcalx 2012-12-19 13:07:49

2

我會嘗試以下

  • 禁用僅我的代碼:取消選中工具 - >選項 - >調試 - >只是我的代碼
  • 歇在第一次機會異常:調試 - >異常 - >檢查CLR例外的投擲箱

這應該帶你到發生異常的地方。

相關問題