未処理のC++例外が発生した場合は、次のように出力します。
what()
C ++例外のメッセージ( )- スタックトレース。
スタックトレースを取得するために、 StackWalkerライブラリSetUnhandledExceptionFilter
と組み合わせて使用しています。
struct FooStackWalker : StackWalker
{
virtual void OnCallstackEntry(CallstackEntryType, CallstackEntry &entry) override
{
std::cerr << entry.lineFileName << " (" << entry.lineNumber << "): " << entry.undFullName << std::endl;
}
};
LONG WINAPI UnhandledExceptionHandler(LPEXCEPTION_POINTERS pointers)
{
FooStackWalker walker;
walker.ShowCallstack(::GetCurrentThread(), pointers->ContextRecord);
::TerminateProcess(::GetCurrentProcess(), 1);
}
int main()
{
::SetUnhandledExceptionFilter(UnhandledExceptionHandler);
}
スタックトレースを取得して問題なく印刷できましたが、取得what
が困難になっています。
終了前にこのメンバー関数を呼び出すために、SEH例外をC ++例外としてデコードする方法はありますか?