目录

一、前言

二、关于page files设置

四、手动蓝屏方法

1、使用NotMyFaul Tool生成0xD1蓝屏

2、使用NMI生成0x80蓝屏

3、使用keyboard键盘生成0xE2蓝屏

4、使用WinDbg调试器

五、写在最后

六、参考资料


一、前言

系统崩溃(system crash)也称为bugcheck或者停止错误,会在系统无法正常工作时发生蓝屏,通过CrashDump机制在系统下生成崩溃转储文件,称为系统崩溃转储文件。其中CrashDump是一种操作系统调用存储适配器驱动程序将内存内容写入转储文件的机制,在系统崩溃时相关进程会捕获系统内存记录生成内核或者完全内存转储文件(Kernel or memory dump file),这些文件通常用于crash问题的排查。

关于系统蓝屏,分自动蓝屏和手动蓝屏两种方法,结合系统设置、注册表或者工具实现。手动蓝屏一般用于系统未自动发生蓝屏,但是需要触发蓝屏来对内存进行转储来分析问题的情况下,可通过微软工具NotMyFault、keyboard快捷键、Debugger等方式进行蓝屏触发,从而完成内存转储获取转储文件。在此之前,需要对内存转储进行设置,包括设置pagefile、开启内存转储设置。

二、关于page files设置

Page files是硬盘上可选的隐藏系统文件,可用于备份系统崩溃转储,并扩展系统可支持的系统提交内存(“虚拟内存”)。要完成再系统崩溃期间创建故障转储文件,需要page file或者专用的转储文件向磁盘写入崩溃转储文件(Memory.dmp),因此page file或者专用的转储文件要足够大,否则不会创建系统内存转储文件。

由系统管理的page file文件大小的要求取决于系统崩溃转储设置。对于小内存转储类型,要求的page file最小为1MB;对于完全内存转储类型,page file的最低要求是一个物理RAM大小再加上257MB;另外的内核内存转储以及自动内存转储两种类型,取决于内核虚拟内存的使用率,后者会根据系统崩溃的频率自动选择最佳页面文件大小。

以微软技术工程师一次使用键盘触发蓝屏收集Memory Dump为例,在触发蓝屏之前,会先进行如下设置:

reg add "HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management" /v PagingFiles /t REG_MULTI_SZ /d "C:\pagefile.sys 8492 8492" /f
reg add "HKLM\System\CurrentControlSet\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "C:\Windows\Memory.dmp" /f
reg add "HKLM\SYSTEM\CurrentControlSet\Services\kbdhid\Parameters" /v CrashOnCtrlScroll /t REG_DWORD /d 1 /f
reg add "HKLM\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters" /v CrashOnCtrlScroll /t REG_DWORD /d 1 /f
reg add "HKLM\System\CurrentControlSet\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f

其中关于pagefile.sys的设置,应该为8192+300MB,即8G+300MB。

三、启用内存转储设置

在未指定其他转储方式和转储路径时,启用系统内存转储设置将会在系统发生蓝屏时在指定路径自动生成转储文件。通过系统设置内存转储需要管理员权限,另外如果计算机已连接网络,那么网络策略设置可能会阻止内存转储过程。启用内存转储设置方法为:

  • Windows开始菜单,点击设置按钮进入Windows设置页面。

  • 点击系统-->关于-->高级系统设置,进入系统属性页面。

  • “高级”标签页,然后设置“启动和故障恢复”。

  • “系统失败”区域进行转储类型、转储文件路径等的设置,最后重启计算机以设置生效。

关于转储文件路径的选择,要保证路径所在的磁盘具备足够大小的空间。默认情况下会将内存转储写至 %SystemRoot%\Memory.dmp文件。如果在 %SystemRoot%驱动器上没有足够的可用空间,可以将该转储文件重定向到另一个具有足够的可用空间的位置(所需空间大小请参考Pagefile size)。当系统发生crash和重启,物理RAM的内容将会被写入已安装操作系统分区上的分页文件(paging file),其转储的速度依赖于硬盘的速度。如果转储文件设置成存储在另外的本地硬盘,那么大量的数据将会在硬盘上发生读写,这可能导致长时间的服务停机。任何内核或者完全内存转储文件的调试都应该是在其他标准排查方法无效情况下作为最后的选择。

四、手动蓝屏方法

一般情况下,系统遇到严重错误会自动调用函数触发蓝屏,但也存在很多没有发生蓝屏的异常场景,如系统或者某应用窗口发生hang死,需要转储文件来对问题进行排查,那么可以通过手动蓝屏的方式实现对内存的转储。

1、使用NotMyFaul Tool生成0xD1蓝屏

当系统下某些进程发生hang,或者发生其他异常但键盘鼠标可操作情况下,可以使用微软Sysinternals工具NotMyFaul来触发系统蓝屏,从而对内存进行转储分析。NotMyFaul工具用于系统下crash,将会触发0xD1蓝屏。

工具的具体使用方法为:1、官网下载NotMyFaul Tool;2、启动crash。

关于第二步,可以打开NotMyFaul的图形UI窗口进行选择触发动作种类进行crash:另外,也可以通过命令触发系统crash:

1. 管理员身份打开cmd
2. 进入NotMyFaul目录,输入命令运行noteMyfault.exe进行crash:
notMyfault.exe /crash

2、使用NMI生成0x80蓝屏

NMI,全称为Non-Maskable Interrupt,即常说的不可屏蔽中断。在某些场景下,不能通过键盘来产生崩溃转储文件,须通过NMI开关在系统处理器上产生一个NMI来生成崩溃转储文件。比如,某些服务器基于网络浏览器图形用户界面,不能通过键盘来使系统蓝屏。

在Windows 8 和Windows Server 2012以前的Windows操作系统需要设置注册表,之后的操作系统无需设置。修改方法为:一般情况下,如果注册表存在损坏或者注册表修改不正确,那么可能会出现严重的问题,所以在修改注册表之前,最好先做好备份。

如果要使用NMI来产生崩溃转储文件,如硬件平台有提供自动系统恢复(ASR)的特性,那么需要关闭此特性。具体地,一般可以在BIOS中开启NMI开关,具体方法可以参考BIOS手册或者联系硬件供应商提供开启方法。如果发生一个NMI,那么将会看见一个STOP 0x80的硬件故障。

3、使用keyboard键盘生成0xE2蓝屏

系统运行过程中,当发生hang死或者黑屏或者其他场景需要强制系统蓝屏来对内存进行转储,可以通过键盘来实现崩溃转储的触发。键盘主要分三种,一种是基于i8042prt端口的PS/2键盘,一种是USB键盘,另一种是Hyper-V键盘。这三种键盘在不同Windows版本可用性上存在差异,其中,Hyper-V键盘用于Windows 10 1903及之后的版本。

这里通过键盘来强制系统发生崩溃也主要通过修改注册表实现。首先通过修改注册表对键盘触发系统崩溃进行设置,在实际的场景下根据需求通过键盘进行崩溃的触发。以USB键盘强制系统崩溃为例,通过如下方法对注册表进行设置:另外基于i8042prt端口的PS/2键盘和Hyper-V键盘的设置与上述一样,只需将注册表子项中的“kbdhid”替换为“i8042prt”或者“hyperkbd”。在实际的场景中,需要按住最右边Ctrl键,然后按两次ScrLk键来触发蓝屏。系统会调用KeBugCheck函数并发出0xE2的bug check,然后写入崩溃转储文件。

4、使用WinDbg调试器

如果机器正在通过WinDbg或者KD调试器进行内核模式的调试,那么可以通过输入.crash命令来强制系统崩溃。如果输入此命令后没有立即崩溃,那么可以输入g命令查看。同样,输入此问题后,系统会调用KeBugCheck函数并产生0xE2的bug check,然后写入崩溃转储文件。

当崩溃转储文件被写入之后,主机上的内核调试器会被提醒并且可以用来调试崩溃的机器。

五、写在最后

一般情况下,系统蓝屏之后会自动对内存进行转储,然后在系统下生成崩溃转储文件。在某些情况下,系统虽然蓝屏,但是蓝屏进度一直停留在0%,通常这种错误是由于磁盘驱动器导致的,可以尝试升级磁盘驱动器或者联系SSD厂商进行问题排查。当然也有可能是系统其他的原因,以上文提到的pagefile为例,如果pagefile不够大,那么也将会发生转储失败。

另外,对于应用层面的问题不是都得通过触发蓝屏来收集转储文件,根据实际场景选择触发或者不触发蓝屏来获取转储文件。触发系统蓝屏可以从系统层面来获取进程信息,而不触发可以从应用层面来进行获取信息进行分析。以进程hang为例,假设某应用程序发生hang,一方面我们可以通过上述的几个触发蓝屏的方法来收集转储文件,另一方面也可以在任务管理器中右键指定的进程,选择“创建转储文件”来获取此进程的转储文件。

六、参考资料

1、系统崩溃方法

2、创建转储文件

3、使用键盘转储

4、使用调试器

5、pagefile设置

蓝屏总结(二)——系统蓝屏及转储方法相关推荐

  1. 【WIN10蓝屏】win10系统蓝屏原因调查

    相信大家在使用win10系统时,或多或少的都会遇见蓝屏情况,我曾经一直被蓝屏问题困扰一年多 今天实在受不了了,下定决心折腾一下,于是使用各种方法,终于找到了突破口,废话不多说,直接上图. 当发生蓝屏后 ...

  2. 服务器系统蓝屏代码0101,系统蓝屏问题常规处理步骤

    蓝屏(Blue Screen)错误可能是Windows系统中比较常见的一种错误.而且对于我们大多数人来说,发生蓝屏之后可能就束手无策了.这里介绍一些发生蓝屏错误时的一些办法.办法很多,但是今天这部分, ...

  3. android 系统截屏原理,Android 系统副屏截屏功能

    收到一个客户需求,要求对双屏设备的副屏进行截图.查询资料后发现,系统截图有两种方法,一种是通过SurfaceControl.screenshot提供的接口调用,还有一种是通过screencap 命令获 ...

  4. iphone屏幕镜像如何全屏_苹果系统截屏录屏+标记剪辑功能详解( iPhone/iPad/Mac)

    苹果系统中的截屏和录屏.标记和剪辑功能一如它的其他产品设计,做得非常细致.在我们日常的工作中,不免会遇到这些功能,今天小编就给大家详细讲解下苹果系统截屏录屏.标记剪辑功能,希望对大家有所帮助! 001 ...

  5. W ndows7蓝屏0x00000024,win7系统蓝屏0x00000024代码的解决方法

    在win7系统下,电脑出现蓝屏是时有发生的问题,当电脑系统缺少文件.兼容性出现问题时,那么就会造成win7系统出现蓝屏的问题,对于用户出现蓝屏我们可根据相应的代码进行解决即可,今天河东软件园以win7 ...

  6. 戴尔服务器安装系统出现蓝屏重启,服务器安装系统蓝屏原因_dell服务器安装系统设计.docx...

    本文档介绍了在不使用Dell Open Manage Server Assistant (DOSA)光盘引导的情况下,如何安装 Windows 2003 Server 到您的 Dell PowerEd ...

  7. W ndows7蓝屏0x00000024,Windows7系统蓝屏代码大全

    00x0000作业完成. 10x0001不正确的函数. 20x0002系统找不到指定的档案. 30x0003系统找不到指定的路径. 40x0004系统无法开启档案. 50x0005拒绝存取. 60x0 ...

  8. 系统蓝屏的几种姿势,确定不了解下么?

    前言 在 蓝屏(BSOD)转储设置,看本文就够了!这篇文章里比较详细的介绍了蓝屏转储设置.做好设置后,我们就可以在需要的时候使系统蓝屏了.本文介绍几种使系统蓝屏的办法,当然肯定还有其它办法,如果哪位小 ...

  9. android传屏器怎么获取热点,手机做热点怎么投屏 为你介绍投屏的方法

    为了让人们获得更多视频体验,投屏技术便被广泛的应用,很多的朋友们都非常的关注投屏的问题.那么,手机做热点怎么投屏呢?是不是也想获得更多的投屏知识?那就跟随着我们一起来学习吧. 手机做热点怎么投屏 1. ...

  10. ensp启动设备蓝屏_Windows 10系统遇到蓝屏怎么解决?

    ​针对以下常见的蓝屏错误代码进行问题排除,并未提供所有错误代码的列表,但由于许多错误代码可能具有相同的解决方案,因此最佳做法是按照以下步骤操作来对蓝屏错误进行问题排除. CRITICAL_PROCES ...

最新文章

  1. 心得体悟帖---开解语录
  2. 多租户的数据库方案分析
  3. golang 日志分析_容器日志采集利器:Filebeat深度剖析与实践
  4. 数据恢复软件(绝对真实可用)
  5. 【Pytorch神经网络理论篇】 24 神经网络中散度的应用:F散度+f-GAN的实现+互信息神经估计+GAN模型训练技巧
  6. c++ascii码转换为数字_在C++中将字符串转换为数字
  7. 报告正在使用哪些Reporting Services数据集字段?
  8. python函数类_python函数、类
  9. 多线程(一) NSThread
  10. my ReadBook_zhulidianzishangwushi / dianzishangwushi
  11. Win10 LTSC 2021安装及相关bug解决
  12. 基础练习 特殊回文数 C语言
  13. 34个非常实用的JS一行代码
  14. Pandas拼接、数据分析实操
  15. 电脑显示没有被指定在上运行_win7运行QQ时出现“.dll没有被指定在Windows上运行,或者它包含错误”如何解决...
  16. USB专用充电端口(DCP) MST2515
  17. cocos creator 插件开发
  18. c语言实现动态二维数组
  19. 关于Vue渐进式框架的理解
  20. 正版win10系统安装方法、硬盘安装win10系统、直接电脑安装win10系统、无需u盘装win10系统、菜鸟安装win10系统、云服务器装win10系统

热门文章

  1. 短距离无线传输-WIFI
  2. delphi10.2 将网页页面带格式复制到word中。
  3. 医学图像3D目标检测
  4. Windows10微软商店打不开怎么办?
  5. 研究生期间各方面规划
  6. cavas的验证码效果demo
  7. 方大九钢携手图扑软件:数字孪生智慧钢厂
  8. 第十一章:项目风险管理 - (11.4 实施定量风险分析)
  9. matlab 差分 平稳时间序列,利用时间序列模型预测贵阳市烟草生长期内的降水量...
  10. SU战队专访:破而后立,晓喻新生