次のようなコードを使用して、ゼロ除算、アクセス違反などを報告したいと考えています。私の問題は、 flag を設定しているにもかかわらずFORMAT_MESSAGE_IGNORE_INSERTS
、挿入の位置でメッセージが切り捨てられることです。
__try
{
int *p=0;
int i = *p; // access violation
}
__except (EXCEPTION_EXECUTE_HANDLER)
{
char message[1024];
FormatMessageA(
FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_IGNORE_INSERTS,
GetModuleHandleA("NTDLL.DLL"),
GetExceptionCode(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL),
message,
sizeof (message),
0);
OutputDebugStringA(message);
}
上記のコード"The instruction at 0x"
はデバッグ出力に生成されますが、これはあまり役に立ちません。
私は何か間違ったことをしていますか?