天下网吧 >> 网吧天地 >> 网吧技术 >> 网吧软件 >> 正文

理解Windows启动和故障恢复中的文件

2009-9-23不详佚名
    默认情况下,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文件是如何被产生的。当系统启动时,会到注册表HKLMSystemCurrentControlSetControlCrashControl 读取崩溃转储选项。所有在图形界面所做的操作都会修改如下注册表值:

将事件写入系统日志=LogEvent
9 7 3 1 2 4 8 :

本文来源:不详 作者:佚名

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。文章是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。 Email:support@txwb.com,系统开号,技术支持,服务联系微信:_WX_1_本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下
  • 本周热门
  • 本月热门
  • 阅读排行