SetUnhandledExceptionFilter 设置未捕获异常处理

通常windows程序长时间运行,会发生各种问题,例如访问异常,内存溢出,堆栈破坏等。

这时候通常希望程序自己能增加处理,而不是依靠系统弹出错误提示框(灰常不友好).

//For proc exception
LONG WINAPI ExpFilter(struct _EXCEPTION_POINTERS *pExp)
{
ACE_DEBUG((LM_ERROR, "Exception code : %X, address: %x Exit!\n",
pExp->ExceptionRecord->ExceptionCode,
pExp->ExceptionRecord->ExceptionAddress)); MessageBox(NULL, "Exception", "提示", MB_OK);
//::exit(-); return EXCEPTION_EXECUTE_HANDLER;
} //Test exception
// Exception code c0000374
//RaiseException(0xc0000374, 0, 0, NULL); // Exception code c0000005
// int* p1 = NULL;
// *p1 = 99;

//For exception in main
::SetUnhandledExceptionFilter(ExpFilter);

 

PS: The RaiseException function raises an exception in the calling thread.

MSDN中有关SetErrorMode的详细描述,可以这样调用。

//The system does not display a message box when it fails to find a file. Instead, the error is returned to the calling process.

SetErrorMode(SEM_NOOPENFILEERRORBOX) 

参考http://blog.csdn.net/woshinia/article/details/10212387

SetUnhandledExceptionFilter的更多相关文章

  1. VS2005中SetUnhandledExceptionFilter函数应用

    很多软件通过设置自己的异常捕获函数,捕获未处理的异常,生成报告或者日志(例如生成mini-dump文件),达到Release版本下追踪Bug的目的.但是,到了VS2005(即VC8),Microsof ...

  2. 使用SetUnhandledExceptionFilter转储程序崩溃时内存DMP注意事项

    使用代码手工生成dmp文件 SetUnhandledExceptionFilter 为每个线程设置SetUnhandledExceptionFilter(MyCallBack),(必须在每个线程中启动 ...

  3. 使用SetUnhandledExceptionFilter转储程序崩溃时内存DMP .

    关于程序崩溃时转储内存DMP,可以设置注册表,使程序崩溃时自动转储内存DMP,见程序崩溃时利用注册表自动转储内存DMP.本文要介绍的是使用SetUnhandledExceptionFilter函数在程 ...

  4. [转]window下使用SetUnhandledExceptionFilter捕获让程序的崩溃

    简单使用SetUnhandledExceptionFilter()函数让程序优雅崩溃 虽然是大公司的产品,QQ它还是会在我们的折腾下崩溃的,但是它总是崩溃的很优雅,还要弹出自己的对话框来结束.并且发送 ...

  5. window下使用SetUnhandledExceptionFilter捕获让程序的崩溃(转)

    简单使用SetUnhandledExceptionFilter()函数让程序优雅崩溃 虽然是大公司的产品,QQ它还是会在我们的折腾下崩溃的,但是它总是崩溃的很优雅,还要弹出自己的对话框来结束.并且发送 ...

  6. Breakpad Google的crash捕获、抓取开源库

    简介: Breadpad为google chrominum项目下用于处理dump的一套工具:内部采用跨平台方式实现捕获.生成.解析与平台无关的dump,便于统一处理:支持进程内与进程外捕获,当为进程外 ...

  7. mingw32 捕获异常的4种方法

    ------------------------------------------------------------------------------- 1. 利用 windows 的API S ...

  8. C++库(Google Breakpad)

    Google Breakpad是什么? 一个开源的多平台崩溃报告系统. Google breakpad是一个非常实用的跨平台的崩溃转储和分析模块,它支持Windows,Linux和Mac和Solari ...

  9. Google之Chromium浏览器源码学习——base公共通用库(四)

    本文将介绍debug调试相关的内容,包括调试器.性能分析.堆跟踪.跟踪事件等: alias.h:Alias函数,提供防止载微软的编译器优化某参数变量的操作,内部通过#pragma optimize(& ...

随机推荐

  1. C#基础知识图谱

  2. 高德地图 获取sha1

    开发版本sha1 控制台输入 cd .android  回车 再输入   keytool -list -v -keystore debug.keystore 回车 输入密钥库口令:  andorid ...

  3. Cocos2d-x v3.1 坐标系统(五)

    Cocos2d-x v3.1 坐标系统(五) 为了能够更好的布局以及了解对象所在的位置,我们必须对Cocos2d-x中的坐标有详细的了解,本篇文章主要就是了解Cocos中用到的坐标系统.学过数学的人都 ...

  4. AppScale3.01

    平台: Ubuntu 类型: 虚拟机镜像 软件包: appscale appscale-tools app appscale appserver basic software cloud comput ...

  5. Tomcat Stack-8.0.35 (OpenLogic CentOS7.2)

       平台: CentOS 类型: 虚拟机镜像 软件包: apache2.4.20 mysql5.6.30 tomcat8.0.35 apache application server basic s ...

  6. 解决MVC运行controller的时候只有有参构造函数但是程序一定要走无参构造函数的方法

    方法如下 https://www.codeproject.com/Articles/560798/ASP-NET-MVC-Controller-Dependency-Injection-for-Be

  7. 转载请注明:Windows 系统必备好用软件&工具合集跟推荐 | 老D博客

    Windows 系统必备好用软件&工具合集跟推荐 97 63,371 A+ 所属分类:工具软件 一.浏览器 二.下载软件 三.播放软件 五.电子邮件客户端 六.图片/照片 浏览查看工具 七.文 ...

  8. Angular2--显示数据

    1.插值表达式 要显示组件的属性,最简单的方式就是通过插值表达式来绑定属性名.要使用插值表达式,就把属性名包裹在双花括号里放进视图模板,如 {{}} eg: <h1>{{ name }}& ...

  9. 【转】iOS 文件下载及断点续传

    ios的下载我们可以使用的方法有:NSData.NSURLConnection.NSURLSession还有第三方框架AFNetworking和ASI 利用NSData方法和NSURLConnecti ...

  10. Oracle 分区表的索引、分区索引

    对于分区表,可以建立不分区索引.也就是说表分区,但是索引不分区.以下着重介绍分区表的分区索引. 索引与表一样,也可以分区.索引分为两类:locally partition index(局部分区索引). ...