プログラムがクラッシュすると、未処理の例外ハンドラーからミニダンプが作成されます。私が抱えている問題は、人々が私にクラッシュ ダンプを送ってきたことですが、Visual Studio 2010 でそれらを開こうとすると、破損していると表示されます (「ダンプ ファイルの形式が無効です」)。dbghelp.dll
プログラムと一緒に配布していませんが、配布する必要がありますか? それがバージョンの問題である場合、Visual Studio は私に通知し、上記のメッセージを出力しないと思います。
ログを生成するために使用するコードは
LONG WINAPI OnUnhandledException(PEXCEPTION_POINTERS pExceptionInfo)
{
MINIDUMP_EXCEPTION_INFORMATION ei;
ei.ExceptionPointers = pExceptionInfo;
ei.ThreadId = GetCurrentThreadId();
ei.ClientPointers = FALSE;
DWORD dwProcessId = GetCurrentProcessId();
SYSTEMTIME stLocalTime;
GetLocalTime(&stLocalTime);
wchar_t CrashDumpW[1024];
swprintf_s(CrashDumpW, NELEMS(CrashDumpW),
L"%s\\%s-%s-%04X-%04d%02d%02d-%02d%02d%02d-%ld-%ld.dmp",
g_CrashDirectory.c_str(), L"Program", MAJOR_VERSION_STR,
INTERNAL_VERSION, stLocalTime.wYear, stLocalTime.wMonth,
stLocalTime.wDay, stLocalTime.wHour, stLocalTime.wMinute,
stLocalTime.wSecond, dwProcessId, ei.ThreadId);
HANDLE hFile = CreateFileW(CrashDumpW, GENERIC_READ | GENERIC_WRITE,
NULL, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
MiniDumpWriteDump(GetCurrentProcess(), dwProcessId, hFile,
MiniDumpScanMemory, &ei, NULL, NULL);
CloseHandle(hFile);
return EXCEPTION_EXECUTE_HANDLER;
}