Azure网站:如何收集内存转储文件(memory dump file)

Azure网站:如何收集内存转储文件(memory dump file)

转载自:http://www.waws.cn/197

关于更多内存转储文件收集、分析的内容,请访问www.debugging.com.cn

内存转储文件,顾名思义,就是将内存中的数据转储保存在转储文件中(通常为.dmp文件),技术人员可以通过分析该文件查找软件错误的原因。收集内存转储文件时,通常需要登录到问题机器运行特定的工具。下面的文档列出了几个常用工具。
Choosing the Best Tool
http://msdn.microsoft.com/en-us/library/windows/hardware/ff539117(v=vs.85).aspx

内存转储文件是一个比较冷门的概念,即使一些资深的技术人员也可能对此很生疏。在开始之前,我们介绍一下内存转储文件的基本概念。内存转储文件相当于一个内存的snapshot,在特定问题发生的时候对进程或者整个系统的内存状态进行一次“照相”,将当前的内存状态保持到文件中。这个文件就称为内存转储文件,通常是.dmp文件。内存转储文件包含进程或者系统的瞬时状态,比如当前正在执行的函数、CPU指令等,以及内存、句柄、CPU等资源的使用情况等等。

根据错误类型,内存转储文件可以分为两类:

    • Crash Dump

主要用于排查应用程序或者系统崩溃的问题,比如应用程序异常终止,闪退;Windows系统蓝屏错误等。当收集用户态进程的Crash模式的内存转储文件时,收集工具的工作原理如下:

      1. 附加(attach)到目标进程
      2. 监听应用异常,比如AV(Access Violation/访问违例/非法访问 不是Adult Vedio)
      3. 当指定的异常发生后,将目标进程的内存保存到文件中
      4. 根据指定的选项终止目标进程或者允许目标进程继续运行

 

    • Hang Dump

主要用于排查应用程序或者Windows性能问题。比如系统运行缓慢,应用性能变差,资源(CPU/内存)使用率上升、资源泄露等等。当收集Hang模式的内存转储文件时,收集工具的工作原理如下:

    1. 附加(attach)到目标进程
    2. 挂起(suspend)所有的线程
    3. 将目标进程的内存保存到文件中
    4. 恢复(resume)线程的运行
    5. 收集程序脱离目标进程

根据转储的对象,可以分为两类:

    • Kernel Mode Dump

用于排查Windows系统问题,通常Kernel内存转储文件中包含整个系统内存的镜像。

    • User Mode Dump

用于排查应用程序问题,通常包含应用程序对应的进程使用的内存的镜像。

根据转储文件包含的信息,可以分为两类:

    • Full Memory Dump

Full Memory Dump将应用程序或者完整的系统的内存保存到转储文件中。该文件通常较大。文件大小与应用或者系统使用的内存一致。

    • Mini Memory Dump

Mini memory Dump可以只包含指定的信息,比如只包含线程信息等等。具体选项可以参考下面的文档。
Minu Dumps
http://msdn.microsoft.com/en-us/library/windows/hardware/ff552212(v=vs.85).aspx

在Azure网站中,用户无法登陆到运行网站的虚拟机,因此也无法直接运行收集内存转储文件的工具。本系列将介绍如何在Azure网站中收集内存转储文件,包括:

    • 如何收集Hang模式的内存转储文件
    • 如何收集Crash模式的内存转储文件
    • 如何自动收集内存转储文件
    • 利用DaaS收集并自动分析内存转储文件
posted @ 2015-01-02 09:59  桦仔  阅读(681)  评论(0编辑  收藏  举报