收藏 分享(赏)

windows错误代码含义和解决方案.docx

上传人:gnk289057 文档编号:5939254 上传时间:2019-03-21 格式:DOCX 页数:26 大小:38.92KB
下载 相关 举报
windows错误代码含义和解决方案.docx_第1页
第1页 / 共26页
windows错误代码含义和解决方案.docx_第2页
第2页 / 共26页
windows错误代码含义和解决方案.docx_第3页
第3页 / 共26页
windows错误代码含义和解决方案.docx_第4页
第4页 / 共26页
windows错误代码含义和解决方案.docx_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、Windows 错误代码,当 window 弹出一个错误时,都会提示一个错误信息。一般的都会以用户看得懂的提示展示出来。但是,有时候 windows 的提示会以错误码的形式展示出来。所以,了解一些简单的错误码。有助于对一些重大错误的避免。windows 错误代码含义和解决方案1.代码一览表1 000000001 不正确的函数。 2 000000002 系统找不到指定的档案。 3 000000003 系统找不到指定的路径。 4 000000004 系统无法开启档案。 5 000000005 拒绝存取。 6 000000006 无效的代码。 7 000000007 储存体控制区块已毁。 8 000

2、000008 储存体空间不足,无法处理这个指令。 9 000000009 储存体控制区块地址无效。 10 00000000A 环境不正确。 11 00000000B 尝试加载一个格式错误的程序。 12 00000000C 存取码错误。 13 00000000D 资料错误。 14 00000000E 储存体空间不够,无法完成这项作业。 15 00000000F 系统找不到指定的磁盘驱动器。 16 000000010 无法移除目录。 17 000000011 系统无法将档案移到其它的磁盘驱动器。 18 000000012 没有任何档案。 19 000000013 储存媒体为写保护状态。 20 00

3、0000014 系统找不到指定的装置。 21 000000015 装置尚未就绪。 22 000000016 装置无法识别指令。 23 000000017 资料错误 (cyclic redundancy check) 24 000000018 程序发出一个长度错误的指令。 25 000000019 磁盘驱动器在磁盘找不到 持定的扇区或磁道。 26 00000001A 指定的磁盘或磁盘无法存取。 27 00000001B 磁盘驱动器找不到要求的扇区。 28 00000001C 打印机没有纸。 29 00000001D 系统无法将资料写入指定的磁盘驱动器。 30 00000001E 系统无法读取指定

4、的装置。 31 00000001F 连接到系统的某个装置没有作用。 32 000000020 The process cannot access the file because it is being used by another process. 33 000000021 档案的一部份被锁定,现在无法存取。 34 000000022 磁盘驱动器的磁盘不正确。请将2 (Volume Serial Number: 3) 插入磁盘机1。 36 000000024 开启的分享档案数量太多。 38 000000026 到达档案结尾。 39 000000027 磁盘已满。 50 000000032

5、不支持这种网络要求。 51 000000033 远程计算机无法使用。 52 000000034 网络名称重复。 53 000000035 网络路径找不到。 54 000000036 网络忙碌中。 55 000000037 The specified network resource or device is no longer available. 56 000000038 The network BIOS command limit has been reached. 57 000000039 网络配接卡发生问题。 58 00000003A 指定的服务器无法执行要求的作业。 59 00000

6、003B 网络发生意外错误。 60 00000003C 远程配接卡不兼容。 61 00000003D 打印机队列已满。 62 00000003E 服务器的空间无法储存等候打印的档案。 63 00000003F 等候打印的档案已经删除。 64 000000040 指定的网络名称无法使用。 65 000000041 拒绝存取网络。 66 000000042 网络资源类型错误。 67 000000043 网络名称找不到。 68 000000044 超过区域计算机网络配接卡的名称限制。 69 000000045 超过网络 BIOS 作业阶段的限制。 70 000000046 远程服务器已经暂停或者正在

7、起始中。 71 000000047 由于联机数目已达上限,此时无法再联机到这台远程计算机。 72 000000048 指定的打印机或磁盘装置已经暂停作用。 80 000000050 档案已经存在。 82 000000052 无法建立目录或档案。 83 000000053 INT 24 失败 84 000000054 处理这项要求的储存体无法使用。 85 000000055 近端装置名称已经在使用中。 86 000000056 指定的网络密码错误。 87 000000057 参数错误。 88 000000058 网络发生资料写入错误。 89 000000059 此时系统无法执行其它行程。2.相应

8、解决方案使用 windows 出现蓝色屏幕是经常的事,而且每每因为不清楚错误的来源而频繁重新安装系统,劳神费时。下列收集了一些 windows 死机密码,供大家参考。 1、0x0000000A:IRQL_NOT_LESS_OR_EQUA L 错误分析:主要是由问题的驱动程序、有缺陷或不兼容的硬件与软件造成的. 从技术角度讲. 表明在内核模式中有级别进程请求(IRQL)访问其没有权限访问的内存地址 . 解决方案:请用前面介绍的解决方案中的 2、3 、5、8、9 方案尝试排除. 2、0x00000012:TRAP_CAUSE_UNKNOWN 错误分析:如果遇到这个错误信息 , 那么很不幸, 应为

9、KeBudCheck 分析的结果是错误原因 未知. 解决方案:既然微软都帮不上忙 , 就得靠自己了, 请仔细回想这个错误是什么时候出现的; 第一次发生时你对系统做了哪些操作; 发生时正在进行什么操作. 从这些信息中找出可能的原因, 从而选择相应解决方案尝试排除. 3、0x0000001A:MEMORY_MANAGEMENT 错误分析:这个内存管理错误往往是由硬件引起的 , 比如: 新安装的硬件、内存本身有问题等. 解决方案:如果是在安装 Windows 时出现, 有可能是由于你的电脑达不到安装Windows 的最小内存和磁盘要求. 4、0x0000001E:KMODE_EXCEPTION_NO

10、T_HANDLED 错误分析:Windows 内核检查到一个非法或者未知的进程指令,这个停机码一般是由问题的内存或是与前面 0x0000000A 相似的原因造成的. 解决方案: (1) 硬件兼容有问题 :请对照前面提到的最新硬件兼容性列表, 查看所有硬件是否包含在该列表中. (2) 有问题的设备驱动、系统服务或内存冲突和中断冲突: 如果在蓝屏信息中出现了驱动程序的名字, 请试着在安装模式或者故障恢复控制台中禁用或删除驱动程序, 并禁用所有刚安装的驱动和软件. 如果错误出现在系统启动过程中, 请进入安全模式, 将蓝屏信息中所标明的文件重命名或者删除. (3) 如果错误信息中明确指出 Win32K

11、.sys: 很有可能是第三方 远程控制软件造成的, 需要从故障恢复控制台中将对该软件的服务关闭. (4) 在安装 Windows 后第一次重启时出现:最大嫌疑可能时系统分区的磁盘空间不足或BIOS 兼容有问题. (5) 如果是在关闭某个软件时出现的:很有可能时软件本生存在设计缺陷, 请升级或卸载它. 5、0x00000023:FAT_FILE_SYSTEM 0x00000024:NTFS_FILE_SYSTEM 错误分析:0x00000023 通常发生在读写 FAT16 或者 FAT32 文件系统的系统分区时, 而 0x00000024 则是由于 NTFS.sys 文件出现错误(这个驱动文件的

12、作用是容许系统读写使用 .(NTFS 文件系统的磁盘 ). 这两个蓝屏错误很有可能是磁盘本身存在物理损坏 , 或是中断要求封包(IRP)损坏而导致的. 其他原因还包括:硬盘磁盘碎片过多; 文件读写操作过于频繁, 并且数据量非常大或者是由于一些磁盘镜像软件或杀毒软件引起的. 解决方案: 第一步:首先打开命令行提示符, 运行“Chkdsk /r“(注:不是 CHKDISK, 感觉象这个, 但是它们所指的内容是不一样的)命令检查并修复硬盘错误, 如果报告存在坏道(Bad Track), 请使用硬盘厂商提供的检查工具进行检查和修复. 第二步:接着禁用所有即使扫描文件的软件, 比如:杀毒软件、防火墙或

13、备份工具. 第三步:右击 C:winntsystem32driversfastfat.sys 文件并选择“属性“, 查看其版本是否与当前系统所使用的 Windows 版本相符合.(注:如果是 XP, 应该是C:windowssystem32driversfastfat.sys) 第四步:安装最新的主板驱动程序, 特别 IDE 驱动. 如果你的光驱、可移动存储器也提供有驱动程序, 最好将它们升级至最新版. 6、0x00000027:RDR_FILE_SYSTEM 错误分析:这个错误产生的原因很难判断 , 不过 Windows 内存管理出了问题很可能会导致这个停机码的出现. 解决方案:如果是内存管

14、理的缘故 , 通常增加内存会解决问题. 7、0x0000002EATA_BUS_ERROR 错误分析:系统内存存储器奇偶校验产生错误 , 通常是因为有缺陷的内存(包括物理内存、二级缓存或者显卡显存)时设备驱动程序访问不存在的内存地址等原因引起的 . 另外, 硬盘被病毒或者其他问题所损伤, 以出现这个停机码. 解决方案: (1) 检查病毒 (2) 使用“chkdsk /r“命令检查所有磁盘分区. (3) 用 Memtest86 等内存测试软件检查内存. (4) 检查硬件是否正确安装, 比如:是否牢固、金手指是否有污渍. 8、0x00000035:NO_MORE_IRP_STACK_LOCATIO

15、NS 错误分析:从字面上理解 , 应该时驱动程序或某些软件出现堆栈问题. 其实这个故障的真正原因应该时驱动程序本生存在问题, 或是内存有质量问题. 解决方案:请使用前面介绍的常规解决方案中与驱动程序和内存相关的方案进行排除. 9、0x0000003F:NO_MORE_SYSTEM_PTES 错误分析:一个与系统内存管理相关的错误 , 比如:由于执行了大量的输入/输出操作, 造成内存管理出现问题: 有缺陷的驱动程序不正确地使用内存资源 ; 某个应用程序(比如:备份软件)被分配了大量的内核内存等. 解决方案:卸载所有最新安装的软件 (特别是哪些增强磁盘性能的应用程序和杀毒软件)和驱动程序. 10、

16、0x00000044:MULTIPLE_IRP_COMPLIETE_REQUESTS 错误分析:通常是由硬件驱动程序引起的 . 解决方案:卸载最近安装的驱动程序 . 这个故障很少出现, 目前已经知道的是, 在使用 www.in- 其中的罪魁就是 Falstaff.sys 文件.(作者难道不怕吃官司嘛, 把公司网址公布) 11、0x00000050: PAGE_FAULT_IN_NONPAGED+AREA 错误分析:有问题的内存 (包括物理内存、二级缓存、显存)、不兼容的软件( 主要是远程控制和杀毒软件)、损坏的 NTFS 卷以及有问题的硬件(比如: PCI 插卡本身已损坏)等都会引发这个错误.

17、 解决方案:请使用前面介绍的常规解决方案中与内存、软件、硬件、硬盘等相关的方案进行排除. 如果电脑中安装有 maxdoc(或是用 maxdoc 的启动盘)也可以在命令模式下直接删除 C 盘的页面文件。 12、0x00000051:REGISTRY_ERROR 错误分析:这个停机码说明 注册表或系统配置管理器出现错误 , 由于硬盘本身有物理损坏或文件系统存在问题, 从而造成在读取注册文件时出现输入/输出错误. 解决方案:使用“chkdsk /r“检查并修复磁盘错误. 13、0x00000058:FTDISK_INTERNAL_ERROR 错误分析:说明在容错集的主驱动发生错误 . ? 解决方案:

18、首先尝试重启电脑看是否能解决问题 , 如果不行, 则尝试“最后一次正确配置“进行解决 . 14、0x0000005E:CRITICAL_SERVICE_FAILED 错误分析:某个非常重要的系统服务启动识别造成的. 解决方案:如果是在安装了某个新硬件后出新的 , 可以先移除该硬件, 并通过网上列表检查它是否与 Windows 2K/XP 兼容, 接着启动电脑, 如果蓝屏还是出现, 请使用“最后一次正确配置“ 来启动 Windows, 如果这样还是失败, 建议进行修复安装或是重装. 15、0x0000006F:SESSION3_INITIALIZATION-FAILED 错误分析:这个错误通常出

19、现在 Windows 启动时, 一般是由有问题的驱动程序或损坏的系统文件引起的. 解决方案:建议使用 Windows 安装光盘对系统进行修复安装. 16、0x00000076ROCESS_HAS_LOCKED_PAGES 错误分析:通常是因为某个驱动程序在完成了一次输入/输出操作后, 没有正确释放所占有的内存 解决方案: 第一步:点击开始运行:regedt32, 找到HKLMSYSTEMCurrentcontrol setcontrolsession managermemory management, 在右侧新建双字节值“TrackLockedPages“, 值为 1. 这样 Windows

20、便会在错误再次出现时跟踪到是哪个驱动程序的问题.第二步:如果再次出现蓝屏, 那么错误信息会变成:STOP:0x0000000CB(0xY,0xY,0xY,0xY)DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS 其中第四个“0xY“会显示为问题驱动程序的名字, 接着对其进行更新或删除 .第三步: 进入注册表, 删除添加的“TrackLockedPages“. 17、0x00000077:KERNEL_STACK_INPAGE_ERROR 错误分析:说明需要使用的内核数据没有在虚拟内存或物理内存中找到. 这个错误常常是磁盘有问题, 相应数据损坏或受到病毒侵蚀. 解决方案:使

21、用杀毒软件扫描系统 ; 使用“chkdsk /r“命令检查并修复磁盘错误, 如不行则使用磁盘厂商提供的工具检查修复. 18、0x0000007A:KERNEL_DATA_INPAGE_ERROR 错误分析:这个错误往往是虚拟内存中的内核数据无法读入内存造成的. 原因可能是虚拟内存页面文件中存在坏簇病毒、磁盘控制器出错、内存有问题. 解决方案:首先用升级为最新病毒库杀毒软件查杀病毒, 如果信息中还有0xC000009C 或 0xC000016A 代码, 那么表示是坏簇造成的, 并且系统的磁盘检测工具无法自动修复, 这时要进入“故障恢复控制台“, 用“chkdsk /r“命令进行手动修复. 19、

22、0x0000007B:INACESSIBLE_BOOT_DEVICE 错误分析:Windows 在启动过程中无法访问系统分区或启动卷. 一般发生在更换主板后第一次启动时, 主要是因为新主板和旧主板的 IDE 控制器使用了不同芯片组造成的. 有时也可能是病毒或硬盘损伤所引起的. 解决方案:一般只要用安装光盘启动电脑 , 然后执行修复安装即可解决问题. 对于病毒则可使用 DOS 版的杀毒软件进行查杀 (有 kv2005DOS 版下载). 如果是硬盘本身存在问题, 请将其安装到其他电脑中, 然后使用“chkdsk /r“来检查并修复磁盘错误. 20、0x0000007E:SYSTEM_THREAD_

23、EXCEPTION_NOT_HANDLED 错误分析:系统进程产生错误 , 但 Windows 错误处理器无法捕获 . 其产生原因很多, 包括:硬件兼容性、有问题的驱动程序或系统服务、 或者是某些软件. 解决方案:请使用“事件查看器 “来获取更多的信息, 从中发现错误根源.(发现好像不是解决哦, 看来这里大家要自力更生了!) 21、0x0000007F:UNEXPECTED_KERNEL_MOED_TRAP 错误分析:一般是由于有问题的硬件 (比如:内存)或某些软件引起的. 有时超频也会产生这个错误. 解决方案:用检测软件(比如:Memtest86)检查内存, 如果进行了超频, 请取消超频.

24、将 PCI 硬件插卡从主板插槽拔下来, 或更换插槽. 另外, 有些主板(比如:nForce2 主板) 在进行超频后, 南桥芯片过热也会导致蓝屏, 此时为该芯片单独增加散热片往往可以有效解决问题.22、0x00000080:NMI_HARDWARE_FAILURE 错误分析:通常是有硬件引起的 .(似乎蓝屏与硬件错误有不解之缘) 解决方案:如果最近安装了新硬件 , 请将其移除, 然后试试更换插槽和安装最新的驱动程序, 如果升级了驱动程序, 请恢复后原来的版本; 检查内存金手指是否有污染和损坏; 扫描病毒; 运行“chkdsk /r“检查并修复磁盘错误; 检查所有硬件插卡已经插牢 . 如果以上尝试

25、都无效果, 就得找专业的电脑维修公司请求帮助了. 23、0x0000008E:KERNEL_MODE_EXCEPTION_NOT_HANDLED 错误分析:内核级应用程序产生了错误 , 但 Windows 错误处理器没有捕获. 通常是硬件兼容性错误. 解决方案:升级驱动程序或升级 BIOS. 24、0x0000009C:MACHINE_CHECK_EXCEPTION 错误分析:通常是硬件引起的 . 一般是因为超频或是硬件存在问题( 内存、CPU、总线、电 源). 解决方案:如果进行了超频 , 请降下 CPU 原来频率, 检查硬件. 25、0x0000009FRIVER_POWER_STATE_

26、FAILURE 错误分析:往往与电源有关系 , 常常发生在与电源相关的操作, 比如:关机、待机或休睡. 解决方案:重装系统, 如果不能解决, 请更换电源. 26、0x000000A5:ACPI_BIOS_ERROR 错误分析:通常是因为主板 BIOS 不能全面支持 ACPI 规范. 解决方案:如果没有相应 BIOS 升级, 那么可在安装 Windows 2K/XP 时, 当出现“press F6 if you need to install a third-party SCSI or RAID driver“提示时, 按下 F7 键, 这样 Windows 便会自动禁止安装 ACPI HAL,

27、 而安装 Standard PC HAL. 27、0x000000B4:VIDEO_DRIVER_INIT_FAILURE 错误分析:这个停止信息表示 Windows 因为不能启动显卡驱动, 从而无法进入图形界面. 通常是显卡的问题, 或者是存在与显卡的硬件冲突(比如:与并行或串行端口冲突). 解决方案:进入安全模式查看问题是否解决 , 如果可以, 请升级最新的显卡驱动程序, 如果还不行, 则很可能是显卡与并行端口存在冲突, 需要在安全模式按下 WIN+break 组合键打开“ 系统属性“, 在硬件 设备管理器中找到并双击连接打印的 LPT1 端口的选项, 在“资源“选项卡中取消“ 使用自动配

28、置“的勾选, 然后将“ 输入/输出范围“的“03BC“改为“0378“. 28、0x000000BE:ATTEMPTED_WRITE_TO_READONLY_MEMORY 错误分析:某个驱动程序试图向 只读内存写入数据造成的 . 通常是在安装了新的驱动程序, 系统服务或升级了设备的固件程序后. 解决方案:如果在错误信息中包含有驱动程序或者服务文件名称, 请根据这个信息将新安装的驱动程序或软件卸载或禁用. 29、0x000000C2:BAD_POOL_CALLER 错误分析:一个内核层的进程或驱动程序错误地试图进入内存操作. 通常是驱动程序或存在 BUG 的软件造成的. 解决方案:请参考前面介绍

29、的常规解决方案相关项目进行排除. 30、0x000000CERIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS 错误分析:通常是由有问题的驱动程序或系统服务造成的. 解决方案:请参考前面介绍的常规解决方案相关项目进行排除. 31、0x000000D1RIVER_IRQL_NOT_LESS_OR_EQUAL 错误分析:通常是由有问题的驱动程序引起的 (比如罗技鼠标的 Logitech MouseWare 9.10 和 9.24 版驱动程序会引发这个故障 ). 同时, 有缺陷的内存、 损坏的虚拟内存文件、 某些软件(比如多媒体软件、杀毒软件、备

30、份软件、 DVD 播放软件)等也会导致这个错误. 解决方案:检查最新安装或升级的驱动程序 (如果蓝屏中出现“acpi.sys“等类似文件名, 可以非常肯定是驱动程序问题)和软件; 测试内存是否存在问题; 进入“故障恢复控制台“, 转到虚拟内存页面文件 Pagefile.sys 所在分区, 执行“del pagefile.sys“命令, 将页面文件删除; 然后在页面文件所在分区执行“chkdsk /r“命令;进入 Windows 后重新设置虚拟内存. 如果在上网时遇到这个蓝屏, 而你恰恰又在进行大量的数据下载和上传 (比如: 网络游戏、BT下载), 那么应该是网卡驱动的问题, 需要升级其驱动程序

31、. 32、0x000000EA:THREAD_STUCK_IN_DEVICE_DRIVER 错误分析:通常是由显卡或显卡驱动程序引发的 . 解决方案:先升级最新的显卡驱动 , 如果不行, 则需要更换显卡测试故障是否依然发生. 33、0x000000ED:UNMOUNTABLE_BOOT_VOLUME 错误分析:一般是由于磁盘存在错误导致的 , 有时也建议检查硬盘连线是否接触不良, 或是没有使用合乎该硬盘传输规格的连接线, 例如 ATA-100 仍使用 ATA-33 的连接线, 对低速硬盘无所谓, 但高速硬盘(支持 ATA-66 以上)的要求较严格, 规格不对的连线有时也会引起这类没办法开机的故

32、障. 如果在修复后, 还是经常出现这个错误, 很可能是硬盘损坏的前兆. 解决方案:一般情况下, 重启会解决问题, 不管怎么样都建议执行“chkdsk /r“命令来检查修复硬盘 34、0x000000F2:HARDWARE)INTERRUPT_STORM 错误分析:内核层检查到系统出现中断风暴 , 比如: 某个设备在完成操作后没有释放所占用的中断. 通常这是由缺陷的驱动程序造成的. 解决方案:升级或卸载最新安装的硬件驱动程序 . 35、0x00000135:UNABLE_TO_LOCATE_DLL 错误分析:通常表示某个文件丢失或已经损坏 , 或者是注册表出现错误. 解决方案:如果是文件丢失或损

33、坏 , 在蓝屏信息中通常会显示相应的文件名, 你可以通过网络或是其他电脑找到相应的文件, 并将其复制到系统文件夹下的 SYSTEM32 子文件夹中. 如果没有显示文件名, 那就很有可能是注册表损坏, 请利用系统还原或是以前的注册表备份进行恢复. 36、0x0000021A:STATUS_SYSTEM_PROCESS_TERMINATED 错误分析:用户模式子系统 , 例如 Winlogon 或客服服务运行时子系统(CSRSS)已损坏, 所以无法再保证安全性, 导致系统无法启动. 有时, 当系统管理员错误地修改了用户帐号权限, 导致其无法访问系统文件和文件夹. 解决方案:使用“最后一次正确的配置

34、 “, 如果无效, 可使用安装光盘进行修复安装. 37、STOP 0xC0000221 or STATUS_IMAGE_CHECKSUM_MISMATCH 错误分析:通常是由于驱动程序或系统 DLL 文件损坏造成的. 一般情况下, 在蓝屏中会出现 文件名称 .sys 文件; 3. 将其重命名,如:XXXintelppm.sys; 4. 重启。1以下情况会引发系统蓝屏崩溃: 1 、运行在内核模式下的设备驱动程序或者操作系统函数引发了一个未被处理的异常,比如内存访问违例(由于企图写一个只读页面或者企图读一个当前未被映射的内存地址(即无效地址)而引起) 。2、调用一个内核支持例程导致了重新调度,比如

35、当中断请求级别 (IRQL)为 DPC/Dispatch 级别或更高级别时等待一个标记为需要等待的调度对象。 3 、在 DPC/Dispatch 级别或更高的 IRQL 级别时由于数据存在于页面文件或内存映射文件中而发生了页面错误(Page Fault)。 (这将要求内存管理器必须等待一个 I/O 操作发生。但正如上面一项所说,在 DPC/Dispatch 级别或更高 IRQL 级别上不能够进行等待,因为那将要求一次重新调度) 。 4 、当检测到一个内部状态表明数据已遭受破坏或者在保证数据不被破坏的情况下系统无法继续执行时,设备驱动程序或操作系统函数明确地要求系统崩溃(通过调用系统函数 KeB

36、ugCheckEx) 。5 、发生硬件错误,比如处理器的计算机检查异常功能(Machine Check)报告有异常或者发生不可屏蔽中断(NMI)。 在了解以上三点知识之后,相信您对 Windows 的大无畏牺牲精神会有所赞赏,也会原谅它的“蓝脸”了。其实,在绝大多数情况下均是第三方设备驱动程序导致了 Windows 的崩溃。对于Windows XP 用户提交给微软在线崩溃分析(Microsoft OCA, Microsoft Online Crash Analysis)站点的内存转储文件,微软对引起崩溃的原因进行了统计分类,如下图所示:(数据于 2004 年 4 月份生成) 。 既然 Wind

37、ows 向我们露出了无奈的“蓝脸” ,我们就应该打破沙锅问到底,尽早将引发系统崩溃的罪魁祸首缉拿归案,让我们的系统早日康复。下面,我们来看看 Windows 想通过这张“蓝脸”告诉我们些什么。 如上图所示,这是一张显示了所有参数的蓝屏图像。当然,我们所遇到的蓝屏图像与之可能存在差异,比如少了一些信息等,但是大致是相同的,我们就以它为例进行全面地阐述。 首先,我们看看图中用数字 1 标注的区域,这里列出了传递给 KeBugCheckEx 函数的停止代码和四个参数。此图中的停止代码为 0x000000D1,四个参数为后面括号内的用逗号分隔的四段 16进制数字;接下来,我们来看看图中用数字 2 标注

38、的区域,这里显示的是该停止代码 0x000000D1对应的英文解释;最后,我们看看图中用数字 3 标注的区域,这个区域当且仅当停止代码的四个参数中的一个参数包含了操作系统或设备驱动程序代码的地址时才会显示,显示的内容为、该地址所处模块的基地址以及日期戳。如此例中,该设备驱动程序的文件名为“myfault.sys” 。 这些信息对我们排错有何作用呢?如果上图中的区域 3 出现了,那是最好的结果了,因为您直接就看到了罪魁祸首“myfault.sys”文件。但是,区域 3 往往是不出现的,那么我们就要在Microsoft 的在线帮助和支持中查找该停止代码等信息或者使用我们的利器 WinDbg 进行手

39、动分析了。笔者推荐后者,因为同一个停止代码可能由各种各样的驱动程序错误造成,得到了停止代码并不等于得到了问题文件名称,另外,微软的在线帮助和支持中不是所有的错误都能够搜索到,而 WinDbg 正好克服了这两个弱点,直接能够抓出罪魁祸首文件,让您痛快将其斩首。 WinDbg 是免费软件,其微软官方下载地址参考扩展阅读,具体项目为 Install Debugging Tools for Windows 32/64-bit Version。 使用 WinDbg 分析崩溃时的内存转储文件的前提是您要让系统在崩溃时自动生成一个内存转储文件,做法如下: 1、单击开始,然后单击运行。 2、键入 contro

40、l sysdm.cpl ,然后单击确定。您将会打开系统属性,请切换到高级选项卡。结果如下图所示: 3、在高级选项卡上,在启动和故障恢复部分中单击设置。这将打开 启动和故障恢复对话框,如下图所示: 4、在写入调试信息列表中,选择“小内存转储(64 KB)”或“核心内存转储” ,这样系统在崩溃时将会自动生成对应的内存转储文件。如果您不想让蓝屏只闪烁一下,而是想看清楚它直到您手动重新启动计算机,请清除系统失败部分中自动重新启动(R)项目前的复选框。然后单击确定。 5、在启动和故障恢复对话框中,单击确定。 6、单击确定关闭系统属性对话框。 7、在系统设置更改对话框中,如果要立即重新启动计算机,则单击是

41、;如果要稍后重新启动计算机,则单击否。 注:Vista 用户请类似操作。 对于原版操作系统,以上设置是默认的 (除了禁止自动重新启动)。 对于第 4 点中的写入调试信息列表内容,现给出以下参照释义: (以上三种转储文件的大小依次增大,关于三者的比较不在本文讨论范围之内,笔者仅推荐设置为“小内存转储”或者“核心内存转储” ,一般性错误“小内存转储”就足够了,如不能完好分析请选择“核心内存转储” 。为了数据的丰富性,您也可以直接选择“核心内存转储” ,但笔者强烈不推荐完全内存转储。 ) 值得注意的是,为了确保崩溃时自动生成内存转储文件,您可能还须启用虚拟内存页面文件。特别地,当您选择记录核心内存转

42、储时,您必须启用虚拟内存页面文件,而且由于核心内存转储文件的大小取决于该机器上操作系统和所有活动驱动程序已经分配的内核模式内存的数量,因此没有很好的办法来预测内核内存转储的大小。下表仅给出该情况下的参考虚拟内存大小设置值: 另外,除了页面文件占用的磁盘空间,内存转储文件(*.DMP)的生成位置所在的磁盘还要有足够的空闲空间来提取这个转储文件,否则一样会“生成不了”(实际上是丢失了)。 设置好这些之后,一旦您的系统发生蓝屏崩溃,系统就会在以上设置中选中的相应内存转储文件类型下对应的目录处生成转储文件。您所要做的就是立刻拿出利器 启动 WinDbg 进行分析。 笔者在此将结合一个实例进行详细说明,

43、过程中包含了 WinDbg 调试蓝屏用到的一些命令,这些命令将不再额外整理,请于阅读过程中注意识记。 首先,您要配置 WinDbg 将要使用的调试符号文件(Symbol File)的位置。什么是调试符号文件呢?符号文件随 DLL 文件或者 EXE 文件建立时产生,提供包含在可执行文件和动态链接库 (DLL) 中的函数的占位空间。此外,符号文件还可以表示达到失败点的函数调用路线图。当我们使用各种Microsoft 工具调试应用程序时,必须拥有符号信息,这样才能正确分析出问题根源。那我们该如何设置调试符号文件的位置呢?我们既可以从微软官网下载完整的符号文件包(同位于 WinDbg 下载页面),也可

44、以使用微软的符号文件服务器(Microsoft Symbol Server)。笔者推荐后者,因为一次分析所要用到的符号文件局限于有限的几个而已,使用后者可以让程序自动下载,既节省时间,又可以确保符号文件是最新的并且是正确的。在 WinDbg 中点击 “File”菜单,选择“Symbol File Path ”,在打开的对话框中输入 SRV*DownstreamStore*http:/ 后点击“OK”按钮即可。当然,还有一步就是再次点击“File”菜单,选择“Save Workspace”来保存当前的设置。 设置了符号文件之后,您就可以进行内存转储文件的分析了。同样点击“File”菜单,这次要选

45、择“Open Crash Dump ”,然后通过文件打开对话框打开生成的待分析的内存转储文件。本例中设置的是核心内存转储类型,于是应该定位至“%SystemRoot%”(即系统盘 Windows 文件夹下),打开 MEMORY.DMP 文件。但是笔者已经事先将其转移至“E:Memory DumpMEMORY.DMP”,因此在后续的图片中,您看到的是这个地址。此时 WinDbg 会滚动显示一些信息并且会稍有挂起的感觉,直到从微软符号文件服务器下载完分析这个崩溃文件所需要的所有符号文件。 在上图中,我们看到就是这个打开的调试器命令窗口(Debugger Command Window)(已经将符号文

46、件加载完毕,待命),我们先看看位于底部的区域 6,这个小的长方条就是 WinDbg 的命令输入处(Command Entry),它又分为两个区域,左边显示 “0: kd”的是提示区,右边空白区是命令输入区。当刚打开这个窗口而符号文件尚未下载/加载完毕时,提示区域会什么都不显示,而命令输入区域将显示“Debuggee not connected”。直到符号加载完毕,窗口中显示出最后一行“Followup: MachineOwner”才会变为空闲状态。在空闲状态时,它将显示为与上图中类似的模样。为什么说类似呢?因为这个空闲待命提示根据调试类型、计算机处理器硬件配置不同,比如此例中,进行的是内核调试

47、,于是显示“kd”(kernel debug),系统为多(核) 处理器,因此在“kd”之前还显示一个“0:” ,表明当前位于编号为 0 的处理器。在执行了某个命令之后,如果命令需要处理的任务较多(如“!analyze -v”),提示区域将显示为忙碌状态的“*BUSY*” ,一旦显示为这个状态,您不论输入什么命令都不会立即执行,而是等待变为空闲状态时延缓执行。 如上图所示,图中区域 1 处将显示打开的这个内存转储文件的物理路经;区域 2 处显示的则是当前加载的符号文件的位置,本例中表明是从微软服务器下载;区域 3 共有三行,显示的为系统信息,第一行表明了系统为 Windows XP,内核版本为

48、2600(SP3),多处理器(2 颗),32 位,第二行表明了系统类型为 NT 系统,客户端系统,第三行表明系统的详细版本标识;区域 4 共两行,第一行表明该内存转储文件生成的时间,也就是系统崩溃的具体时间,本例中(这是去年 12 月得到的一个崩溃转储文件,现用作本例进行说明)为星期六(Sat),12 月(Dec)27 日,22:56:31.062,2008 年,格林尼治标准时间东八区(GMT+8),第二行显示的是崩溃时自系统启动以来,系统共运行了 0 天 4小时 5 分 15.797 秒。区域 5 是很关键的错误信息,它的第一行仅在加载符号文件遇到错误时显示,此例中,它告诉我们“对于 Bas

49、eTDI.SYS 文件,模块已经加载完毕但却不能够为其加载符号文件 ”,如果之前配置了正确的符号文件路径,这就告诉我们 BaseTDI.SYS 不是微软公司的文件,而是第三方驱动程序文件,这很可能是引起错误的原因,值得关注但须进一步分析。区域 5 的第二行是WinDbg 自动分析的结果,它告诉我们,引起崩溃的原因(Probably caused by:)很可能是HookUrl.sys 文件。一般情况下,这就是引起错误的罪魁祸首了,但是也有不少的例外,最典型的就是显示一个微软自己的文件在此处,您可要注意了,为了避免枉杀无辜,最好进一步分析来看看都有哪些模块牵扯在崩溃的最后一刻,这样就能够保证审判无误了!进一步分析的命令可以从“!analyze -v”开始。 我们既可以在命令输入区域手动键入命令 !analyz

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 解决方案

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报