原文地址:http://80x86.io/post/windows-blue-screen-0x00000050-page_fault_in_nonpaged_area

这里只截取一部分。

windows死掉时,为什么“没有”产生dump文件?这个问题依旧不明。 于是再次用神一样的Google找到了答案。

windows可以产生三种不同的dump文件: 完全内存dump 内核内存dump 迷你内存dump(64KB)

Windows can generate any one of the following memory dump file types:

  1. Complete memory dump
  2. Kernel memory dump
  3. Small memory dump (64 KB)

而通常系统产生的是Small memory dump (64 KB),其位置默认在 C:\Windows\Minidump

而此次蓝屏我却没有在这里找到任何dump文件。为什么? 这跟和dump文件产生相关的启动配置有关。 windows的dump文件产生存在一定的规则,这些规则包括: 对于Complete memory dump: If a second problem occurs and another complete memory dump (or kernel memory dump) file is created, the previous file is overwritten.

对于Kernel memory dump: If a second problem occurs and another kernel memory dump file (or a complete memory dump file) is created, the previous file is overwritten when the 'Overwrite any existing file' setting is checked.

对于Small memory dump: If a second problem occurs and a second small memory dump file is created, the previous file is preserved. Each additional file is given a distinct name. The date is encoded in the file name. For example, Mini022900-01.dmp is the first memory dump generated on February 29, 2000. A list of all small memory dump files is kept in the %SystemRoot%\Minidump folder.

详情见:http://support.microsoft.com/kb/254649

由此可见: Complete memory dump在蓝屏再次发生时会被无条件覆盖掉,而Kernel memory dump是否被覆盖要看配置( HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl分支下的Overwrite值是否为1,为1值覆盖。 ),Small memory dump则总是被保留。

于是我看了下我的win 7 的配置:

我这里勾选了“自动重启”,也就是说,蓝屏之后,马上会重启,根本没时间去看蓝屏代码了。那么我是怎么看到蓝屏代码的?开机时按F8,然后选择 Disable automatic restart on system failure 选项启动,就可以无视那个自动重启配置了。

然后,我看到,我这里配置的dump类型居然是Kernel memory dump ,记得默认应该是Small memory dump (64 KB)的。 既然是Kernel memory dump ,为什么在%SystemRoot% (C:\Windows)下面没有看到 MEMORY.DMP 文件? 原因是 memory.dmp 文件的存储/删除算法。其算法如下:

a. 首先把内核错误报告给Online Crash Analysis Service. b. 然后,如果机器注册表中 AlwaysKeepMemoryDump 项的值被设置为 1, 那么将dump文件存储在磁盘。 c. 否则, 如果机器上的操作系统是Windows Server SKU, 那么将dump文件存储在磁盘。 d. 再则, 如此这台机器加入了windows域 (如一些大公司的工作站会有域服务器,工作站可以加入某个域), 那么将dump文件存储在磁盘。 e. 否则, 如果机器不属于某个域(而是属于某个workgroup,通常家用电脑是这样),那么就进行如下判断: 如果磁盘空闲容量 >= 25GB, 那么将dump文件存储在磁盘。 否则 (磁盘空闲容量 < 25 GB), 删除dump文件.

很明显,我这里的情况是AlwaysKeepMemoryDump值为0. 即使到害最后一种,也无法保留dump文件。。。看了下,我的C盘的剩余容量只有12.7GB了。 好了,现在解释了为什么dump文件没有在我的电脑上保存下来。

AlwaysKeepMemoryDump 的确切位置是:

  1. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl ! AlwaysKeepMemoryDump Type: REG_DWORD.

修改成Small memory dump ,然后把那个自动重启也给去掉。以备防止以后crash系统能保存dump文件。

====================================================

Small memory dump (64 KB) 文件的保存策略: kernel minidumps 文件默认保存在 %SystemRoot%\Minidump 目录下。 而这个位置值也是在注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl 分支下的。键名为 MinidumpDir . kernel minidumps 文件的保存策略相对来说比较简单。它是根据以下注册表项来决定是否保存dump文件到磁盘的:

  1. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl ! MinidumpsCount Type: REG_DWORD, default value is 50

minidump分析工具

bluescreenview

由nirsoft出品的一个小工具。很实用。 BlueScreenView scans all your minidump files created during 'blue screen of death' crashes, and displays the information about all crashes in one table. For each crash, BlueScreenView displays the minidump filename, the date/time of the crash, the basic crash information displayed in the blue screen (Bug Check Code and 4 parameters), and the details of the driver or module that possibly caused the crash (filename, product name, file description, and file version). For each crash displayed in the upper pane, you can view the details of the device drivers loaded during the crash in the lower pane. BlueScreenView also mark the drivers that their addresses found in the crash stack, so you can easily locate the suspected drivers that possibly caused the crash.

 

=====================================================

Minilyzer

这是一个利用windows调试工具分析dump文件的Windows shell脚本文件。 它还支持分析 Full memory dumps (C:\Windows\Memory.dmp) 。

Minilyzer is a Windows shell script that uses Microsoft’s Debugging Tools for Windows to analyze the Minidump files that are created when a BSOD occurs and generate a report detailing the event. Full memory dumps (C:\Windows\Memory.dmp) can also be analyzed.

下载: http://patrickmylund.com/projects/minilyzer/ github地址: https://github.com/pmylund/minilyzer


参考文档

http://support.microsoft.com/kb/254649

Kernel-Mode Dump Files

Kernel dump storage and clean up behavior in Windows 7

SKU: SKU是一个通用零售的专业词汇,是英文Stock-Keeping Unit 的缩写,字面意思是库存量单位, 简称SKU,定义为保存库存控制的最小可用单位,这是企业为了方便商品仓库管理而分配的商品编号,一种归类的方法. 详见: http://en.wikipedia.org/wiki/Stock_keeping_unit

蓝瓶的钙,好喝的钙——windows,我要蓝屏的的更多相关文章

  1. 分析Windows的死亡蓝屏(BSOD)机制

    这篇文章本来是投Freebuf的,结果没过.就贴到博客里吧,图懒得发上来了 对于Windows系统来说,被人们视为洪水猛兽的蓝屏也是一种有利于系统稳定的机制.蓝屏其实是Windows系 统的一种自查机 ...

  2. windows监控 排查蓝屏问题

    DUMP包分析 工具WinDbg,下载打开,按ctrl+S  输入:SRV*C:\websymbols*http://msdl.microsoft.com/download/symbols:点击OK, ...

  3. Windows Server 2003 蓝屏 -- 系统故障:停止错误

    Windows Server 2003  EE 出现蓝屏: 0X0000004D (0X000f27D9, 0X000F27D9, 0X0000000C, 0X00000000) 蓝屏拍照: 重启机器 ...

  4. Windows Server 2012 蓝屏 Wpprecorder.sys 故障

    坑爹的园区昨天停电了,导致运行中的服务器中断,来电之后,其中有一台Windows 系统的服务无法运行了,接了个显示器,发现无法进入系统了,挂掉了,这下可完蛋了,虽然做了Radio 磁盘阵列,数据不会丢 ...

  5. Windows常见蓝屏故障分析

    转自Windows常见蓝屏故障分析 症状描述: 当您在运行Microsoft Windows 2000/XP/Server 2003.Microsoft Windows Vista/Server 20 ...

  6. Windows 7 蓝屏代码大全 & 蓝屏全攻略

    关于Windows 7.Vista等系统的蓝屏,之前软媒在Win7之家和Vista之家都有很多文章讨论过,但是都是筛选的常见的一些问题,今天这个文章是个大全,希望大家看着别头痛,文章收藏下来以后待查即 ...

  7. Windows 7 蓝屏代码大全 &amp; 蓝屏全攻略

    关于Windows 7.Vista等系统的蓝屏.之前软媒在Win7之家和Vista之家都有非常多文章讨论过,可是都是筛选的常见的一些问题,今天这个文章是个大全.希望大家看着别头痛.文章收藏下来以后待查 ...

  8. windows 8.1 下蓝屏报错:SYSTEM_SERVICE_EXCEPTION(NETIO.SYS)的解决办法

         大概2周前,电脑突然蓝屏了,我上网查了一下解决办法,因为大部分内容是英文的,所以我只大概看了下,看到这个问题好像是由于软件冲突造成的,于是就把小红伞去掉了,而那天电脑也真的没有再蓝屏(之前大 ...

  9. 烂泥:kvm安装windows系统蓝屏

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 最近一直在学习有关KVM的知识,实验一直是在虚拟机VM中进行的.今天刚好公司有一台空闲的服务器,直接拿来安装centos.kvm等等,然后相关的配置. ...

随机推荐

  1. 3.2 shell输入输出

    shell输入与输出: read : read语句可以从键盘或者文件的某一行文本中读入信息,并将其赋值给一个变量. read  var1  var2  ...    若只指定了一个变量,那么read将 ...

  2. Windows10中启用原来的Windows照片查看器方法

    前言: ============================================== Windows10 版系统自带很多垃圾应用,图片查看器弄得很不好用,还是习惯Windows7的,自 ...

  3. 【java编程】重写HashCode和equals方法

    [一]重写equals方案的规则 equals方法本来的原则 1.类的每个实例本质上都是唯一的. 2.不关心类是否提供了“逻辑相等”的测试功能 3.超类已经覆盖了equals,从超类继承过来的行为对于 ...

  4. Struts2重新学习之自定义拦截器(判断用户是否是登录状态)

    拦截器 一:1:概念:Interceptor拦截器类似于我们学习过的过滤器,是可以再action执行前后执行的代码.是web开发时,常用的技术.比如,权限控制,日志记录. 2:多个拦截器Interce ...

  5. 将string str中的str转换成字符数组

    #include <iostream> #include <map> #include <string.h> using namespace std; int ma ...

  6. day26 python学习 对象的接口,封装,私用属性 property

    # 抽象类和接口类 #** #不崇尚接口类 #python本身支持多继承,没有接口专用的语法.但是我知道接口的概念 # 接口类:# 是规范子类的一个模板,只要接口类中定义的,就应该在子类中实现# 接口 ...

  7. 如何取出word文档里的图片

    在生活当中,Word办公是必不可少的.但是在工作中也会遇到一些麻烦,比如说如何取出word文档里的图片呢?有的人会通过复制粘贴,通过画图保存,可是这种方法未免太繁琐了吧.下面我就来分享一下我的经验. ...

  8. JMeter:生成漂亮的多维度的HTML报告

    JMeter:生成漂亮的多维度的HTML报告我们做性能测试的时候会经常使用一些性能测试工具,我个人比较喜欢Jmeter这个工具,但是JMeter这个工具在生成测试报告方面一直有所欠缺.但是JMeter ...

  9. azkaban:java任务调度系统

    github:https://github.com/azkaban/azkaban 官方网站:https://azkaban.github.io/ 好的介绍文章:http://srcct.com/20 ...

  10. Ubuntu 安装lrzsz工具

    rz(上传) sz(下载)) 1. 安装 sudo apt-get install lrzsz 2. rz可覆盖原文件 rz -y