Dot-Net

在 .NET 中調試呼叫的函式

  • March 23, 2021

我使用反射(Method.Invoke)在.NET中呼叫函式。如果此方法內部發生錯誤並引發異常,則調試器不會顯示實際程式碼,而是在 Invoke() 呼叫時停止。我可以從 InnerException 檢索異常資訊,但這與使用呼叫堆棧等進行正常調試相比非常不方便。可以像正常函式呼叫一樣調試使用 Method.Invoke 呼叫的方法嗎?

您喜歡點擊的是“Just My Code”功能。預設情況下,調試器將調試限制為被認為是由開發人員編寫的程式碼。這減少了在調試 WPF 或 WinForms 啟動時會出現的大量噪音。

為了讓所有程式碼都執行異常助手之類的項目,您應該禁用“僅我的程式碼”。

  • 工具 -> 選項
  • 調試器
  • 取消選中“僅啟用我的程式碼調試”

如果一切都失敗了,您還可以將這樣的內容放入被呼叫的方法中:

#if DEBUG
   System.Diagnostics.Debugger.Break();
#endif

這將基本上“以程式方式”在那裡導致斷點。

您還可以通過執行以下操作使其稍微好一點:

 if(Debugger.IsAttached)
   Debugger.Break();

因此,只有在您實際在調試器中執行它時它才會中斷。


編輯:

第二個想法,如果你有編輯它的程式碼,那麼你可以通過 VisualStudio 在那裡放置一個正常斷點。我想我的回答沒有意義……對不起:)

引用自:https://stackoverflow.com/questions/6020227