当前位置: 移动技术网 > IT编程>开发语言>C/C++ > C++软件添加dump调试打印日志

C++软件添加dump调试打印日志

2018年03月03日  | 移动技术网IT编程  | 我要评论

焦雅亮,联想 ibm,邪龙天下

#include

#pragma comment(lib, "dbghelp.lib")

LONG WINAPI TopLevelExceptionFilter(struct _EXCEPTION_POINTERS *pExceptionInfo)
{
//cout << "Enter TopLevelExceptionFilter Function" << endl;
  TCHAR szPath[MAX_PATH] = { 0 };
  TCHAR szFileName[MAX_PATH] = { 0 };
  TCHAR* szVersion = "v1.0";
  TCHAR dwBufferSize = MAX_PATH;
  SYSTEMTIME stLocalTime;
  GetLocalTime(&stLocalTime);
  CreateDirectory(szFileName, NULL);
  StringCchPrintf(szFileName, MAX_PATH, "%s-%04d%02d%02d-%02d%02d%02d-%ld-%ld.dmp",
  szVersion, stLocalTime.wYear, stLocalTime.wMonth, stLocalTime.wDay,
  stLocalTime.wHour, stLocalTime.wMinute, stLocalTime.wSecond,
  GetCurrentProcessId(), GetCurrentThreadId());

  HANDLE hFile = CreateFile(szFileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
 MINIDUMP_EXCEPTION_INFORMATION stExceptionParam;
stExceptionParam.ThreadId = GetCurrentThreadId();
stExceptionParam.ExceptionPointers = pExceptionInfo;
stExceptionParam.ClientPointers = FALSE;
MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpWithFullMemory, &stExceptionParam, NULL, NULL);
CloseHandle(hFile);
getchar();

return EXCEPTION_EXECUTE_HANDLER;
}

//-----------------------------------------------------------------------------------------

在程序最开始的地方调用这个函数

SetUnhandledExceptionFilter(TopLevelExceptionFilter);

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网