Win32程序发生异常时处理的流程
来源:互联网 发布:淘宝达人挣钱吗 编辑:程序博客网 时间:2024/04/30 22:31
一. 程序没有被调试
0.线程建立时, 系统安装一个 系统线程异常处理例程
1.异常发生时, Win2K/XP 控制权转移给 NTDLL.KiUserExceptionDispatcher
2.如果你安装了线程相关的异常处理例程, 系统就把异常发送给你的处理例程,交由其处理.
3.每个线程相关的异常处理例程可以处理或者不处理这个异常,如果他不处理并且安装了多个线程相关的异常处理例程, 可交由链起来的其他例程处理.
4.如果这些例程均选择不处理异常,系统线程异常处理例程将起作用, 调用 ZwQueryInformationProcess 判断是否被调试, 没有调试并且你调用SetUnhandledExceptionFilter安装了最后异常处理例程的话,系统转向对它的调用.
5.如果你没有安装最后异常处理例程或者他没有处理这个异常,系统会调用默认的系统处理程序,通常显示一个对话框, 你可以选择关闭或者最后将其附加到调试器上的调试按钮. 如果没有调试器能被附加于其上或者调试器也处理不了,系统就调用ExitProcess终结程序.
0.线程建立时, 系统安装一个系统线程异常处理例程
1.异常发生时, 系统挂起程序并向调试器发送 EXCEPTION_DEBUG_EVENT 消息.
2.调试器未能处理异常(比如我们在 OD 里按Shift+F7), 控制权转移给 NTDLL.KiUserExceptionDispatcher 如果你安装了线程相关的异常处理例程,系统就把异常发送给你的程序seh处理例程,交由其处理.
3.每个线程相关的异常处理例程可以处理或者不处理这个异常,如果他不处理并且安装了多个线程相关的异常处理例程, 可交由链起来的其他例程处理.
4.如果这些例程均选择不处理异常,系统线程异常处理例程将起作用, 调用 ZwQueryInformationProcess 判断是否被调试,
5.由于被调试, 操作系统仍会再次挂起程序通知debugger.
0.线程建立时, 系统安装一个 系统线程异常处理例程
1.异常发生时, Win2K/XP 控制权转移给 NTDLL.KiUserExceptionDispatcher
2.如果你安装了线程相关的异常处理例程, 系统就把异常发送给你的处理例程,交由其处理.
3.每个线程相关的异常处理例程可以处理或者不处理这个异常,如果他不处理并且安装了多个线程相关的异常处理例程, 可交由链起来的其他例程处理.
4.如果这些例程均选择不处理异常,系统线程异常处理例程将起作用, 调用 ZwQueryInformationProcess 判断是否被调试, 没有调试并且你调用SetUnhandledExceptionFilter安装了最后异常处理例程的话,系统转向对它的调用.
5.如果你没有安装最后异常处理例程或者他没有处理这个异常,系统会调用默认的系统处理程序,通常显示一个对话框, 你可以选择关闭或者最后将其附加到调试器上的调试按钮. 如果没有调试器能被附加于其上或者调试器也处理不了,系统就调用ExitProcess终结程序.
6.不过在终结之前,系统仍然对发生异常的线程异常处理句柄来一次展开,这是线程异常处理例程最后清理的机会.一般只用来释放资源, 不要试图修复什么. 注意只对线程异常有展开.
0.线程建立时, 系统安装一个系统线程异常处理例程
1.异常发生时, 系统挂起程序并向调试器发送 EXCEPTION_DEBUG_EVENT 消息.
2.调试器未能处理异常(比如我们在 OD 里按Shift+F7), 控制权转移给 NTDLL.KiUserExceptionDispatcher 如果你安装了线程相关的异常处理例程,系统就把异常发送给你的程序seh处理例程,交由其处理.
3.每个线程相关的异常处理例程可以处理或者不处理这个异常,如果他不处理并且安装了多个线程相关的异常处理例程, 可交由链起来的其他例程处理.
4.如果这些例程均选择不处理异常,系统线程异常处理例程将起作用, 调用 ZwQueryInformationProcess 判断是否被调试,
5.由于被调试, 操作系统仍会再次挂起程序通知debugger.
- Win32程序发生异常时处理的流程
- Ajax程序:处理异步调用中的异常(在客户端调用Web Service代理时发生异常的处理办法)
- 异常的发生,捕获,处理
- Win32程序的创建流程
- java发生异常时,代码流程走向
- ARM用户层发生异常后软硬件协同处理流程
- SetUnhandledExceptionFilter (发生异常时系统的处理顺序)
- iexplore.exe[2148]中发生未处理的win32异常
- iexplore.exe [xxxx] 中发生未处理的win32异常
- pb 中 pb90.exe发生未处理的win32异常
- svchost.exe[1348]中发生未处理的win32异常 分析
- pb 中 pb90.exe发生未处理的win32异常
- explorer.exe [1316]中发生未处理的win32异常
- SQLyogEnt.exe[5232]中发生未处理的win32异常
- pb 中 pb90.exe发生未处理的win32异常
- Java异常发生时程序的执行顺序
- Win32程序的空闲处理
- 程序的流程发生了变化。
- linux中的/root与/home
- 移动办公OA中间件业务进入常态化
- linux内核-内核同步
- Hdu 4704 Sum -- 快速幂+高精度处理
- 解决双系统安装ubuntu后win8无法启动
- Win32程序发生异常时处理的流程
- Zookeeper使用和原理探究
- 取出购买记录、评价记录、订单页面取出商品图片
- Linux curses库
- android程序闹钟服务的实现
- sencha touch之布局
- 深入浅出单例模式
- networkx--四种网络模型
- constant常量