更改GlobaFlag标识, 调整Debug模式.

clip_p_w_picpath001

clip_p_w_picpath002

以下是针对Memory Dump的相关设置:

1. 打开开始菜单,右键点击My computer.

2. 选择Advanced页面,之后在performance中点击settings。

3. 选择Advanced页面,点击Virtual memory中的Change按钮。

4. 选择C:,之后配置选择Custom size选项,将其initial size配置成物理内存大小+100M。如1G物理内存的客户端,该值应该为1050。Maximum Size配置为比initial size 再大100M。之后再点击Set和OK。如下图:

clip_p_w_picpath003

5. 返回到System Properties对话框,点击Startup and Recovery中的Settings按钮。

6. 在弹出的对话框中,确定如下图配置:

clip_p_w_picpath004

7. 重启计算机,使以上设置生效。

8. 下载并安装NoMyFault内存转储生成工具,从地址http://download.sysinternals.com/Files/Notmyfault.zip处下载。

9. 将该文件解压到您指定的目录下,并记下此目录。

10. 之后请等待问题再次发生,如果问题再次发生,请进入NotMyFault的目录,进入exe\release子目录,点击NotMyfault.exe。在打开的对话框中,点击“Do Bug”按钮。此时系统将会蓝屏,并生成Dump文件。系统完成Dump文件保存后,会自动重启客户端。

以下是Windbg在本实例下的应用.

Windbg Download:

http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx

Symbols Download:

http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx

1. 安装Windbg, 默认安装即可.

2. 安装Symbols, 默认安装即可.

3. 设置Symbols本地目录.

clip_p_w_picpath006

clip_p_w_picpath007

4. 打开Dump文件,默认在C:\Windows\MEMORY.DMP.

clip_p_w_picpath009

clip_p_w_picpath011

5. 使用!poolused 4查看占用Papge Pool的每个模块的占用情况, 按照Used排序. 在1: kd> 后面的对话框中输入.

clip_p_w_picpath012clip_p_w_picpath014

6. 使用!for_each_module s-a @#Base @#End "SavE" 查看所有的已经加载的Module.

clip_p_w_picpath016

7. 经过测试, 使用相应行的Module Address. 本例中使用第三行. 执行ln a9e387b2. 因为本例无法找到对应的symbols所以显示ERROR, 但是可以在最后看见需要load的是savert.sys

clip_p_w_picpath018

8. 使用lm v s sav*查看指定的Loaded Moudle详细信息.

clip_p_w_picpath020

通过Debug我们可知在Page poll中使用最大的是SavE的Module File savrt.sys. 查看之前的Task manager可知Paged达到了160M以上, 参考http://blogs.technet.com/b/askperf/archive/2007/03/07/memory-management-understanding-pool-resources.aspx 这已经到达了上线.

clip_p_w_picpath021clip_p_w_picpath023

参考文档: http://blogs.technet.com/b/markrussinovich/archive/2009/03/26/3211216.aspx