zoukankan      html  css  js  c++  java
  • 用CreateMiniDump手工生成dump文件

    void CreateMiniDump(struct _EXCEPTION_POINTERS* ExceptionInfo)
    {
     HMODULE hModule = ::LoadLibrary(".\\dbghelp.dll");
     if( NULL == hModule )
      return;
     MiniDumpWriteDump_PTR pfnMiniDumpWriteDump = (MiniDumpWriteDump_PTR)GetProcAddress(hModule, "MiniDumpWriteDump");
     if( NULL == pfnMiniDumpWriteDump )
     {
      FreeLibrary(hModule);
      return;
     }
     char szFile[MAX_PATH+1] = {0};
     _snprintf(szFile, MAX_PATH, ".\\cc_%u.dmp", time(NULL));
     HANDLE hFile = CreateFile(szFile, GENERIC_ALL, FILE_SHARE_READ, NULL, CREATE_ALWAYS, 0, NULL);
     if( INVALID_HANDLE_VALUE == hFile )
     {
      FreeLibrary(hModule);
      return;
     }
     MINIDUMP_EXCEPTION_INFORMATION mei;
     mei.ThreadId = GetCurrentThreadId();
     mei.ClientPointers = TRUE;
     mei.ExceptionPointers = ExceptionInfo;
     
    // (*pfnMiniDumpWriteDump)(GetCurrentProcess(), GetCurrentProcessId(), hFile,
    //  MiniDumpWithFullMemory,
    //  &mei, NULL, NULL);
     MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile,
      MiniDumpWithFullMemory,
      &mei, NULL, NULL);
     CloseHandle(hFile);
     FreeLibrary(hModule);
    }
    struct _EXCEPTION_POINTERS gEx;
    DWORD FilterFunction(struct _EXCEPTION_POINTERS* ex)
    {
     memcpy(&gEx,ex,sizeof(_EXCEPTION_POINTERS));
     return 1;
    }
    void Dmp()
    {
     __try
     {
      
      // try block 
      throw 12;
      
     }
     __except ( FilterFunction(GetExceptionInformation()) )
     { 
      // exception handler block
      CreateMiniDump(&gEx);
      
     }
    }

  • 相关阅读:
    Community Server(CS)是一个非常优秀的Asp.net开源软件
    乐在其中设计模式(C#)
    VSTO+WinForm+WebService+WCF+WPF示例
    系出名门 Android 系列文章索引
    DataTable 和List 相互转换
    C#异步TCP通讯类库FlyTcpFramework
    WCF+BizTalk开发系列
    精通MVC 3 框架
    我对架构的理解
    DataTable转换成IList
  • 原文地址:https://www.cnblogs.com/ahuo/p/1566174.html
Copyright © 2011-2022 走看看