stderrがリダイレクトされているときに、SetUnhandledExceptionFilter()によって設定されたUnhandledExceptionFilterをヒットする際に問題が発生します。
SetUnhandledExceptionFilter()によって設定されたカスタム例外フィルターがあります。これは、例外とスタックに関する詳細をstderrに書き出すことになっています。問題は、stderr出力をファイルにリダイレクトすると機能しないことです。まったく呼ばれていません。
を使用してプログラムを実行した場合
app.exe > log
フィルタが呼び出されますが、このように実行すると
app.exe 2> log
呼ばれていません。system()を使用して別のプログラムから問題のアプリケーションを呼び出すため、すでに別のアプローチを試しました。_pipe()と_spawnvp()を使用して出力をリダイレクトし、パイプから読み取りましたが、それは役に立ちませんでした。
AddVectoredExceptionHandler()を調べ始めましたが、機能しているようですが、例外が発生すると呼び出され、未処理の例外が必要なため、try/catchコードでこれがどのように機能するかを理解する方法がわかりません。
プログラムがデバッガー(http://support.microsoft.com/kb/173652/en-us )で実行されるときにUnhandledExceptionFilterが呼び出されないことはすでに知っていますが、なぜstderrのリダイレクトをそのように扱うのですか?デバッガーで実行されますか?これを防ぐ方法はありますか?