理解Windows Vista和Windows 7中的崩溃转储文件
发布时间:2023-09-08 00:40:11
默认情况下,Windows配置为当系统发生崩溃时尝试自动抓取一个当前操作系统的状态信息。接下来我们将讨论系统故障,非应用程序失败。Dump选项可以通过控制面板中的系统工具来进行设置。我们打开系统属性—高级选项卡,找到启动和故障恢复,点击设置,我们就可以看到Dump默认情况下,Windows配置为当系统发生崩溃时尝试自动抓取一个当前操作系统的状态信息。接下来我们将讨论系统故障,非应用程序失败。Dump选项可以通过控制面板中的系统工具来进行设置。我们打开系统属性—高级选项卡,找到启动和故障恢复,点击设置,我们就可以看到Dump文件的相关配置。当系统发生崩溃时,有3类Dump文件可以被捕获:
完全内存转储:当崩溃发生时,将捕获整个物理内存的状态。此类转储文件大小为内存中页面文件大小+1MB的文件头。Windows NT4只支持完全内存转储,当然这也是Windows Server Systems的默认设置。
核心内存转储:当崩溃发生时,核心内存转储只捕获物理内存中内核态的页面文件读/写数据。这只是内核态的转储,并不包括用户态进程的页面。不过,由用户态进程页引起系统崩溃是不大可能的,通常都是由内核态引起。核心内存转储中包括:当前运行进程、线程和被加载的驱动等相关信息。核心内存转储文件大小=操作系统内核态内存占用大小+操作系统为驱动程序分配内存的大小。
小内存转储:小内存转储(又叫Mini-dump)是一个64K的转储文件(64位系统和Windows7里是128K,Vista512K),它包括:终止代码、参数和被加载的驱动列表。主要信息为崩溃时的当前进程、线程和内核堆。
注意:有的情况下我们需要进行完全内存转储,手动进行完全内存转储为程序停止响应的排错提供了最为丰富的信息。因为当程序Hang住时,我们需要查看用户态进程、死锁等等信息。不过,当你在选择捕获哪种Dump文件时,一定要考虑好捕获出来的文件大小。如上所述,完全内存转储文件大小会是在物理内存大小的基础上+1MB。(笔者8GB内存,再加1MB。恐怖啊……)
前面我们回顾了3种类型的Dump文件,实则在日常的工作中核心内存转储是我们系统崩溃和Bug检查时最常用到的。请记住,核心内存转储文件大小仅基于内核态内存占用和驱动内存占用。(在有更多内存的系统上,Dump文件过大是正常的。)目前我们还无法精准的计算核心内存转储文件大小,你可以尝试手动配置核心内存转储来查看页面文件是否足够大。对于设置最小的核心内存转储大小我们有一定的指导方针,但对于最大值目前还没办法:
物理内存 最小页面文件 (Kernel Dump)
< 128MB 50MB
< 4GB 200MB
< 8GB 400MB
>= 8GB 800MB
如果你担心页面文件设置过小,无法很好的捕获核心转储,我们唯一的办法就是通过KB244139所描述的方式使用CrashOnCtrlScroll方法造成手动崩溃。系统重启之后,我们可以手工查看Dump文件大小。另一种方法是在启动分区上手动设置2GB+1MB的页面文件大小(32位系统),这是因为32位操作系统内核态最大地址空间就是2GB。
除了配置正确的页面文件大小之外,我们也需要确保有足够的磁盘空间让Dump文件能够被正确的写入。与页面文件用来捕获Dump不同,Dump文件可以被写入其它的本地分区。在保存多个Dump文件时,请取消选择“覆盖任何现有文件”。不过请记住,这会给剩余的磁盘空间造成很大的压力。
下面我们来看Dump文件是如何被产生的。当系统启动时,会到注册表HKLM\System\CurrentControlSet\Control\CrashControl 读取崩溃转储选项。所有在图形界面所做的操作都会修改如 * 册表值:
将事件写入系统日志=LogEvent
自动重新启动= AutoReboot
写入调试信息= CrashDumpEnabled
转储文件= DumpFile
覆盖任何现有文件= Overwrite
如果你的系统超过2GB内存,在图形界面中你将不会看到完全内存转储选项。其原因在KB274598中进行了描述。但我们可以通过将HKLM\System\CurrentControlSet\Control\CrashControl下的CrashDumpEnabled值设置为1来强制启用它(改这个值在图形界面中完全内存转储仍不会显示出来)。如果你需要完全内存转储来做更详尽的排错,也可以考虑使用Boot.ini中的MAXMEM开关将32位操作系统所使用的内存限制在2GB或更少(可以参考KB108393),此时系统就会将完全内存转储选项显示来。
现在回到Dump文件如何被产生这个话题。一旦转储功能被启用,操作系统会自动写一个以“Dump_”开头的磁盘迷你端口驱动到启动分区,并校验与创建 Dump文件相关的所有组件。包括:磁盘迷你端口驱动、写入Dump文件的I/O管理函数和启动分区的页面文件。最终所得的校验结果会被保存起来,每当系统启动时KeBugCheck函数会重新进行校验并与之前的结果相比对。如果校验结果不匹配,将不会有Dump文件被写入磁盘(因为有破坏磁盘数据的危险);如果检验结果匹配,Dump信息会被写入已经被写到磁盘启动分区上的页面文件当中。文件系统会被完全绕过,因为它也有可能是造成崩溃的原因之一。当SMSS.EXE在启动过程中开启内存分页时,系统会仔细检查启动分区页面文件当中的信息。如果有崩溃信息,这部分页面文件就会被保护起来。如果启动过程中的所有或部分启动分区页面文件不可用,系统会提示虚拟内存过低(暂时)。启动进程执行完成之后WINLOGON.EXE会调用SAVEDUMP.EXE进程从页面文件中抽出崩溃信息,并将Dump文件写到磁盘上。
在Windows Server 2003上,某些过程可能会有不同,请参考KB886429。当Server启动之后,Windows会要求在启动分区上创建一个和物理内存相同大小的临时文件。如果磁盘空间不足,Dump还是会生成,不过会被系统缩减大小。在创建Dump操作过程的初期,会话管理子系统(SMSS.EXE)就会介入验证内存Dump信息是否有效。如果Dump信息有效,SMSS.EXE会将Dump文件重命名为Dumpxxx.tmp,进而存储Dumpxxx.tmp到启动分区并设置HKLM\System\CurrentControlSet\Control\CrashControl\MachineCrash下的TempDestination和DumpFile值。SAVEDUMP.EXE便会读取这2个值,并在判定文件的有效性之后将Dumpxxx.tmp保存成Memory.dm


猜你喜欢
- 在Execl中录入好数据以后通常都需要用到求平方的功能,具体该如何求平方呢?下面是小编带来的关于excel中求平方的方法,希望阅读过后对你有
- Win10系统无权访问文件夹怎么解决?最近很多Win10系统的用户反映这个问题,在使用文件夹的时候发现访问不了,这是怎么一回事呢?针对这一问
- 在win7系统桌面双击计算机图标的时候却无法打开资源管理器,同时还弹出对话框提示系统调用失败,出现这个这种情况有什么好的办法可以解决呢?下面
- 随着使用时间的增加,用户发现系统的运行效率越来越低,下面是高手教大家一个小妙招,关闭空闲的IDE通道,来提高系统的运行效率。具体的操作步骤如
- WPS Office 不仅是你的办公文档好帮手,同时拥有强大云服务和社交分享等功能,还可以发起会议,解决问题,下面就来看看怎么发起会议吧WP
- Excel中的数字颜色具体该如何用函数进行空值呢?下面是小编带来的关于excel用函数控制字体颜色的方法,希望阅读过后对你有所启发!exce
- Root能获得手机的最高权限,可以管理手机的预装软件。360手机助手给我们提供了大量的软件、游戏等应用下载,而且我们还可以使用360手机助手
- 在日常的工作中我们经常会遇到要将打印出来的每一页都有固定的一行或一列信息。也就是固定标题行或标题列。下面就跟小编一起看看吧。excel200
- Win7系统怎么卸载32位Office程序?最近有用户反映这个问题,Win7系统是很多用户都还在使用的系统,遇到这种情况应该怎么解决呢?针对
- 本文主要介绍了winxp系统中ie桌面图标消失的解决方法(winxp显示桌面图标)方法1:直接发现——打开“我的电脑”,然后点击“向上”按钮
- 好大夫在线怎么取消挂号?好大夫在线是一款非常受欢迎的医疗服务类软件,有些用户在里面预约完医院,因为临时有事,想要取消取消预约,但是不知道要怎
- 运用指数、复数、整数幂等等,如果我们想将指数或者整数幂等等返回复数可以怎么办那?这时候我们可以利用Excel表格中的IMEXP函数。Exce
- office激活和不激活有什么区别?office办公软件在安装的时候会出现提示,让用户去进行激活。有的用户没有激活码,所以选择了软件的试用。
- 之前,小编曾经报道过,微软正在研究最新的Win10新形态设备HoloLens,属于增强现实设备,带来世界上先进的全息影像感官体验。而现在又有
- 我们在WPS中进行办公时,通常都会需要设置字体字号,字体颜色等字体的基础参数,我们有时候还会需要设置斜体,加粗,上标下标,拼音,高亮显示等。
- iOS13 的这些BUG,你有遇到吗?苹果在本月的4号推出了全新一代的移动操作系统 iOS13 的初代测试版,此系统支持iPhone6S及以
- 战网是暴雪公司为玩家架设的一个游戏对战平台,使用这个平台,可以让世界各地的游戏玩家相互竞技。不过在安装战网客户端的时候,许多玩家碰到了无法安
- Excel工作表默认的名称是sheet1、sheet2、sheet3,实际上也可以重命名。方法一:1.在sheet上点击右击2.点击重命名3
- 电脑,计算机已经成为我们生活中必不可少的一部分。无论是大型的超级计算机,还是手机般小巧的终端设备,都跑着一个操作系统。正是这些操作系统,让那
- 上一期我们介绍了合并单元格的自动排序小技巧,今天,再为大家准备一个排名表,下面我们就利用这个表格,来了解一下快速排名的方法吧。 首先,我们在