我正在尝试使用本地机器调试器调试Windows 8 C# Store应用程序。因此,在InitializeComponent
调用之后,我向MainPage
构造函数添加了一些不正确的行。我尝试了导致DivideByZero
或NullReferenceException
的代码-结果相同。
然后,我执行“开始调试”,调试器就会在这里中断:
#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