#pragma once//DbgHelp.h在WINDOWS系统目录中,直接使用<>方式
#include <DbgHelp.h>int GenerateMiniDump(HANDLE hFile, PEXCEPTION_POINTERS pExceptionPointers, PWCHAR pwAppName)
{BOOL bOwnDumpFile = FALSE;HANDLE hDumpFile = hFile;MINIDUMP_EXCEPTION_INFORMATION ExpParam;typedef BOOL(WINAPI * MiniDumpWriteDumpT)(HANDLE,DWORD,HANDLE,MINIDUMP_TYPE,PMINIDUMP_EXCEPTION_INFORMATION,PMINIDUMP_USER_STREAM_INFORMATION,PMINIDUMP_CALLBACK_INFORMATION);MiniDumpWriteDumpT pfnMiniDumpWriteDump = NULL;//DbgHelp.dll在系统目录中,可以直接通过LoadLibrary进行导入HMODULE hDbgHelp = LoadLibrary(L"DbgHelp.dll");if (hDbgHelp)pfnMiniDumpWriteDump = (MiniDumpWriteDumpT)GetProcAddress(hDbgHelp, "MiniDumpWriteDump");if (pfnMiniDumpWriteDump){if (hDumpFile == NULL || hDumpFile == INVALID_HANDLE_VALUE){TCHAR szFileName[MAX_PATH] = { 0 };TCHAR dwBufferSize = MAX_PATH;SYSTEMTIME stLocalTime;GetLocalTime(&stLocalTime);CreateDirectory(szFileName, NULL);wsprintf(szFileName, L"Game%d-%d-%d_%d-%d-%d.dmp",stLocalTime.wYear, stLocalTime.wMonth, stLocalTime.wDay,stLocalTime.wHour, stLocalTime.wMinute, stLocalTime.wSecond);hDumpFile = CreateFile(szFileName, GENERIC_READ | GENERIC_WRITE,FILE_SHARE_WRITE | FILE_SHARE_READ, 0, CREATE_ALWAYS, 0, 0);bOwnDumpFile = TRUE;OutputDebugString(szFileName);}if (hDumpFile != INVALID_HANDLE_VALUE){ExpParam.ThreadId = GetCurrentThreadId();ExpParam.ExceptionPointers = pExceptionPointers;ExpParam.ClientPointers = FALSE;pfnMiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(),hDumpFile, MiniDumpWithDataSegs, (pExceptionPointers ? &ExpParam : NULL), NULL, NULL);if (bOwnDumpFile)CloseHandle(hDumpFile);}}if (hDbgHelp != NULL)FreeLibrary(hDbgHelp);return EXCEPTION_EXECUTE_HANDLER;
}LONG WINAPI ExceptionFilter(LPEXCEPTION_POINTERS lpExceptionInfo)
{if (IsDebuggerPresent()){return EXCEPTION_CONTINUE_SEARCH;}return GenerateMiniDump(NULL, lpExceptionInfo, L"test");
}/*
使用时,include头文件MiniDump.h
调用方式:MiniDump::Start()
*/class MiniDump
{
public:static void Start() {SetUnhandledExceptionFilter(ExceptionFilter);}
};

参考文档:

https://blog.csdn.net/tojohnonly/article/details/72864694

https://www.cnblogs.com/jkcx/p/6396270.html

游戏服务器之生成Dump文件相关推荐

  1. linux手动生成dump文件权限不足_linux下生成dump文件方法及设置

    https://andyniu.iteye.com/blog/1965571 Linux中生成 Core Dump 文件的方法 1 什么是 Core Dump Core Dump 又叫核心转储.在程序 ...

  2. linux下生成dump文件方法及设置

    Linux中生成 Core Dump 文件的方法 1 什么是 Core Dump Core Dump 又叫核心转储.在程序运行过程中发生异常时,将其内存数据保存到文件中,这个过程叫做 Core Dum ...

  3. 如何手动生成Dump文件并分析Dump文件

    大家都知道,当服务器出现蓝屏问题时,我们需要获取系统所产生的DUMP文件进行分析,如何确保在系统问题发生时,可以正确的生成所需要的DUMP文件呢?我们需要做如下检查: 1).右键点击"我的电 ...

  4. JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式

    JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式,以及如何使用Eclips Memory Analyzer(MAT)插件进行堆内存分析. 方法一: jmap -du ...

  5. [Windows编程] 如何捕捉程序异常/crash 并生成 dump 文件

    前面介绍如如何用WinDBG 生成crash dump <WinDBG 技巧:如何生成Dump 文件(.dump 命令) >,但是用户机器上通常不安装WinDBG, 而且多数用户也不知道怎 ...

  6. java oom dump_JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式

    JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式,以及如何使用Eclips Memory Analyzer(MAT)插件进行堆内存分析. 方法一: jmap -du ...

  7. 利用 dbghelp.dll 生成 dump 文件

    dbghelp.dll windows的系统目录system32下,都有dbghelp.dll,但在实际使用时,往往会让exe加载自己目录下的dll,以避免系统目录下的dll版本不一导致的程序异常. ...

  8. 启动(程序还没执行生成dump文件的代码)就崩溃的处理流程

    何志丹 如果有专业人员,利用Windbg启动这个程序,在分析就可以了. 上次崩溃,让大家手忙脚乱.所以列了一个启动(程序还没执行生成dump文件的代码)就崩溃的处理流程. 1,用我写的opendll. ...

  9. Windows下生成dump文件的三种方式

    文章目录 前言 一.什么是dump文件? 概述 dump分类 内核模式Dump 用户模式Dump 二.dump生成方式 实现方法 方法一:修改注册表 参数说明 方法二:生动创建转储文件 方法三:通过代 ...

  10. Java多线程之赛跑游戏(含生成exe文件)

    Java多线程之赛跑游戏(含生成exe文件) 在JavaSE中,多线程是一个重要的内容. 我们要了解多线程的概念,就要先了解进程的概念:要了解进程的概念,就离不开操作系统的概念. 在一台正常运行的电脑 ...

最新文章

  1. java程序员修炼之道
  2. ArrayList、LinkedList、Vector的区别。
  3. rtmp 常用字段含义
  4. 给Angular应用增添搜索Search功能
  5. 【转】浮点数之间的比较
  6. 偶遇 649453.sys / Adware.Cdn / Hacktool.Rootkit
  7. Oracle 小写金额转换为大写金额
  8. OSChina 周二乱弹 —— 基于现代生物化学的长生不老药炼制教程
  9. kali 安装volatility_volatility的使用
  10. 原来小米手机电源键除了开关机,还隐藏这3大用法,真是厉害了
  11. 在网页上播放本地视频
  12. FME会员期刊(夏季版)
  13. 业界新闻: JAVA 7新特性让JVM“瘦身”成功!
  14. Hadoop命令大全
  15. 锤子os4.1 android8,Smartisan OS 8.0系统
  16. 多个PDF合并成一个怎么进行操作?
  17. FidBugs的使用学习
  18. 【基于 Arduino 的 RFID门锁】
  19. 面相学论眼睛:看眼形善与不善
  20. 百度老年搜索:毫无意义

热门文章

  1. Hadoop中Namenode单点故障
  2. 经典代码d359f1d82912ef1b1cd784bd28829325
  3. 【vijos】P1190 繁忙的都市
  4. iOS开发中的错误整理,再一次整理通过通知中心来处理键盘,一定记得最后关闭通知中心...
  5. Linux网络配置之二ip、ss、网络相关配置文件
  6. c语言实现linux下的top命令来获取cpu利用率_Linux性能调优之CPU性能优化
  7. php中include,require的文件包含问题,以及$_SERVER['PHP_SELF']和__FILE__的区别
  8. JSP中报错only a type can be imported XXX resolves to package
  9. 安全运维 - Windows系统攻击回溯
  10. C# 匿名对象(匿名类型)、var、动态类型 dynamic