У меня проблема с попаданием UnhandledExceptionFilter , установленного SetUnhandledExceptionFilter () при перенаправлении stderr.
Существует пользовательский фильтр исключений, установленный SetUnhandledExceptionFilter () , который должен записывать подробности об исключении, а также стек в stderr.Проблема в том, что он не работает, когда я перенаправляю вывод stderr в файл.Он даже не вызывается вообще.
Если я выполняю программу, используя
app.exe > log
, фильтр вызывается, но если я выполняю его так
app.exe 2> log
это не называется.Я уже попробовал другой подход, так как я вызываю рассматриваемое приложение из другой программы, используя system () .Я использовал _pipe () и _spawnvp () , чтобы перенаправить вывод и прочитать его из канала, но это не помогло.
Я начал изучать AddVectoredExceptionHandler () и, кажется, работает, но он вызывается для любого исключения, и я не знаю, как выяснить, как это работает с кодом try / catch, так как я просто хочу необработанные исключения.
Я уже знаю, что UnhandledExceptionFilter не вызывается, когда программа запускается в отладчике (http://support.microsoft.com/kb/173652/en-us),, но почему он обрабатывает перенаправление stderr, как этозапустить в отладчике? есть идеи как это предотвратить?