Exemplo n.º 1
0
LONG CrashHandler(EXCEPTION_POINTERS *pException)
{
    CString dumpFileName = GetPresentTime() +_T(".dmp");

    CreateDumpFile(dumpFileName, pException);

    return EXCEPTION_EXECUTE_HANDLER;
}
Exemplo n.º 2
0
//异常处理函数
LONG CrashHandler_Player(EXCEPTION_POINTERS *pException)
{
	SYSTEMTIME	systemTime;
	GetLocalTime(&systemTime);

	wchar_t wszFile[MAX_PATH] = {0,};
	wsprintf(wszFile, TEXT("Player%04d%02d%02d %02d%02d%02d.dmp"), systemTime.wYear, systemTime.wMonth, systemTime.wDay, systemTime.wHour, systemTime.wMinute, systemTime.wSecond);
	CreateDumpFile(wszFile, pException);

	return EXCEPTION_EXECUTE_HANDLER;		//返回值EXCEPTION_EXECUTE_HANDLER	EXCEPTION_CONTINUE_SEARCH	EXCEPTION_CONTINUE_EXECUTION
}
Exemplo n.º 3
0
void Catch_SEH_Exception(DWORD nSeCode, PEXCEPTION_POINTERS pException)
{
	g_theKernel.SetExceptionMode(true);

	//保存最后的错误代码
	DWORD	dwLastError = ::GetLastError();
	if(!pException) return;

	//生成基本描述文件
	TCHAR szSmallInfoFile[MAX_PATH] = {0};
	if(!CreateSmallDumpInfo(pException, szSmallInfoFile, dwLastError))
	{
		return;
	}

	//生成完整表述文件
	TCHAR szBigInfoFile[MAX_PATH] = {0};
	if(!CreateBigInfoFile(pException, szBigInfoFile, dwLastError))
	{
		return;
	}

	TCHAR szDumpFile[MAX_PATH] = {0};
	CreateDumpFile(pException, szDumpFile);

	//寻找CrashReport
	TCHAR szCrashReportFile[MAX_PATH] = {0};
	::GetModuleFileName(NULL, szCrashReportFile, MAX_PATH);
	::PathRemoveFileSpec(szCrashReportFile);
	::PathAppend(szCrashReportFile, _T("CrashReport.exe"));

	TCHAR szCmdLine[1024] = {0};
	_sntprintf(szCmdLine, 1024, _T("%s \"%s\" \"%s\" \"%s\""), 
		szCrashReportFile, 
		szSmallInfoFile, szBigInfoFile, szDumpFile);

	//启动CrashReport
	STARTUPINFO si;
	PROCESS_INFORMATION pi;
	ZeroMemory(&si,sizeof(STARTUPINFO));
	ZeroMemory(&pi,sizeof(PROCESS_INFORMATION));
	si.cb = sizeof(STARTUPINFO);
	si.dwFlags = STARTF_USESHOWWINDOW;
	si.wShowWindow = SW_SHOWNORMAL;

	if (::CreateProcess( NULL, szCmdLine, NULL, NULL, FALSE,CREATE_DEFAULT_ERROR_MODE, NULL, NULL, &si, &pi) == FALSE)
	{
		return;
	}
}
Exemplo n.º 4
0
LONG WINAPI UnhandledExceptionFilterEx(struct _EXCEPTION_POINTERS *pException){
	CreateDumpFile(szMbsFile.c_str(), pException);
	// TODO: MiniDumpWriteDump
	FatalAppExit(-1, _T("Fatal Error"));
	return EXCEPTION_CONTINUE_SEARCH;
}