当前位置: 首页 > news >正文

MiniDumpWriteDump函数生成dmp文件

MiniDumpWriteDump函数生成dmp文件

  • 一:概述
  • 二: CreateDump.h
  • 三:CreateDump.cpp
  • 四:main测试
  • 五:winDbg分析

一:概述

v2008及以上版本都可以用。 包含CreateDump.h,CreateDump.cpp文件,main()测试例子。

二: CreateDump.h

#pragma once
#include <string>
#include <windows.h>
using namespace std;
class CCreateDump
{
public:CCreateDump();~CCreateDump(void);static CCreateDump* Instance();static long __stdcall UnhandleExceptionFilter(_EXCEPTION_POINTERS* ExceptionInfo);//声明Dump文件,异常时会自动生成。会自动加入.dmp文件名后缀void DeclarDumpFile();
private:static WCHAR    strDumpFile[MAX_PATH];static CCreateDump* __instance;
};

三:CreateDump.cpp

#include "stdafx.h"
#include "CreateDump.h"
#include <DbgHelp.h>
#pragma comment(lib,  "dbghelp.lib")CCreateDump* CCreateDump::__instance = NULL;
WCHAR  CCreateDump::strDumpFile[MAX_PATH] = { 0 };CCreateDump::CCreateDump()
{
}CCreateDump::~CCreateDump(void)
{}long  CCreateDump::UnhandleExceptionFilter(_EXCEPTION_POINTERS* ExceptionInfo)
{HANDLE hFile = CreateFile(strDumpFile, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);if (hFile != INVALID_HANDLE_VALUE){MINIDUMP_EXCEPTION_INFORMATION   ExInfo;ExInfo.ThreadId = ::GetCurrentThreadId();ExInfo.ExceptionPointers = ExceptionInfo;ExInfo.ClientPointers = FALSE;//   write   the   dumpBOOL   bOK = MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpNormal, &ExInfo, NULL, NULL);CloseHandle(hFile);if (!bOK){DWORD dw = GetLastError();//写dump文件出错处理,异常交给windows处理return EXCEPTION_CONTINUE_SEARCH;}else{    //在异常处结束return EXCEPTION_EXECUTE_HANDLER;}}else{return EXCEPTION_CONTINUE_SEARCH;}
}void CCreateDump::DeclarDumpFile()
{SYSTEMTIME syt;GetLocalTime(&syt);char c[MAX_PATH];::swprintf_s(strDumpFile, _countof(strDumpFile) - 1, L"%04d-%02d-%02d_%02d%02d%02d.dmp", syt.wYear, syt.wMonth, syt.wDay, syt.wHour, syt.wMinute, syt.wSecond);SetUnhandledExceptionFilter(UnhandleExceptionFilter);
}CCreateDump* CCreateDump::Instance()
{if (__instance == NULL){__instance = new CCreateDump;}return __instance;
}

四:main测试

int main()
{CCreateDump::Instance()->DeclarDumpFile();int ag=0;int bg=2;int cg =bg/0;std::cout<<cg<<std::endl;return 0;
}

五:winDbg分析

百度网盘下载地址
提取码:cc70
1) 设置.dmp、.pdb文件所在路径
在以下两个地方设置路径
file->symbol search path
file->source search path

2)分析.pdb
file->open crash
选择 .dmp文件
命令窗口输入: !analyze -v

http://www.lryc.cn/news/250891.html

相关文章:

  • 【Qt开发流程】之事件系统1:事件系统描述及事件发生流程
  • 初始数据结构(加深对旋转的理解)
  • Android 13 - Media框架(18)- CodecBase
  • 关于微信公众号授权的几件事
  • Docker监控Weave Scope的安装和使用
  • 为自己创建的游戏编程源码申请软件著作权详细流程(免费分享模板)
  • 代币化:2024年的金融浪潮预示着什么?
  • [学习记录]Node event loop 总结流程图
  • 【LeetCode热题100】【双指针】移动零
  • Mybatis 分页查询的三种实现
  • 各类声音数据集大合集—乐器、车辆、鸟鸣、蜜蜂声音、歌曲、喇叭、人类声音不同等类型的声音数据集
  • java设计模式学习之【原型模式】
  • 链表数组插入排序
  • MyBatis的创建,简单易懂的一篇blog
  • MOS管的静电击穿问题
  • 在线 SQL 模拟器SQL Fiddle使用简介
  • 仿京东淘宝商品列表筛选组件:实现一个高效的侧边栏弹框筛选功能
  • 软件工程 - 第8章 面向对象建模 - 4 - 物理体系结构建模
  • 【智能家居】二、添加火灾检测模块(烟雾报警功能点)
  • history和hash两种路由模式原理,和优缺点
  • Nginx 具体应用
  • 计算机网络之网络传输,三次握手和四次挥手
  • Azure Machine Learning - 在 Azure AI 搜索中创建全文查询
  • 基于YOLOv8深度学习的钢材表面缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战
  • 深度学习常见回归分支算法逐步分析,各种回归之间的优缺点,适用场景,举例演示
  • Programming Contest 2023(AtCoder Beginner Contest 331)D题 Tile Pattern --- 题解
  • Google测试框架googletest简介与使用方法
  • 进程的创建:fork()
  • Fabric:创建应用通道
  • 力扣每日一题(2023-11-30)