|
덤프남기고 windbg로 보면 알수있을듯...
LONG __stdcall ExceptionMinidump(_EXCEPTION_POINTERS* pExceptionInfo)
{
char fileName[MAX_PATH];
GetModuleFileName(NULL, fileName, MAX_PATH);
char* ext = strrchr(fileName, '.');
strcpy(ext ? ext : fileName+strlen(fileName), ".dmp");
HANDLE hProcess = GetCurrentProcess();
DWORD dwProcessID = GetCurrentProcessId();
HANDLE hFile = CreateFile(fileName, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
MINIDUMP_EXCEPTION_INFORMATION eInfo;
eInfo.ThreadId = GetCurrentThreadId();
eInfo.ExceptionPointers = pExceptionInfo;
eInfo.ClientPointers = FALSE;
MiniDumpWriteDump(hProcess, dwProcessID, hFile,
MiniDumpWithFullMemory|
pExceptionInfo ? &eInfo : NULL, NULL, NULL);
exit( 0 );
return EXCEPTION_EXECUTE_HANDLER;
}
void __fastcall TformMain::FormCreate(TObject *Sender)
{
SetUnhandledExceptionFilter(ExceptionMinidump);
}
|