利用 dump 文件调试 release 程序

真实开发过程中会遇到这种情况,程序在自己的电脑上运行的很好,但是交付之后就会经常莫名其妙的 关闭
通常的做法是 给运行的程序 加上 try catch ,分析catch到的log来分析,这对于java来说是非常好的方法
printStackTrace() 不仅可以打印 错误类型,还可以打印错误堆栈,这是依赖于jvm虚拟机的
但是 C++ 的异常处理 如果显示堆栈的话比较麻烦,网上这种代码很多 ,在这里我们说另外一种方式 : 内存转储文件

内存转储就是在程序运行崩溃的时候把 内存的信息打印到 一个文件中,通过对这个文件的分析来 来调试程序
一个完整的代码例子:

#include <iostream>
#include <string>

#include <Windows.h>
#include <DbgHelp.h>


using namespace std;

void CreateDumpFile(LPCSTR lpstrDumpFilePathName, EXCEPTION_POINTERS *pException) ; 
LONG ApplicationCrashHandler(EXCEPTION_POINTERS *pException);

void CreateDumpFile(LPCSTR lpstrDumpFilePathName, EXCEPTION_POINTERS *pException)  
{  
	// 创建Dump文件   
	//   
	HANDLE hDumpFile = CreateFile(lpstrDumpFilePathName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);  

	// Dump信息   
	//   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值