更改GlobaFlag标识, 调整Debug模式.
以下是针对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。如下图:
5. 返回到System Properties对话框,点击Startup and Recovery中的Settings按钮。
6. 在弹出的对话框中,确定如下图配置:
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本地目录.
4. 打开Dump文件,默认在C:\Windows\MEMORY.DMP.
5. 使用!poolused 4查看占用Papge Pool的每个模块的占用情况, 按照Used排序. 在1: kd> 后面的对话框中输入.
6. 使用!for_each_module s-a @#Base @#End "SavE" 查看所有的已经加载的Module.
7. 经过测试, 使用相应行的Module Address. 本例中使用第三行. 执行ln a9e387b2. 因为本例无法找到对应的symbols所以显示ERROR, 但是可以在最后看见需要load的是savert.sys
8. 使用lm v s sav*查看指定的Loaded Moudle详细信息.
通过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 这已经到达了上线.
参考文档: http://blogs.technet.com/b/markrussinovich/archive/2009/03/26/3211216.aspx
转载于:https://blog.51cto.com/xrbenbeba/478149