ローカルマシンデバッガでWindows 8 C#Storeアプリケーションをデバッグしようとしています。だから、InitializeComponent
呼び出しの後に、MainPage
コンストラクタに不正な行を追加しました。私は同じ結果で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'を追加することは不可能です... –