二、手动制造蓝屏
上面简单的提了一下蓝屏后生成的内存转储文件,也就是说蓝屏对于分析软件错误是有帮助的,它是Windows系统提交给我们的一个内核异常报告,加以分析就能便于我们改进自己的程序。
但有时候程序异常不会造成蓝屏,而是死机……死机可是不会提供给我们什么有价值的信息的,我们也无法再死机的时候调试异常(WinDBG双机互调那个另说……)。那怎么办呢?我们就必须手动制造一个蓝屏,好让Windows为我们抓取内存信息。
我没说梦话,微软给我们提供了这样的功能,用你的键盘就能实现。
首先要确认你的键盘和主机的连接口的类型,确认一下是USB接口还是PS/2接口(PS/2即我们俗称的“圆口”。笔记本键盘算是什么接口我不甚了解……据网友allanpk716友情提示说可能属于PS/2接口),然后根据键盘接口类型选择要设置的注册表键值。
USB接口键盘找到如下注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\Parameters
PS/2接口键盘找到如下注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters
在对应路径下新建一个DWORD项,命名为“CrashOnCtrlScroll”,值为1.
设置好后重启电脑即可生效。一旦出现死机,并且你认为需要存储此刻的内存数据以便分析的话,就按住右Ctrl键,同时连按两下Scroll Lock键。OK,蓝屏了。我们要的DMP文件存下来了!
上面简单的提了一下蓝屏后生成的内存转储文件,也就是说蓝屏对于分析软件错误是有帮助的,它是Windows系统提交给我们的一个内核异常报告,加以分析就能便于我们改进自己的程序。
但有时候程序异常不会造成蓝屏,而是死机……死机可是不会提供给我们什么有价值的信息的,我们也无法再死机的时候调试异常(WinDBG双机互调那个另说……)。那怎么办呢?我们就必须手动制造一个蓝屏,好让Windows为我们抓取内存信息。
我没说梦话,微软给我们提供了这样的功能,用你的键盘就能实现。
首先要确认你的键盘和主机的连接口的类型,确认一下是USB接口还是PS/2接口(PS/2即我们俗称的“圆口”。笔记本键盘算是什么接口我不甚了解……据网友allanpk716友情提示说可能属于PS/2接口),然后根据键盘接口类型选择要设置的注册表键值。
USB接口键盘找到如下注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\Parameters
PS/2接口键盘找到如下注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters
在对应路径下新建一个DWORD项,命名为“CrashOnCtrlScroll”,值为1.
设置好后重启电脑即可生效。一旦出现死机,并且你认为需要存储此刻的内存数据以便分析的话,就按住右Ctrl键,同时连按两下Scroll Lock键。OK,蓝屏了。我们要的DMP文件存下来了!