c++ dmp 错误调试

1、引入DbgHelp并生成dmp文件

1、引入 DbgHelp

#include
#pragma comment(lib,"DbgHelp.lib")

2、创建Dump文件

void CreateDumpFile(LPCWSTR lpstrDumpFilePathName, EXCEPTION_POINTERS *pException)
{
	HANDLE hDumpFile = CreateFile(lpstrDumpFilePathName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
	// Dump信息
	MINIDUMP_EXCEPTION_INFORMATION dumpInfo;
	dumpInfo.ExceptionPointers = pException;
	dumpInfo.ThreadId = GetCurrentThreadId();
	dumpInfo.ClientPointers = TRUE;
	// 写入Dump文件内容
	MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL);
	CloseHandle(hDumpFile);
}

// Exception的回调函数
LONG ApplicationCrashHandler(EXCEPTION_POINTERS *pException)
{
	CreateDumpFile(L"error.dmp", pException);
	std::cout << "程序异常" << std::endl;
	return EXCEPTION_EXECUTE_HANDLER;
}

3、调用 在适当位置进行调用

SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ApplicationCrashHandler);

4、出错时会在exe同级目录生成dmp文件 在vs中打开dmp文件
c++ dmp 错误调试_第1张图片
程序将定位到出错的地方

你可能感兴趣的:(C++,dmp调试,c++)