dbghelp.dll

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

故一般都是用LoadLibrary()的方式加载Dll,先加载当前目录,不存在时加载系统目录。

HMODULE hDll = ::LoadLibrary(szDllPath);

MiniDumpWriteDump

该函数为DbgHelp.dll 导出函数,使用它生成dump文件。

BOOL WINAPI MiniDumpWriteDump(__in  HANDLE hProcess,__in  DWORD ProcessId,__in  HANDLE hFile,__in  MINIDUMP_TYPE DumpType,__in  PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,__in  PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,__in  PMINIDUMP_CALLBACK_INFORMATION CallbackParam
);

通过 GetProcAddress() 获取 MiniDumpWriteDump() 函数指针,如下:

typedef BOOL (WINAPI* MINIDUMPWRITEDUMP)(HANDLE hProcess,DWORD ProcessId,HANDLE hFile,MINIDUMP_TYPE DumpType,PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,PMINIDUMP_CALLBACK_INFORMATION CallbackParam
);MINIDUMPWRITEDUMP pFuncWriteDump = NULL;
pFuncWriteDump = (MINIDUMPWRITEDUMP)::GetProcAddress(hDll, "MiniDumpWriteDump");

创建dump文件File:

HANDLE hDump = CreateFile(szFileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

生成dump文件:

MINIDUMP_EXCEPTION_INFORMATION loExceptionInfo;loExceptionInfo.ExceptionPointers = ExceptionInfo;loExceptionInfo.ThreadId = GetCurrentThreadId();loExceptionInfo.ClientPointers = TRUE;BOOL bRes = MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(),lhDumpFile, MiniDumpNormal, &loExceptionInfo, NULL, NULL);CloseHandle(lhDumpFile);

ExceptionInfo 是程序的异常信息,UnhandledExceptionFilter() 函数的唯一参数类型,所以可以在 UnhandledExceptionFilter() 函数内生成Dump文件。

记得最后CloseHandle  文件句柄。

转载于:https://www.cnblogs.com/johnice/archive/2013/01/06/2847654.html

利用 dbghelp.dll 生成 dump 文件相关推荐

  1. 利用 windbg 或 adplus 生成 dump 文件

    强力 调试 工具 windbg: 1. 到windbg官网下载安装文件 http://www.windbg.org/ 2.选择下载32bit or 64bit 版本: 我的经验:我们的编译机环境和运行 ...

  2. java 生成dump文件_程序自动生成Dump文件

    前言:通过drwtsn32.NTSD.CDB等调试工具生成Dump文件,drwtsn32存在的缺点虽然NTSD.CDB可以完全解决,但并不是所有的操作系统中都安装了NTSD.CDB等调试工具.了解了m ...

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

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

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

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

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

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

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

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

  7. linux 生成dump文件

    from https://blog.csdn.net/weixin_39249306/article/details/94554782 core dump文件 core dump 又叫核心转储,是一个 ...

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

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

  9. C++生成Dump文件

    C++开发的应用程序避免不了各种崩溃,空指针,野指针,栈溢出等等.为了方便定位问题,我们一般在程序崩溃的时候自动生成一个dump文件,然后通过dump文件结合pdb来定位问题.c++生成dump文件的 ...

最新文章

  1. ABAP 数字处理相关内容备注
  2. nvidia-smi命令显示NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver
  3. zabbix系列(四)Zabbix3.0.4添加对Nginx服务的监控
  4. 十条技巧 更聪明地使用Google搜索
  5. fgets阻塞 stdin 退出_来自stdin问题的fgets[c]
  6. 使用scp命令传输文件
  7. 在CentOS7环境下部署TiDB
  8. SQLServer create schema
  9. 生信SCi好用的画图软件
  10. 创基为您介绍目前市面上的主流蓝牙方案
  11. 2020年中国轴承套圈行业市场现状分析,国内市场格局十分分散「图」
  12. 2000款学校教师课件培训PPT模板免费下载网址
  13. 快速获取InputBox选中区域的单个单元格引用地址
  14. KK模组与普通丝杠模组的区别
  15. python爬虫网页崩溃怎么处理_python程序爬虫总是崩溃
  16. Windows程序闪退原因查看方法----事件查看器
  17. 佛说爱情二:前生500次的回眸才换得今生的一次擦肩而过
  18. python 调用scp命令 实践
  19. OpenGL基本图元的绘制
  20. 有道云笔记markdown教程

热门文章

  1. [003]容器和动态数组的使用
  2. ABAP--关于ABAP流程处理的一些命令的说明(stop,exit,return,check,reject)
  3. vector元素的读取
  4. 谷歌浏览器flash_谷歌浏览器不支持Flash Player的问题
  5. python字典合并几种方式对比,Python合并两个字典的常用方法与效率比较
  6. python xposed_Xposed及类Xposed框架收集
  7. 【APICloud系列|25】 easeChat模块(环信-即时通讯)的实现
  8. 有var d = new Date(‘20xx-m-09‘),可以设置为m+1月份的操作是?
  9. python定义区间[-5、5_有一个数 x 在区间 [-5,0] 内 , 写出其条件表达式 。 (5.0分)_学小易找答案...
  10. 前端开发:小程序--第一步