2016-05-20 18 views
2

私はUWPアプリケーションで作業しています。そして、私は非同期を使用している/多くを待っています。例外は私のコードで asyncとUWPでのデバッグの例外

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

App.g.i.cs

でデバッガのセットブレークを発生しかし、私は、例外が発生したときに、ラインを見たいときは、必ず。その行動を達成するには?

+0

例外が発生した場合は例外を処理する必要があります。例えば、試しキャッチ?ここであなたが探している答えがわからない – Default

+0

XAMLの例外です。 – Janak

+0

@Default、問題はどこにスローされるのか分からず、デバッガに表示させたい) –

答えて

4

は、あなたのAppクラスに次のメソッドを追加します。あなたの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; 
    } 
} 

を:

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); 

} 

は、あなたが良いスタックトレースを取得しない場合は、まだありますが、これはあります役に立つことが多い。

別のアプローチは、例外がスローされたとき(デバッグ、Windowsの例外設定経由で)分割することです。

+0

ありがとう、それは非常に便利です!しかし、デバッガが期待される行にブレークを設定できないのはなぜですか? –

+0

Visual Studioに、(すべてのまたは特定の)例外がスローされたときに中断するように指示します。スタックトレースはメソッドを提供しますが、行はトレースしません。 –

+0

はい!私はすべての共通言語ランタイム例外をチェックして、それが動作していない!ありがとうございました。 –

関連する問題