突然,你的Windows服务器刚刚经历了蓝屏死机(BSOD),求助台热线非常繁忙。这台服务器重启,并且是你这周经历的第四次崩溃,用户变得无法控制。更糟的是你面临着打电话,到处奔走以解决问题,而且厂商会相互指责是对方的问题。 现在该是你解决问题的时候了。
有了崩溃转储分析(crash dump analysi)的基础知识和一些简单的命令,你能决定涉及什么驱动。然后,通过智能搜索互联网,你可定位解决崩溃的热修复或工作区。 这一系列三篇文章包含你所需的解决Windows服务难题的工具和步骤。 下图1描述了崩溃发生时的样子。
如你所见,当服务器崩溃时,物理内存(RAM)的内容将写到系统分区上的……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
突然,你的Windows服务器刚刚经历了蓝屏死机(BSOD),求助台热线非常繁忙。这台服务器重启,并且是你这周经历的第四次崩溃,用户变得无法控制。更糟的是你面临着打电话,到处奔走以解决问题,而且厂商会相互指责是对方的问题。
现在该是你解决问题的时候了。有了崩溃转储分析(crash dump analysi)的基础知识和一些简单的命令,你能决定涉及什么驱动。然后,通过智能搜索互联网,你可定位解决崩溃的热修复或工作区。
这一系列三篇文章包含你所需的解决Windows服务难题的工具和步骤。
下图1描述了崩溃发生时的样子。如你所见,当服务器崩溃时,物理内存(RAM)的内容将写到系统分区上的页面文件。重启时,页面文件写入memory.dmp文件,这个文件也宿主在系统分区里。最后,在服务器重启后,你能使用Windows内核调试器(WinDbg)与微软的符号服务器来分析崩溃原因。
要帮助解决崩溃转储分析,需要注意三个主要领域。首先,当发生意外状态时,服务器必须能配置成可以产生崩溃。接下来,你需要从微软下载Windows调试器,设置符号服务器路径。最后,使用调试器用几个简单命令分析崩溃。现在,我们分别来看看这三个领域。
配置dump
要配置服务器产生崩溃,使用图2所示的Control Panel | System applet | Advanced tab | Startup | Recovery设置。你能从三种类型的内存转储文件选择:small、kernel或complete。默认下,Windows将生产small,服务器崩溃时产生“mini-dump”文件。有时候这样会包括足够的调试信息,不过一般需要一个内存转储文件。在罕见环境下,可能需要配置complete内存转储捕获所需的调试信息。关于配置内存转储文件的更多信息,请参见Microsoft KB article 254649。
安装Windows调试器
下一步就是安装Windows内核调试器工具,这个工具可以从微软官网免费下载。取决于你计划分析的服务器的架构,有三种类型的调试器,即x86、x64和IA64。安装WinDbg后,你必须建立symbol path,常用的符号路径是SRV*c:symbols*http://msdl.microsoft.com/download/symbols。关于建立调试器符号路径的更多信息,请参见Microsoft KB 311503。
分析崩溃
现在已经配置服务器产生内存转储和在正确的符号路径里安装了调试器,就可以分析崩溃原因了。有两种方法启动调试器:从程序组“Debugging Tools for Windows”或者从使用WinDbg命令出现的DOS提示符启动。在调试器里面,使用文件下拉菜单“Open crash dump”指向你要调试的转储文件。
当载入转出文件时,你将发现调试器的屏幕分为两部分:占用了窗口大部分的输出窗和底部的命令提示符。第一个使用的命令是:
!analyze –v
这个命令将对转储执行初步的分析,并对哪个驱动导致崩溃提供猜测。这个命令显示给你的第一件事是调试校验类型(也叫做中止码)和参数。调试校验类型非常重要,应该在你上网搜索可能原因和修复时用到。在下面的例子中,WinDbg显示了调试校验类型LM_SERVER_INTERNAL_ERROR (stop code 54)。在这种情况下,如果你的微软官网搜索LM_SERVER_INTERNAL_ERROR,应该在Microsoft KB 912947里发现已知问题和修复文档。
3: kd> !analyze -v ***************************************************** * Bugcheck Analysis * *****************************************************
LM_SERVER_INTERNAL_ERROR (54)
Arguments:
Arg1: 00361595
Arg2: e8aab501
Arg3: 00000000
Arg4: 00000000
!analyze –v命令将列出导致崩溃问题的驱动。在我们的例子中,WinDbg精确地调出是srv.sys驱动导致了崩溃。
Probably caused by: srv.sys (srv!SrvVerifyDeviceStackSize+78 )
另外几个有用的命令提供了更多关于崩溃的信息,包括:
- !thread——列出目前的执行线程
- kv——显示栈追踪,暗示所调用的驱动和功能
- lm t n——显示所安装驱动及其数据的列表
最后,你应该注意到Windows调试器的在线帮助很好用。在你查找导致崩溃的中止码并使用在线帮助找解决问题的办法的时候尤其有用。要找到中止码列表,去到帮助下拉菜单并选择Contents | Debugging Techniques | Bug Checks (Blue Screens) | Bug Check Code Reference。然后扫描列表定位中止码位置。
多数人认为调试崩溃留给专家去做,但是有一点基础知识和一些简单命令,任何人都能识别崩溃并作出贡献。
翻译
相关推荐
-
Windows服务器管理员PowerShell入门
Microsoft Windows PowerShell 4.0是脚本语言的最新版本,包含在Windows Server 2012 R2操作系统中,并且向后兼容早期的PowerShell版本。
-
如何控制桌面:用Windows桌面管理员权限换取iPad
有一种简单的方式可以既抑制用户Windows桌面管理员权利,还能让他们完成工作,加一台平板或iPad完成所有私人或非受IT支持的事情。
-
微软三大VDI虚拟桌面认证
决定部署VDI与如何提供有效支持,是组织需要关注的两个不同问题。让员工参加培训并获得认证,是确保工作人员具备部署、管理与支持VDI技能的途径之一。
-
克服多重挑战 成功从Unix迁移到Windows
和Unix正在失去企业市场相对应的是,企业也在为他们的工作负载寻找新的承载平台, 微软Windows是备选目标之一。在处理Unix到Windows的迁移工作时规避许多障碍。