未处理异常和JIT调试

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

未处理异常和JIT调试_第1张图片

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

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

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

未处理异常和JIT调试_第2张图片未处理异常和JIT调试_第3张图片未处理异常和JIT调试_第4张图片未处理异常和JIT调试_第5张图片未处理异常和JIT调试_第6张图片未处理异常和JIT调试_第7张图片未处理异常和JIT调试_第8张图片未处理异常和JIT调试_第9张图片未处理异常和JIT调试_第10张图片未处理异常和JIT调试_第11张图片未处理异常和JIT调试_第12张图片未处理异常和JIT调试_第13张图片未处理异常和JIT调试_第14张图片未处理异常和JIT调试_第15张图片未处理异常和JIT调试_第16张图片



你可能感兴趣的:(软件调试)