我正在嘗試用本地機器調試器調試Windows 8 C#商店應用程序。所以,我給MainPage
的構造函數添加了一些不正確的行,在InitializeComponent
之後調用。我嘗試了導致DivideByZero
或NullReferenceException
的代碼 - 結果相同。在本地機器上調試Windows應用商店應用程序
所以,我執行「開始調試」,並中斷調試這裏:
#if DEBUG && !DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
UnhandledException += (sender, e) =>
{
if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break();
};
#endif
堆棧信息不可用,這是不可能檢測在那裏是一個錯誤(僅在輸出第一次機會異常消息窗口給出了提示)。
我試圖在項目預處理符號中定義DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
。這次我收到以下奇怪的消息:「調試器連接到YourProgram.exe,但未配置爲調試此未處理的異常」。
只有當在「例外」對話框中選中特定的例外類型,並且定義了DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
時,我才設法在導致錯誤的行上中斷。
那麼,在傳統的桌面應用程序調試中,有什麼方法可以打破有問題的線路?如果可能,無需修改例外列表。 DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
的目的究竟是什麼?
把'System.Diagnostics.Debugger.Launch();'拋出異常之前。這將啓動調試器,以便您可以逐步查看問題所在。 –
@Jack Hughes - 它改變了調試器行爲中的某些內容,但我試圖學習如何調試未知位置的錯誤。在程序的每一行之前添加「Debugger.Launch」是不可能的... –