博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows 应用生成MiniDump文件的方法笔记
阅读量:4046 次
发布时间:2019-05-24

本文共 1283 字,大约阅读时间需要 4 分钟。

Windows应用在执行过程中遇到异常等情况默认不会像linux应用那样生成dump文件,可以自己注册一个函数若应用存在Unhandled Exception的时候则执行写入dump文件的操作来排查某些异常情况。

生成dump文件与注册函数的代码如下:

// 创建Dump文件  void CreateDumpFile(LPCTSTR lpstrDumpFilePathName, EXCEPTION_POINTERS *pException){	HANDLE hDumpFile = CreateFile(lpstrDumpFilePathName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);	// Dump信息  	MINIDUMP_EXCEPTION_INFORMATION dumpInfo;	dumpInfo.ExceptionPointers = pException;	dumpInfo.ThreadId = GetCurrentThreadId();	dumpInfo.ClientPointers = TRUE;	// 写入Dump文件内容  	MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL);	CloseHandle(hDumpFile);}// 处理Unhandled Exception的回调函数  LONG ApplicationCrashHandler(EXCEPTION_POINTERS *pException){	TCHAR fileName[BUFSIZ] = { 0 };	time_t tt = time(NULL);//这句返回的只是一个时间cuo	tm* t = localtime(&tt);	wsprintf(fileName, TEXT("c://crash%d_%d_%d_%d_%d_%d.dmp"),		t->tm_year + 1900,		t->tm_mon + 1,		t->tm_mday,		t->tm_hour,		t->tm_min,		t->tm_sec);	CreateDumpFile(fileName, pException);	return EXCEPTION_EXECUTE_HANDLER;}

最后只要在应用程序的入口,比如main函数,后者dllmain函数中注册

int main(int argc, char * argv[]){		//注册异常处理函数  	SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ApplicationCrashHandler);    // do something else.    return 0;}

 

转载地址:http://swwci.baihongyu.com/

你可能感兴趣的文章
C语言位扩展
查看>>
linux irqdebug
查看>>
git 常用命令
查看>>
linux位操作API
查看>>
uboot.lds文件分析
查看>>
uboot start.s文件分析
查看>>
没有路由器的情况下,开发板,虚拟机Ubuntu,win10主机,三者也可以ping通
查看>>
本地服务方式搭建etcd集群
查看>>
安装k8s Master高可用集群
查看>>
忽略图片透明区域的事件(Flex)
查看>>
忽略图片透明区域的事件(Flex)
查看>>
AS3 Flex基础知识100条
查看>>
Flex动态获取flash资源库文件
查看>>
flex4 中创建自定义弹出窗口
查看>>
01Java基础语法-16. while循环结构
查看>>
01Java基础语法-18. 各种循环语句的区别和应用场景
查看>>
01Java基础语法-19. 循环跳转控制语句
查看>>
Django框架全面讲解 -- Form
查看>>
socket,accept函数解析
查看>>
今日互联网关注(写在清明节后):每天都有值得关注的大变化
查看>>