3

次のようなコードを使用して、ゼロ除算、アクセス違反などを報告したいと考えています。私の問題は、 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"はデバッグ出力に生成されますが、これはあまり役に立ちません。

私は何か間違ったことをしていますか?

4

0 に答える 0