美文网首页
10.默认过滤器和JIT调试

10.默认过滤器和JIT调试

作者: bluewind1230 | 来源:发表于2018-02-23 15:07 被阅读0次
image.png

假设一个异常到了用户态,找了所有异常处理函数,都不处理,怎么办,那些应用程序的那些try,handle都说不处理,这时候这样的异常叫做无人处理的异常,此时就会使用默认的异常处理函数,默认的异常处理函数对于应用程序来说有几个,对于初始线程,BaseprocessStart会注册一个默认的异常处理器;
对于vc编译器编译器编译的,它会插入一个启动函数,它里面也有一个异常处理器;
对于非初始线程,线程的启动函数它有一个默认的异常处理器;
内核态它也有默认处理,它会崩溃,显示BSOD;

应用程序的默认处理就是弹出这些对话框;

image.png

这些都代表了应用程序发生了异常,程序自己又不处理,交给操作系统默认处理,这些对话框的名字叫AE对话框!
这些对话框弹出来都是有特殊的机制的,Vista是用wer创建一个特殊的进程来显示UI,XP是用dwwin创建一个特殊的进程,之前呢是Windows子系统服务进程CSRSS,它报告这样的特殊对话框,这个对话框就是error机制;
以Win7为例:


image.png

上边最左边发生出错的那个进程,全都不处理,默认的那个异常处理是采用默认逻辑,默认逻辑有一个动作是采用默认LPC端口发给WER的服务进程,专门有一个的,Windows错误报告处理,服务进程收到请求之后,创建WER
fort的界面,然后这个界面就给大家看,这个处理意见还可以再返回来影响处理过程;
做默认处理,有一个著名函数叫UnhandleExceptionFilter;


image.png

UnhandleExceptionFilter这个函数很复杂,伪代码见软件调试P322,下面讲一讲这个函数的核心逻辑:
它有三个功能:

  • 调用顶层异常过滤函数:SetUnhandledExceptionFilter
    通过这个API可以设立一个过滤函数,此过滤函数在这种情况下可能被调用,这个API有一个缺点,A设了就是A的,B设置了就会把A的覆盖掉,所以说这个函数你设置了,但是说你发生异常的时候不一定还是你设置的,因为别人调用了把你的覆盖掉了,所以说这种方式不是太可靠,但是动作是在这里做的;

  • UnhandledExceptionFilter另外一个作用是通知应用程序作用;

  • 启动JIT调试器(即时调试,即时调试代表这Windows操作系统的强大支持),即时调试就是在注册表里里面,在这个表键下,AEDebug,(AE代表Applycation error)


    image.png
    image.png

    -p 指定被调试进程 -e(even)
    它们的具体对话代表着非常完美,比如说应用程序出错了,代表开始调试它,弹出应用程序对话框,你启用了即时调试,对话框里就会多一项你要不要调试,你想要调试,被调试进程就会启用调试器,也可以自动可以开始这个过程,(5'37")


    image.png
    自动的话,被调试进程这里先创建CreateEvent(),然后创建调试器进程,然后就开始等调试器进程和Event
image.png

相关文章

  • 10.默认过滤器和JIT调试

    假设一个异常到了用户态,找了所有异常处理函数,都不处理,怎么办,那些应用程序的那些try,handle都说不处理,...

  • angular项目启动慢问题

    调试的时候用的都是JIT 即时 (just-in-time, JIT) 编译 在启动期间,Angular 的即时编...

  • JSCore与Rn相关

    flutter与RN比较: flutter不支持JIT ,默认是AOT , RN采用的是解释执行,也就是JIT f...

  • java的JIT 工作原理简单介绍

    1.JIT的工作原理图 工作原理 当JIT编译启用时(默认是启用的),JVM读入.class文件解释后,将其发给J...

  • Tomcat 远程调试模式

    启动调试模式 启动调试模式,默认端口8000 修改默认端口 文档中描述,其中JPDA_ADDRESS就是远程调试模...

  • 2018-12-10今日份

    每日面试题 面向服务的路由 过滤器的使用场景 过滤器 默认的路由规则 负载均衡和熔断 什么是CAP理论?

  • android wifi调试

    android 可以使用adb链接usb调试和无线wifi调试,默认是usb调试1、用数据线连上手机,打开adb命...

  • gateway filter

    gateway 配置 使用注册中心默认路由 GatewayFilter 定义过滤器,针对单个服务生效 配置过滤器 ...

  • django自定义标签学习整理(simple_tag、inclu

    前言介绍 Django 默认提供了很多有用的 内置标签和过滤器[https://docs.djangoprojec...

  • Dart 基础

    JIT 与 AOT Dart 是少数同时支持 JIT(Just In Time,即时编译)和 AOT(Ahead ...

网友评论

      本文标题:10.默认过滤器和JIT调试

      本文链接:https://www.haomeiwen.com/subject/ltjxxftx.html