异常使用async和UWP进行调试

时间:2016-05-20 14:30:07

标签: c# debugging async-await uwp unhandled-exception

我正在研究UWP应用程序。我正在使用异步/等待很多。总是在我的代码中发生异常时,调试器在App.g.i.cs中设置中断

#if DEBUG && !DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
            UnhandledException += (sender, e) =>
            {
                if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break();
            };
#endif

但我希望在发生异常时看到该行。如何实现这种行为?

1 个答案:

答案 0 :(得分:7)

将以下方法添加到App班级:

private static void UnhandledError(object sender, UnhandledErrorDetectedEventArgs eventArgs)
{
    try
    {
        // A breakpoint here is generally uninformative
        eventArgs.UnhandledError.Propagate();
    }
    catch (Exception e)
    {
        // Set a breakpoint here:
        Debug.WriteLine("Error: {0}", e);
        throw;
    }
}

App构造函数中:

public UnitTestApp()
{
    CoreApplication.UnhandledErrorDetected += UnhandledError;

    // ...and any other initialization.
    // The InitializeComponent call just sets up error handlers,
    // and you can probably do without in the case of the App class.

    // This can be useful for debugging XAML:
    DebugSettings.IsBindingTracingEnabled = true;
    DebugSettings.BindingFailed +=
        (sender, args) => Debug.WriteLine(args.Message);

}

有些情况下,您没有获得良好的堆栈跟踪,但这通常很有帮助。

另一种方法是在抛出异常时中断(通过 Debug Windows 异常设置)。