首页 > 系统相关 >进程异常退出分析小计

进程异常退出分析小计

时间:2024-07-13 23:33:58浏览次数:14  
标签:EXCEPTION POINTERS 小计 堆栈 内存 heap 进程 异常

一、内存泄漏

  内存泄漏是进程运行一段时间后退出,并且看到内存特别大,基本上大几百M或者超过1G,dump异常堆栈都是在申请内存的时候崩溃,下面看下如何定位分析泄漏原因

  1.1 使用!heap -s看下总体内存大小

  

  1.2 使用!heap -stat -h 命令查看具体堆使用情况

  

  1.3 查看比较大占用内存后,使用!heap -flt s 218查看具体大小内存的堆使用地址

  

  1.4  使用!heap -p -a address查看具体地址堆栈

  

  1.5 如果没看到堆栈,可以使用gflags设置对应进程的参数,这样在崩溃的时候能看到堆栈

   

  1.6 如果还是无法定位堆栈,就调试下断点,尝试复现抓到泄漏堆栈

  bp ntdll!RtlAllocateHeap "j (poi(esp+c)=218) '';'gc'"

 

二、进程异常退出,解析UnhandledExceptionFilter参数定位异常堆栈

  2.1 看到异常堆栈在UnhandledExceptionFilter函数,可以看该函数参数

LONG UnhandledExceptionFilter(
  [in] _EXCEPTION_POINTERS *ExceptionInfo
);、
typedef struct _EXCEPTION_POINTERS {
  PEXCEPTION_RECORD ExceptionRecord;
  PCONTEXT ContextRecord;
} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;

  

  2.2 其中ExceptionInfo.ContextRecord可以看到异常信息

  dx -r1 (_EXCEPTION_POINTERS *)(address)

  

  然后 .cxr 0x18bef38可以看到异常堆栈

   

 三、

 

标签:EXCEPTION,POINTERS,小计,堆栈,内存,heap,进程,异常
From: https://www.cnblogs.com/ciyze0101/p/18300974

相关文章

  • 20个异常处理的最佳实践
    尽量不要catchRuntimeException,比如NullPointerException、IndexOutOfBoundsException等等,应该用预检查的方式来规避。尽量使用try-with-resource来关闭资源:禁止在try块中直接关闭资源,因为一旦close()之前发生了异常,那么资源就无法关闭不要捕获Throwable:很可能......
  • 异常处理全面解析
    checked和unchecked异常checked异常(检查型异常)在源代码里必须显式地捕获或者抛出,否则编译器会提示你进行相应的操作;而unchecked异常(非检查型异常)就是所谓的运行时异常,通常是可以通过编码进行规避的,并不需要显式地捕获或者抛出。NoClassDefFoundError:程序在编译时可以找......
  • SpringMVC异常处理器,通过注解方式配置
    SpringMVC在处理器方法执行过程中出现了异常,可以采用异常处理器进行应对。一句话概括异常处理器作用:处理器方法执行过程中出现了异常,跳转到对应的视图,在视图上展示友好信息。配置ExceptionControllerpackagecom.powernode.springmvc.controller;importorg.springframewo......
  • Android C++系列:Linux进程间关系
    1.终端在UNIX系统中,用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进程的控制终端(ControllingTerminal),在前面文章我们说过,控制终端是保存在PCB中的信息,而我们知道fork会复制PCB中的信息,因此由Shell进程启动的其它进程的控制终端也是这个终端。默认情况......
  • python进程和线程_day013
    python进程和线程概念相关进程概览线程概览Python中的多进程Python中的多线程多进程还是多线程单线程+异步I/O(协程)应用案例示例1:将耗时间的任务放到线程中以获得更好的用户体验示例2:使用多进程对复杂任务进行“分而治之”。今天我们使用的计算机早已进入多CPU或多核......
  • java异常分类和处理方式
    异常的概念首先,java中的异常是以类的形式存在的,也就是说,每一种异常实际上都是一种特殊的类。这里根据百度开发者社区的定义可以验证:Java异常体系主要由Throwable类及其子类构成。Throwable是所有错误和异常的超类,它有两个直接子类:Error和Exception。(其实不严格的来说有三......
  • Java异常详解及自定义异常
    认识异常,掌握异常处理主要的5个关键字:throw、try、catch、final、throws并掌握自定义异常目录1、异常概念与体系结构1、1异常的概念1、2异常体系结构 1、3异常的分类编译时异常:运行时异常:2、异常处理 2、1防御式编程2、2异常的抛出2.3异常的捕获2.3.1异常声......
  • [Java]面试官:你对异常处理了解多少,例如,finally中可以有return吗?
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/18299911出自【进步*于辰的博客】参考笔记一,P35.4/5。目录1、介绍2、try...with...resources最后1、介绍相信大家对try...catch...finally都很熟悉了,在此我提一点使用细......
  • 进程和线程之间的区别
    进程与线程的区别总结线程具有许多传统进程所具有的特征,故又称为轻型进程(Light—WeightProcess)或进程元;而把传统的进程称为重型进程(Heavy—WeightProcess),它相当于只有一个线程的任务。在引入了线程的操作系统中,通常一个进程都有若干个线程,至少包含一个线程。根本区别:进程......
  • 【日常记录-Java】自定义进程池
    Author:赵志乾Date:2024-07-12Declaration:AllRightReserved!!!1.简介    服务器上有些进程需要池化管理,使用SpringBoot构建Web服务提供管理api,内部使用自定义的进程池维护已启动的进程;    核心点: 进程池管理的进程都会使用系统的一个端口对外提供服务; ......