15,471
社区成员
发帖
与我相关
我的任务
分享
#include <DbgHelp.h>
#pragma comment( lib, "Dbghelp.lib" )
//回调
LONG __stdcall UnhandledExceptionFilterCall( __in struct _EXCEPTION_POINTERS *ExceptionInfo );
int _tmain(int argc, _TCHAR* argv[])
{
//dump
SetUnhandledExceptionFilter( UnhandledExceptionFilterCall );
}
LONG __stdcall UnhandledExceptionFilterCall( __in struct _EXCEPTION_POINTERS *ExceptionInfo )
{
//生成dump路径
HANDLE hDumpFile = CreateFile("D:\\DMS_Exception.dmp", GENERIC_WRITE, FILE_SHARE_WRITE,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hDumpFile != INVALID_HANDLE_VALUE)
{
_MINIDUMP_EXCEPTION_INFORMATION MinExcInfo;
MinExcInfo.ClientPointers = TRUE;
MinExcInfo.ExceptionPointers = ExceptionInfo;
MinExcInfo.ThreadId = GetCurrentThreadId();
MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile,
MiniDumpNormal, &MinExcInfo, NULL, NULL );
CloseHandle(hDumpFile);
}
return EXCEPTION_EXECUTE_HANDLER;
}
m_hKillEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
DWORD dwThreadID;
m_hThread = CreateThread(NULL, 0, ThreadProc, (LPVOID)this, 0, &dwThreadID);
SetThreadPriority( m_hThread , nPriority );