未处理异常和JIT调试

系统启动进程的主要过程描述如下:


通常系统会在进程启动后把客户代码的入口函数(一般是运行时库的入口函数,运行时库再去调用main函数)的地址传给BaseProcessStart,从BaseProcessStart函数中进入到客户代码,而BaseProcessStart会注册一个处理客户代码的为处理异常的异常处理器(通常是ExitThread)。类似的BaseThreatStart处理线程的异常。

运行时库也会像启动进程函数一样对所调用的main函数加上一个未处理异常的保护,对于main中的异常调用_XcptFilter异常过滤器使用C风格的信号处理机制以兼容UNIX系统的软件。

UnhandledExceptionFilter描述了处理所有用户异常的流程,第一次调试子系统不处理,进入到UnhandledExceptionFilter检查是否已经处理,若未处理检查是否为调试状态,若为调试状态重新分发给调试器(第二次),再次进入到UnhandledExceptionFilter查看异常处理器列表,还是没处理就调用错误提示,启动JIT调试器等动作。可以配置注册表等方式使用DW工具生成转储文件,输出错误日志等动作。




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值