未処理の例外(任意のスレッドからスローされた)のスタックトレースをファイルに書き込むにはどうすればよいですか?別のスレッドから例外がスローされたときにスタックトレースを書き込む
吊るしたアプリケーションをデバッグするには、これが必要です。
未処理の例外(任意のスレッドからスローされた)のスタックトレースをファイルに書き込むにはどうすればよいですか?別のスレッドから例外がスローされたときにスタックトレースを書き込む
吊るしたアプリケーションをデバッグするには、これが必要です。
おかげで、あなたのすべてが、私は見ているときにI Visual Studioからプログラムを実行すると、すべてのスレッドから処理されない例外がスローされたときに.NETによってコンソールウィンドウに書き込まれたトレースの出力がコンソールウィンドウにリダイレクトされません。
Visual Studioとは別にプログラムを実行するとリダイレクトされます。 このコードは、処理されない例外をスローするスレッドからのすべてのスタックトレースを表示するのに非常に適しています。
Trace.Listeners.Clear();
TextWriterTraceListener twtl = new TextWriterTraceListener(Path.Combine(Environment.CurrentDirectory, "logfile.txt"));
twtl.Name = "TextLogger";
twtl.TraceOutputOptions = TraceOptions.ThreadId | TraceOptions.DateTime | TraceOptions.Callstack;
ConsoleTraceListener ctl = new ConsoleTraceListener(false);
ctl.TraceOutputOptions = TraceOptions.DateTime;
Trace.Listeners.Add(twtl);
Trace.Listeners.Add(ctl);
Trace.AutoFlush = true;
AppDomain.UnhandledExceptionイベントをご覧ください。これはまさにあなたが必要としているようです。
私はあなたがAppDomain.UnhandledExceptionイベントを聞いてこれを行うことができると信じています。 WPFの場合それだけの価値だけでなくApplication.Current.Dispatcher.UnhandledExceptionを聴いて
あなたは以下のようにex.StackTraceによってcatchブロックでスタックトラックを取得することができます。
try
{
//Your code;
}
catch(Exception ex)
{
string innerException = ex.InnerException;
string stackTrac = ex.StackTrace;
//Write this stackTrac to any file where you want
}