利用 dbghelp.dll 生成 dump 文件
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 文件相关推荐
- 利用 windbg 或 adplus 生成 dump 文件
强力 调试 工具 windbg: 1. 到windbg官网下载安装文件 http://www.windbg.org/ 2.选择下载32bit or 64bit 版本: 我的经验:我们的编译机环境和运行 ...
- java 生成dump文件_程序自动生成Dump文件
前言:通过drwtsn32.NTSD.CDB等调试工具生成Dump文件,drwtsn32存在的缺点虽然NTSD.CDB可以完全解决,但并不是所有的操作系统中都安装了NTSD.CDB等调试工具.了解了m ...
- [Windows编程] 如何捕捉程序异常/crash 并生成 dump 文件
前面介绍如如何用WinDBG 生成crash dump <WinDBG 技巧:如何生成Dump 文件(.dump 命令) >,但是用户机器上通常不安装WinDBG, 而且多数用户也不知道怎 ...
- 启动(程序还没执行生成dump文件的代码)就崩溃的处理流程
何志丹 如果有专业人员,利用Windbg启动这个程序,在分析就可以了. 上次崩溃,让大家手忙脚乱.所以列了一个启动(程序还没执行生成dump文件的代码)就崩溃的处理流程. 1,用我写的opendll. ...
- Windows下生成dump文件的三种方式
文章目录 前言 一.什么是dump文件? 概述 dump分类 内核模式Dump 用户模式Dump 二.dump生成方式 实现方法 方法一:修改注册表 参数说明 方法二:生动创建转储文件 方法三:通过代 ...
- linux手动生成dump文件权限不足_linux下生成dump文件方法及设置
https://andyniu.iteye.com/blog/1965571 Linux中生成 Core Dump 文件的方法 1 什么是 Core Dump Core Dump 又叫核心转储.在程序 ...
- linux 生成dump文件
from https://blog.csdn.net/weixin_39249306/article/details/94554782 core dump文件 core dump 又叫核心转储,是一个 ...
- linux下生成dump文件方法及设置
Linux中生成 Core Dump 文件的方法 1 什么是 Core Dump Core Dump 又叫核心转储.在程序运行过程中发生异常时,将其内存数据保存到文件中,这个过程叫做 Core Dum ...
- C++生成Dump文件
C++开发的应用程序避免不了各种崩溃,空指针,野指针,栈溢出等等.为了方便定位问题,我们一般在程序崩溃的时候自动生成一个dump文件,然后通过dump文件结合pdb来定位问题.c++生成dump文件的 ...
最新文章
- ABAP 数字处理相关内容备注
- nvidia-smi命令显示NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver
- zabbix系列(四)Zabbix3.0.4添加对Nginx服务的监控
- 十条技巧 更聪明地使用Google搜索
- fgets阻塞 stdin 退出_来自stdin问题的fgets[c]
- 使用scp命令传输文件
- 在CentOS7环境下部署TiDB
- SQLServer create schema
- 生信SCi好用的画图软件
- 创基为您介绍目前市面上的主流蓝牙方案
- 2020年中国轴承套圈行业市场现状分析,国内市场格局十分分散「图」
- 2000款学校教师课件培训PPT模板免费下载网址
- 快速获取InputBox选中区域的单个单元格引用地址
- KK模组与普通丝杠模组的区别
- python爬虫网页崩溃怎么处理_python程序爬虫总是崩溃
- Windows程序闪退原因查看方法----事件查看器
- 佛说爱情二:前生500次的回眸才换得今生的一次擦肩而过
- python 调用scp命令 实践
- OpenGL基本图元的绘制
- 有道云笔记markdown教程
热门文章
- [003]容器和动态数组的使用
- ABAP--关于ABAP流程处理的一些命令的说明(stop,exit,return,check,reject)
- vector元素的读取
- 谷歌浏览器flash_谷歌浏览器不支持Flash Player的问题
- python字典合并几种方式对比,Python合并两个字典的常用方法与效率比较
- python xposed_Xposed及类Xposed框架收集
- 【APICloud系列|25】 easeChat模块(环信-即时通讯)的实现
- 有var d = new Date(‘20xx-m-09‘),可以设置为m+1月份的操作是?
- python定义区间[-5、5_有一个数 x 在区间 [-5,0] 内 , 写出其条件表达式 。 (5.0分)_学小易找答案...
- 前端开发:小程序--第一步