如何在不到一分钟的时间内解决Windows 8崩溃
-
Windows 8.1系统构建器OEM DVD 64位
视窗8已经出现了一段时间,具有一个像令人讨厌一样酷的界面。。。直到你掌握它。但是,与任何计算机操作系统一样,它可能会崩溃。幸运的是,有一种简单的方法来解决大多数崩溃的原因;只需调用WindBG,Windows调试器;一个免费的工具,用于诊断Windows崩溃的最常见原因 - 行为不端的第三方驱动因素。
在W8中,已经修改了死亡/ BSOD的蓝色屏幕,包括一个大,简单:(意思是人类(如果不是非常有信息)的语言。(观看一个幻灯片的版本这贯穿了任何崩溃。]
Windows 8死亡的蓝色屏幕已成为令人沮丧的令人沮丧。
还,微软在转储文件创建和管理过程中取得了进步。虽然本文侧重于W8,但信息适用于RT和服务器为早期的操作系统,见在几分钟内解决Windows 7崩溃或者,对于XP和2000,见如何在几分钟内解决窗户崩溃。
对Windows崩溃
操作系统崩溃与应用程序崩溃,系统挂起或其他问题。在大多数情况下,操作系统崩溃为保护措施。当操作系统发现关键设备失败或内部操作系统状态被识别为因可能的病毒,错误的设备驱动程序甚至RAM故障而被识别为不一致,它通常更安全地停止。否则,持续的操作将允许更严重的损失,例如申请数据损坏或损失。
[帮助正在路上:在Windows崩溃时,该去哪里寻求帮助]
三分之二的系统崩溃是由第三方驱动程序在内核模式下采取不适当的操作(比如写入不存在的内存)造成的,在这种模式下,他们可以直接访问操作系统内核和硬件。
相比之下,在用户模式下运行的驱动程序,只能间接访问OS内核,不能直接导致崩溃。小百分比崩溃是由诸如错误的内存等硬件问题引起的,甚至在OS本身中的故障较少。一些原因是简单的未知。
谢谢你的记忆转储
一个记忆转储是你曾经拥有的最丑陋的最好的朋友。它是操作系统停止的时间点的计算机系统状态的快照。而且,在转储文件中包含的大量不太友好的数据中,您通常只需要一些易于掌握和使用的项目。随着Windows 8的引入,OS现在创建了四种不同的内存转储;完整,内核和miniDumps和新的自动内存转储。
1.自动内存转储
位置:%systemroot%\ memory.dmp
尺寸:≈OS内核的≈User
自动内存转储是安装Windows 8时选择的默认选项。创建以支持已更新的“系统托管”页面文件配置,以减少磁盘上的页面文件大小。自动内存转储选项产生内核内存转储,差异是当您选择自动时,它允许SMSS流程减少小于RAM大小的页面文件。
2.完成内存转储
位置:%systemroot%\ memory.dmp
大小:≈Size的RAM和1MB
完整(或完整的)内存转储大约等于安装的RAM量。对于许多具有多个GB的系统,这可以快速成为存储问题,特别是如果您有多于偶尔的崩溃。通常,我不建议拯救一个完整的内存转储,因为它们采用了这么多的空间,通常是不需要的。但是,在使用Microsoft(或其他供应商)时存在案例以找到一个非常复杂的问题的原因,即完整内存转储是非常有帮助的。因此,坚持自动转储,但准备好切换设置以在罕见场合生成完整的转储。
3.内核内存转储
位置:%systemroot%\ memory.dmp
尺寸:≈用内核模式组件的物理内存“拥有”的≈
内核转储大致相等为Windows 8内核占用的RAM。在我的测试系统上,在64位处理器上运行Windows 8的Windows 8,内核转储约为336MB。由于,只要偶尔,必须运输转储文件,我压缩它,使其降至80MB。内核转储的一个优点是它包含分析所需的二进制文件。自动转储设置默认创建内核转储文件,仅保存最近的,以及每个事件的MiniDump。
4.小或迷你倾销
位置:%Systemroot%\ miniDump
尺寸:X64上的X86和128K上至少64k(我的W8测试PC上的279k)
最小转储包括寄存器在错误点给出它们的值时指向它们的内存页,以及错误线程的堆栈。它们之所以小,是因为它们不包含任何在故障发生时存储在内存中的二进制文件或可执行文件。
但是,这些文件对调试器的后续分析至关重要。只要您在创建转储文件的机器上调试,WindBG就可以在系统根文件夹中找到它们(除非在创建转储文件后系统更新,否则二进制文件)。或者,调试器应该能够通过Symserv,Microsoft的符号文件的在线存储自动定位它们。Windows 8为每次碰撞事件创建并保存MiniDump,基本上为系统生命中的所有事件提供了历史记录。
配置W8以获取正确的内存转储
虽然W8的默认配置设置了操作系统以生成您很可能需要的内存转储格式,但请快速查看可以确定。从W8样式菜单中只需输入“控制面板”(或者在许多情况下只有前几个字母),它将自动神奇地将您带到应用程序页面,您应该看到“控制面板”周围的白色盒子;击中Enter将带您到熟悉的界面。
通过W8中的控制面板进行控制。
遵循“控制面板”开始检查Windows 8内存转储设置的路径,如下所示:
控制面板|系统和安全|系统|高级系统设置|启动和恢复|设置
在“启动和恢复”对话框“中,确保检查”自动内存转储“。您可能还希望确保检查“将事件写入系统日志”,并“默认情况下也应在”(默认情况下)“。
安装windbg.
系统要求
要将PC为基于WindBG的崩溃分析设置,您需要以下内容:
•32位或64位Windows 8 / R2 / Server 2012 / Windows 7 / Server 2008
根据您运行调试器的处理器,您可以使用32位或64位调试工具。请注意,是否在基于X86或基于X64的平台上进行了转储文件并不重要。
•Windows 8的Windows SDK的Windows部分的调试工具,您可以免费下载Microsoft。
•大约103MB的硬盘空间(不包括转储文件的存储空间或符号文件)
•实时互联网连接
下载windbg.
首先下载sdksetup.exe,一个启动Web设置的小文件(969KB),从中选择要安装的组件。
•自动下载(下载将自行开始):
需要空间
忽略1.2GB所需的磁盘空间;您只需安装一小部分套件。在我的测试机器上,安装过程预测了256.2MB,但仅需要根据安装后的文件资源管理器需要103MB。
运行skdsetup.exe.
将软件开发套件(SDK)安装到用于查看内存转储文件的计算机。
A.启动Sdksetup.exe。
B.指定位置:
建议的安装路径如下:
C:\ Program Files(x86)\ Windows套件\ 8.0 \
如果在单独的计算机上下载以安装,请选择第二个选项并设置相应的路径。
C.接受许可协议
D.删除所有但是Windows调试工具的复选标记
什么是符号,为什么我需要它们?
现在调试器已经安装,在调用转储文件之前,必须确保它能够访问符号文件。符号表是编译的副产品。当一个程序被编译时,源代码被从高级语言翻译成机器码。同时,编译器创建一个包含标识符、它们在程序中的位置以及它们的属性的符号文件。由于程序执行时不需要这些信息,因此可以将其取出并存储在另一个文件中。这减少了最终可执行文件的大小,从而占用更少的磁盘空间并更快地加载到内存中。但是,当程序出现问题时,操作系统只知道问题发生的十六进制地址,而不知道是谁在那里,也不知道那个人在做什么。通过使用SymServe可用的符号表提供了该信息。
Symserv(Symsrv)
从Windows 8 UI,右键单击WindBG,然后从屏幕底部弹出的栏中选择“以管理员运行”。
symserv(也拼写symsrv)是Microsoft提供的一个批判性重要的实用程序,该实用程序管理要检索正确的符号表的标识以供WindBG使用。只要调试器配置正确,就不会在后台使用时自动使用,并且在Microsoft上无限地访问符号存储,因此在背景中自动函数。
跑windbg.
从W8 UI,右键单击WindBG版本,您将使用(x64或x86),然后从屏幕底部弹出的栏中选择“以管理员身份运行”。然后,您将看到一个奇异的未激发应用程序界面;一块灰色。在使用数据填充之前,您必须告诉它在哪里找到符号文件。
设置符号文件路径
Windows有大量的符号表文件,因为操作系统的每一次构建,即使是一次性的变体,都会产生一个新文件。使用错误的符号表就像用波士顿地图在旧金山找路一样。为了确保你使用的是正确的符号,在WinDbg的菜单栏,选择如下:
文件|符号文件路径
在符号搜索路径窗口中,输入以下地址:
srv * c:\ cache * http://msdl.microsoft.com/download/symbols
请注意,星号之间的地址是您希望存储用于将来引用的符号的位置。例如,我将名为符号的文件夹中的符号存储在我的C:驱动器的根目录中,因此:
SRV * C:\符号* http://msdl.microsoft.com/download/symbols
确保你的防火墙允许访问msdl.microsoft.com。
Windbg如何处理符号文件
当打开内存转储时,WinDbg将查看可执行文件(.exe, .dll等)并提取版本信息。然后,它向Microsoft的SymServ创建一个请求,其中包括这个版本信息,并定位要从中提取信息的精确符号表。它不会下载你要排除故障的特定操作系统的所有符号;它会下载它需要的东西。
符号文件的空间
存储符号所需的空间变化。在我的W8测试机器中,在运行众多碰撞测试后,该文件夹约为35MB。在另一个系统上,运行W7,以及从哪个其他系统打开转储文件,该文件夹仍在100MB以下。只要记住,如果您从附加计算机打开文件(具有操作系统的变体),则文件夹可以继续大小增长。
或者,您可以选择从Microsoft下载并存储完整的符号文件。在您之前,请注意 - 对于每个符号包 - 您应该有至少1GB的磁盘空间。那是因为,除了存储文件所需的空间外,还需要需要所需的临时文件的空间。即使在这些天的硬盘低成本的情况下,所使用的空间也值得注意。
•每个X86符号包可能需要750 MB或更多的硬盘空间。
•每个X64符号包可能需要640 MB或更多。
符号包是非累积,除非另有说明,否则如果您使用的是SP2 Windows版本,则需要在安装SP2的符号之前安装原始RTM版本和SP1的符号。
创建转储文件
如果你没有内存转储怎么看?不用担心。你可以自己生成一个。有不同的方法可以做到这一点,但最好的方法是使用由Mark Russinovich创建的名为NotmyFault的工具。
下载NotMyFault
要获得NotmyFault,请访问Sysinternals的Windows Internals Book页面,然后向下滚动到“书工具”部分,您将看到下载链接。该工具包括加载行为不端的驱动程序的选项(这需要管理权限)。下载后,我创建了从桌面的快捷方式来简化访问。
请记住,使用NotmyFault将创建系统崩溃,而我从未见过使用该工具的问题,生活中没有保证,特别是在计算机上。因此,准备您的系统,并有任何需要访问它的人几分钟。保存包含可能丢失并关闭所有应用程序的信息的文件。正确准备,机器应该下降,重新启动,都应该创建MinIDump和MinIDump和内核转储。
运行notmyfault.
启动NotmyFault并选择高IRQL故障(内核模式)。。。点击崩溃按钮。您的令人沮丧的令人沮丧将出现在一秒钟内,迷你upp和内核转储文件都将保存,并且如果配置正确 - 您的系统将重新启动。
当Windows 8崩溃时,您会看到(1)新BSOD中的令人沮丧。重新启动后,您会看到(2)要将崩溃文件发送到Microsoft的要约。最终屏幕(3)列出将要发送的文件,显示隐私声明并要求您发送发送它们的权限。
在W8 UI上,将是一个蓝色的乐队,消息“您的电脑遇到了问题。。”。如果单击“发送详细信息”按钮,Microsoft将使用WindBG和命令“!Acareze”作为自动服务的一部分,以识别问题的根本原因。输出与已知驱动程序错误修复的数据库组合以帮助识别失败。
启动windbg和(经常)看到崩溃的原因
通过从W8 UI右键单击它来启动WindBG,然后从屏幕底部弹出的栏中选择“以管理员身份运行”。调试器运行后,选择菜单选项
文件|打开崩溃转储
并指向它以打开您想要分析的转储文件。注意,WinDbg会打开任何大小的转储文件;一个最小转储文件、内核转储文件或完整转储文件。当被要求保存工作区信息时,说Yes;它将记住转储文件的位置。
命令窗口将打开。如果这是第一次使用此系统上的WindBG或从另一个系统查看转储文件之前,您之前没有加载文件,则可能需要填写信息的时刻。这是因为调试器必须识别Windows的精确版本,然后在Microsoft转到Symserv,并找到相应的符号文件并下载所需的符号文件。在后续会话中,不需要此步骤,因为符号保存在硬盘驱动器上。一旦WindBG具有所需的符号,它将运行分析并使用结果填充窗口。这将包括诸如WindBG的版本之类的基本信息,转储文件的位置和名称打开,符号搜索路径正在使用甚至简要分析,在这种情况下,
可能是由:myfault.sys造成的
当然,我们知道是真的(myfault.sys是notmyfault的驱动程序的名称)。
windbg错误消息
如果windbg报告***警告或***错误,则解决方案通常很简单。以下列出了常用消息,它们的意思以及如何解决它们。
***警告:无法验证ntoskrnl.exe的时间戳
***错误:模块加载完成但无法为NTOSKRNL.exe加载符号
这是很重要的。当您在WinDbg输出的开头附近看到这两条消息时,这意味着您将得不到所需的分析。这是在“Bugcheck Analysis”自动运行后确认的,消息
*****内核符号错误。请修复符号进行分析
被展示。
可能的原因跟随:
•没有路径/错误路径;尚未设置符号文件的路径,或者路径不正确(查找拼写错误,例如空白空间)。检查符号路径。
•连接失败;检查您的Internet连接以确保它正常工作。
•访问被阻止;防火墙阻止访问符号文件或在检索期间损坏文件。请注意,没有防火墙阻止访问msdl.microsoft.com(它可能只允许访问www.microsoft.com)。
注意,如果防火墙一开始就阻止WinDbg下载符号表,可能会导致文件损坏。如果解除防火墙封锁并试图再次下载符号文件无效;文件仍然损坏。最快的修复方法是关闭WinDbg,删除symbols文件夹(最可能设置为c:\symbols),并解除防火墙的阻止。接下来,重新打开WinDbg和转储文件。调试器将重新创建文件夹并重新下载符号。
在纠正之前,请勿进一步进一步进一步。
如果您看到以下错误,没有担心:
***警告:无法验证MyFault.sys的时间戳
***错误:模块加载完成但无法为myfault.sys加载符号
Windbg会自动提出如图所示的罪魁祸首。
这意味着调试器正在寻找有关MyFault.sys的信息。但是,由于它是第三方驱动程序,因此它没有符号,因为微软不存储所有第三方驱动程序。重点是您可以忽略此错误消息。供应商通常不会用符号文件发货驱动程序,并且他们不是您的工作所必需的;您可以在没有它们的情况下查明问题驱动程序。
那么,是什么导致了坠机?
如上所述,当您使用WindBG打开转储文件时,它会自动运行一个基本分析,这些分析通常会使罪魁祸首持续无,甚至不会给调试器都提供任何直接命令,如屏幕所示,它说“可能是由:myfault.sys导致的:myfault.sys”。
更多信息
有关崩溃事件的更多信息,并且可疑模块很容易。通常,您所需要的只是数百个命令,即相当强大的调试器提供:
!分析-v.
和
LMVM。
命令windbg的新方法
通常,您将键入所需的命令和参数。然而,事情也有改变了。如果您仔细查看WindBG接口,就在“错误检查分析”框下方,它说“使用!分析-V以获取详细的调试信息”,并且该命令下划线并以蓝色为单位。是的,这是一个链接。只需触摸它,命令将为您运行。但是,如果您没有触摸屏,鼠标将正常工作或诉诸传统方法,以将命令键入窗口的窗口,从而看到提示“kd>”(它代表“内核调试器”)。一定要准确地进行;这是语法是键的情况。例如,请注意命令和“-v”之间的空格。 The "v" or verbose switch tells WinDbg that you want all the details. You can do the same where you see the link for myfault which will display metadata for the suspect driver.
来自!分析-V
通过提供的分析!Analyze -V是英语和程序员的组合,但仍然是一个很好的开始。事实上,在许多情况下,你不需要进一步去。如果你认识到崩溃的原因,你可能已经完成了。
来自!分析-V
The!Analyze -V命令揭示了崩溃的原因和可能的罪魁祸首。
the!分析-v提供了有关系统崩溃的更多详细信息。在这种情况下,它准确地描述了指示测试驱动程序(MyFault.sys);要在中断级别访问太高的地址。
分析
driver_irql_not_less_or_equal(d1)
尝试在太高的中断请求级别(IRQL)中访问可粘性(或完全无效)地址。这通常由使用不当地址的驱动程序引起。
在调试详细信息下,该报告表明问题是“Win_8_Driver_Fault”,而且NotmyFault.exe处于活动状态。
堆栈转储
调试器输出的一个重要特征!Analyze -V是堆栈文本。每当查看转储文件时,始终查看任何第三方驱动程序的堆栈的最右端。在这种情况下,我们会看到myfault。请注意,事件的年代序列从底部到顶部;由于每个新任务由其在顶部显示的系统执行。在这种相当短的堆栈中,您可以看到MyFault处于活动状态,然后发生了页面错误,系统声明了错误检查,这是系统停止时(蓝色屏幕)。
一个方法来看,这就是当你在系统崩溃时看到堆栈上有一个活跃的第三方驱动程序时,就像走进一个房间,找到一个身体在地板上,有人在他的吸烟枪站在它上面手;这并不意味着他是有罪的,但让他怀疑第1号。
从lmvm输出(或通过选择myfault)
知道嫌疑人的名字是不够的;你得知道他住在哪里,做什么。这就是lmvm的用处。它提供了从这个映像路径(不是所有驱动程序都位于%systemroot%\system32\drivers.)、时间戳、映像大小和文件类型(在本例中是一个驱动程序)到制作它的公司、它所属的产品、版本号和描述的数据范围。一些公司甚至提供技术支持的联系方式。但是,调试器报告的内容完全取决于开发人员包含的内容,在某些情况下,这些内容非常少。
找到供应商名称后,访问其网站,查看更新、知识库文章和其他支持信息。如果不存在或不能解决问题,请联系他们。他们可能会要求您发送调试信息(将调试器的输出复制到电子邮件或Word文档中很容易),或者他们可能会要求您向他们发送内存转储文件(首先对其进行压缩,既可以压缩它,又可以保护数据完整性)。
如果你有任何关于使用WinDbg的问题,请查看WinDbg帮助文件。它是优秀的。而且,在阅读命令时,一定要查看关于许多参数的信息,比如“-v”,它返回更多(详细)信息。
另一个三
虽然这是真的,通过遵循上面的指示,您可能会立即知道两次崩溃的原因;这会让其他第三个令人讨厌。那你怎么办呢?嗯,可能导致系统失败的列表不缩短;它可以从箱扇失败的范围内,允许系统过热到坏记忆。
有时它是硬件
如果您有重复崩溃但没有明确或一致的原因,它可能是一个记忆问题。检查内存的两个好方法是Windows Memory诊断工具和Memtest86。转到控制面板并进入“内存”进入其搜索框,然后选择“诊断计算机的内存问题”。
这个简单的诊断工具很快,工作得很好。许多人折扣内存问题的可能性,因为他们占了这么小的系统崩溃。然而,他们往往是让你猜到最长的原因。
是Windows罪魁祸首吗?
在所有概率中:没有。对于那些快速责备雷德蒙德的反对者进行此类事件,事实上是窗户很少是系统故障的原因。但是,如果ntoskrnl.exe(windows核心)或win32.sys(Windows上的“GUI”图层最负责的驱动程序)被命名为罪魁祸首 - 而且他们经常 - 不要太快接受它。一些错误的第三方设备驱动程序在Windows组件上调用它来执行操作并传递错误的指令,例如将其写入不存在的内存。所以,虽然操作系统当然可以犯错,但在你归咎于微软之前排出所有其他可能性。
我的防病毒司机怎么样?
通常,您可能会看到一个名为罪魁祸首的防病毒司机,但有很好的机会它无罪。这就是为什么:对于防病毒代码工作,它必须观看所有文件开口和关闭。为实现此目的,代码位于OS中的低层,并且不断工作,以便他通常会在发生崩溃时处于活动状态的函数调用堆栈中。
缺少供应商信息?
一些驾驶员供应商不花时间与其模块包含足够的信息。因此,如果LMVM没有帮助,请尝试查看图像路径上的子目录(如果有一个)。其中一个人通常将是供应商名称或其收缩。另一种选择是搜索谷歌。输入驱动程序名称和/或文件夹名称。您可能会发现供应商以及已发布有关司机信息的其他人。
概括
请记住,您阅读此底漆并在系统上配置WindBG需要的时间远远超过您需要解决三个崩溃的两种崩溃。实际上,大多数崩溃的分析努力将花费不到一分钟。而且,虽然另一个第三个肯定会更具挑战性,但至少你还有更多的时间来尝试。
史密斯是亚历山大Lan Inc.的总裁,是一个自由顾客和作家。他可以到达dirkadsmith@gmail.com.。