如何处理系统崩溃后的Win7
想准备使用WindDbg来解决Windows 7系统崩溃,需要一台个人电脑满足下列要求:
32位或64位Windows 7/Vista/XP或Windows Server 2008/2003
约25MB的硬盘空间(这不包括存储转储文件或符号文件的空间)
正常的互联网连接
微软Internet Explorer 5.0或更高版本
WinDBG的最新版本是Windows SDK中的一个选项。SDK下载文件名为,大小498KB,可以免费下载。(注意:安装调试器后,可以删除庞大的下载文件,从而腾出大量空间。)
内存转储(页面文件必须在C:上,以便Windows保存内存转储文件)
安装WinDbg
下载Windows SDK、运行安装向导程序后,选择Common Utilities(常用实用程序)下面的Debugging Tools for Windows(Windows调试工具)选项。
配置启动和恢复
这一步很烦人。因为不太容易到启动和恢复对话框;为了检查系统已设定成在错误检查
期间采取合适的动作,包括要不要自动重新启动、保存多少大小的转储文件,需要这个对话框。
到启动和恢复对话框:
1、选择屏幕左下角的Start(开始)按钮
2、选择Control Panel(控制面板)
3、选择System and Security心理学考研课程驴肉怎么炖好吃又烂(系统和安全)
4、从右边栏的选项中选择System(系统)
5、从左边栏中选择Advanced system settings(高级系统设置),显示System Properties(系统属性)对话框
6、在系统属性对话框中选择Advanced(高级)选项卡
7、在启动和恢复区中选择Settings(设置)按钮
看到如下所示的启动和恢复对话框:
确保启动和恢复设置是否正确
在System failure(系统故障)下
1、勾选Write an event to the system log(将事件写入系统日志)
2、勾选Automatically restart(自动重新启动)
3、选择Kernel memory dump(核心内存转储)
4教师节几号几月几号、确保转储文件写入%SystemRoot%MEMORY.DMP
5、勾选Overwrite any existing file(覆盖任何现有文件),以节省硬盘空间
请注意:这将意味着你的系统将既保存内核转储文件,又保存微型转储文件。然而,尽管你有一个微型转储用于每个事件,但保存的将是最近一个内核转储。
配置WinDbg
启动调试器:想启动WinDbg,请依次选择下列:
Start | All Programs | Debugging Tools for Windows| WinDbg
开始|所有程序| Windows调试工具|WinDbg
如果你要随时使用WindDbg中国参加的第一届奥运会,需要简化这个程序的启动:只要把它固定到Startup(启动)
菜单上,或者发送快捷方式到桌面上。
符号有多重要?
在你想到转储文件中的某个异常模块、急于挽救局面之前,得确保调试器已准备就绪。最重要的是,你得确信它会为你在排除故障的那个操作系统的确切版本到符号文件。
符号表是编译后的产物。当某个程序被编译后,源代码从一种高级语言转换成了机器码。与此同时,编译器会创建一个符号文件,带有标识符列表、标识符在程序中的位置及其属性。一些标识符是全局和局部变量以及函数调用。程序不需要这些信息才能执行。因而,信息可以取出来存储在另一个文件中,减小了最终可执行文件的大小。
与较大的可执行文件相比,较小的可执行文件占用磁盘空间较少,加载到内存的速度较快。但凡事都有另一面:某程序引起问题时,操作系统只知道出现问题的十六进制地址。你需要比这更多的信息,才能确定哪个程序在使用该内存空间,它试图在进行什么操作。Windows符号表就能解答这个问题,而可以访问针对特定系统内存的符号好比将地名加在地图上。反过来,分析符号表错误的转储文件好比拿着一张波士顿的地图在旧金山路。
配置WinDbg以定位符号
Windows有数量多得惊人的符号表文件。之所以这样,是因为操作系统的每个版本,甚至一次性版本,都会带来一个新文件。幸运的是,WinDbg可以为你处理这件事,但必须为它配置正确的搜索路径。要做到这一点,就要启动WinDbg,并依次选择下列:
File | Symbol file path
文件|符号文件路径
然后输入下列路径:(确保你的防火墙允许访问msdl.microsoft)
srv*c:cache*msdl.microsoft/download/symbols
请注意:星号之间的地址表明你想把符号存储在何处,以便将来访问。比如说,我把符号存储在C:驱动器根目录下一个名为symbols的文件夹中,因而:
srv*c:symbols*msdl.microsoft/download/symbols
打开内存转储时,WinDbg会查看可执行文件(.exe和.dll等文件),并提取版本信息。然后它会请求微软的符号服务器,该服务器包含该版本信息,并到确切的符号表,从中获取信息。它不会下载你在排除故障的特定操作系统的所有符号,只会下载需要的符号。另外,你可以选择从微软下载并存储完整的符号文件。然而,对于你在分析的操作系统的每个版本而言,这个文件的大小在600MB到800MB之间。相比之下,WinDbg下载的文件不到100MB,即可分析测试机上操作系统的好几个版本。即使如今硬盘成本很低,节省的空间还是相当大。
江歌案件真实过程关于转储文件
内存转储文件是一份快照,表明了系统崩溃时内存里面有什么。虽然内存转储文件也许是你可能需要查看的最乏味、最不直观的东西,但操作系统崩溃时,它是你最好的朋友。Windows创建了三种不同大小的内存转储:微型转储(minidump)、内核转储(kernel dump)和完全转储(full dump)。
1、小型转储或微型转储
Windows 7微型转储只有256K字节,不管从哪个标准来看都很小;然而,它们比Windows 2000/XP时候大了不少,那时候只有64K。微型转储之所以这么小,原因之一是,它们不含有故障出现时,内存中的任何二进制文件或可执行文件。不过,那些文件对调试器在之后进行分析来说至关重要。只要你在创建转储文件的机器上调试,WinDbg就能在System Root文件夹中到它们(除非转储文件创建后,二进制文件因系统更新而更改)。此外,调试器应该能够通过SymServ来到它们。如果配置得当,除了内核转储外(下文有描述),Windows 7还会为每一次崩溃事件创建和保存微型转储。
2、内核转储
内核转储大小大致相当于Windows 7的内核占用的内存。在我的笔记本电脑上,内核转储约344MB大小,压缩后只有100MB多点。内核转储的一个优点是,它含有二进制文件。默认情况下,我总是让系统保存最近的内核转储。请记住:系统在保存内核转储时,也会保存微型转储。
3、完整转储或完全转储
完全内存转储大小相当于已安装内存的数量。由于许多系统有数GB内存,这方面的存储很快会成为问题,如果你频频遇到崩溃,更是如此。我通常不建议保存完全内存转储,因为它们占用太多的空间,而且一般也不需要。不过微软的Vachon倒建议:“如果你试图调试一个很复杂的问题,比如设备中多个服务之间的远程过程调用(最新qq情侣网名RPC)问题,又想看看这些服务在用户模式下进行什么操作,完全内存转储就大有帮助。”因此,要坚持保存内核转储,但要准备偶尔创建完全转储。
如果没有内存转储可供使用,怎么办?
如果你没有内存转储可以查看,也不用担心,可以让系统崩溃!最简单的方法(不必更改注册表的设置)是,运行一个名为NotMyFault的出工具(这要感谢Mark Russinovich和SysInternals网站的团队)。它提供了一系列选项,可以加载行为异常的驱动程序(这需要管理员权限)。
但记住:NotMyFault会制造系统崩溃!所以要让你的系统准备好,确信让需要访问该系统的任何人注销退出几分钟。凡是含有可能会丢失的信息的文件都要保存,并关闭应用程序。如果按上述方法配置了系统,它应该没有问题。机器应该会崩溃,重新启动,这样就
有了内核转储和微型转储可以查看。我用过好多次,毫无问题。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论