top

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 @   桦仔  阅读(683)  评论(0编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
历史上的今天:
2013-01-02 SQLSERVER的排序问题
点击右上角即可分享
微信分享提示