windows 7 如何查看每个驱动所占内存的地址范围?
本人windows菜鸟,由于新组装的电脑用着经常蓝屏,所以引发了我的强烈分析自己电脑蓝屏的兴趣。
我自己电脑的目前情况:
硬件情况:
CPU:I7 3770
主板: 技嘉 GA-H77-DS3H (rev. 1.0) BIOS版本:F7
内存: 金士顿8G单条
显卡 技嘉 GV-N630-1GI 驱动版本:320.49
硬盘: Sandisk SDSSDP-128G-Z25 128G的固态硬盘
西部数据 大小为1T转速:7200转的机械硬盘
系统:windows 7 64X MSDN版
如果需要可以提供其他信息。
我现在想请教各位,我这几天也在研究蓝屏的原因,用过Windbg,但是让我不明白的是蓝屏Code后面的4位参数
我想知道 是不是4个参数含义都是一样,只不过每个含义对应的值不同?
如果4个参数里,有1个是代表内存位置的,是哪个参数?其他几个参数分别是什么用处?
另外如何在windows里查看每个驱动正常占用内存的位置或范围?
我问上面3个问题是因为我看见过1篇文章,有提到过
“第一步,有些通过查看蓝屏代码信息即可大致定位出导致蓝屏的代码的位置。因为很多蓝屏代码的参数里都会记录有发生蓝屏时引用的内存位址,譬如:
计算机已经在检测错误后重新启动。检测错误: 0x0000001e (0xc0000005, 0xf7ce8bad, 0x00000000, 0x00e2ddd0).
这里参数0xf7ce8bad即指向了引起例外的代码位置,通过对照系统内核驱动加载地址表,可找到引起该例外的驱动名,然后再根据PE结构内存映射文件的原理,反编译驱动代码后就可从相应的偏移处找到导致蓝屏的驱动程序代码位置。
第二步,对于没有在蓝屏代码的参数里直接指明引用位址的分析,就要通过保存下的DUMP文件来进行调试分析了,譬如:
计算机已经在检测错误后重新启动。检测错误: 0x0000000a (0x0000002c, 0x00000002, 0x00000000, 0x80441a1e)
调试工具可选用Microsoft的Windbg,调试时需要使用对应DUMP系统的符号文件,调试步骤网上有很多详细的介绍,通过一步步的stack trace,就可以找到引起蓝屏的代码位置了。如果需要进行详细的调试,最好不要采用Minidump,而要设置成完全内存转储。
第三步,对于经常发生蓝屏重启的情况,直接使用softice进行动态调试是最简单有效的方法了,在系统里安装上softice以后,如果系统产生了例外,会直接被softice截获,使用它提供的强大命令体系找出罪魁祸首应该是不成问题的,当然这需要在关机过程中发生蓝屏时softice的驱动还没被卸载掉,否则就需要使用双机进行远程调试了.”
上面引号里是网上的文章。我百度和google上都查过“内核驱动加载地址表”类似的关键词,都没找到有用的文章,所以来次求教了!
希望有windows的专家或高手能教我写windows蓝屏的知识。谢谢了!
------解决方案--------------------进程管理类软件,比如 Sysinternals 的 Process Explorer,选择 System 进程,查看模块,可能需要将起始地址加入到显示列里,按加载地址排下序吧。