使用Poolmon.exe解决内核模式内存泄漏

 Event ID: 2020 

Source: Srv 
Description: The server was unable to allocate from the system paged pool because the pool was empty.

Event ID: 2019 
Source: Srv 
Description: The server was unable to allocate from the system nonpaged pool because the pool was empty.

 

 

推荐: 最好下载并安装最新的windbg, 相关下载请查考http://xrbenbeba.blog.51cto.com/492648/478149

启用标记模式

在运行 PoolMon 之前您必须启用池标记,然后重新启动您的计算机。池标记功能收集,并计算有关的内存分配标签值按排序的池内存的统计信息。

注意不需要启用池标记在 Windows Server 2003 中,因为默认情况下处于启用状态。

若要能够池标记上基于 Windows NT 4.0 的基于 Windows 2000 的或基于 Windows XP 的计算机,请使用下列方法之一

方法 1 编辑注册

若要将注册表值,用于 Poolmon.exe 使标记模式请按照下列步骤操作。

重要此分区、 方法,或任务包含告诉您如何修改注册表的步骤。但是,如果注册表修改不当可能会出现严重问题。因此,请确保您仔细按照这些步骤。附加的保护注册表之前先备份您对其进行修改。然后,您可以在出现问题时还原注册表。有关如何备份和还原注册表的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章

  1. 运行注册表编辑器
  2. 在注册表中找到以下项

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager

  1. 记下 GlobalFlag 的值,或保存 Session Manager
  2. 双击 GlobalFlag 值,在右窗格中
  3. 将值更改为 0x00000400 十六进制。

    注意当您将添加全局标志值 0x00000400 时,它只显示最多为它添加后 0x400。一定要添加前导零的所有或某些 Poolmon 信息将不会显示在输出屏幕上
  4. 重新启动计算机

注意完成后 GlobalFlag 值恢复为原始值,您已要求您在步骤 3 中记下的调试,更改

方法 2 使用 Gflags.exe 实用程

全局标志编辑器 Gflags.exe) 实用程序还可以用于启用池标记。Gflags.exe 以及都可以使用 Windows NT 4.0 资源工具包中的 Windows 2000 Windows XP Windows Server 2003 cd-rom \Support\Tools 文件夹中。

注意由于永久 Windows Server 2003 中启用池标记,了在 全局标志 对话框中的 启用池标记 复选框呈灰色显示,并且要启用或禁用池标记的命令都将失败。

通过使用 Gflags.exe 进行更改,请按照下列步骤操作

  1. 单击 开始,单击 运行,键入 gflags.exe,然后单击 确定
  2. 选择 启用池标记
  3. 单击 应用,然后单击 确定
  4. 重新启动计算机

 

注意完调试,重复上述步骤,禁用池标记

使用 Poolmon 收集信息

PoolMon 显示命令窗口内的池标记信息。使用箭头键或 PAGE UP PAGE DOWN 键来显示该工具所返回的所有标记信息。

Poolmon.exe
以及都可以使用 Windows NT 4.0 资源工具包中的 Windows 2000 Windows XP Windows Server 2003 cd-rom \Support\Tools 文件夹中。

使用以下步骤复制并存储标记信息。对两个小时内重复这些步骤,以 15 分钟的时间间隔。将每个更新附加到记事本文件的末尾

  1. 单击 开始,指向 设置 单击 控制面板 中,然后双击 控制台

    注意对于 Windows 2000 中,您必须执行以下步骤
    1. 单击 开始 单击 运行,键入 cmd,然后单击 确定
    2. 用鼠标右键单击标题栏,然后单击 属性
  1. 单击 选项 选项卡,单击 快速编辑模式,然后单击 插入模式
  2. 单击 版式 选项卡,将 屏幕缓冲区大小 值更改为 99,然后单击 确定
  3. 单击 开始,指向 程序,然后单击 命令提示符
  4. Windows NT Support\Debug\ platform 文件夹中找到 Poolmon.exe 4.0 CD。更改到的驱动器和文件夹 Poolmon.exe 所在的位置。在 Windows 2000 光盘 Poolmon.exe 上是 Support.CAB 文件中。Support.CAB 位于 \Support\Tools 文件夹下
  5. 类型 Poolmon.exe
  6. 直到 Poolmon 显示第二列"类型",并显示 分页 的值,请按 P
  7. 按从大对列进行排序的 B 到最小
  8. 选择整个屏幕内容,然后按 ENTER
  9. 单击 开始 指向 程序 指向 附件,然后单击 记事本
  10.  编辑 菜单上单击 粘贴
  11. 重复步骤 7,以查找该值 非分页缓冲
  12. 重复步骤 8-11 粘贴

 

Poolmon.exe 还具有对输出排序为您的几个命令键。按字母执行的操作如下所示。需要为每个命令使用的几秒钟。下面是几个命令的列表

P 排序标记列表中的通过分页,无-分页或混合。请注意 P 循环通过每个。
B
进行排序按最大字节使用情况的标记。
M
按最大字节分配对标签进行排序。
T
按标记名称按字母顺序排序标记。
E
显示分页,跨底部未分页的总计。循环。
A
按分配大小对标签进行排序。
F
"释放"对标记进行排序。
S
allocs 的差异对标签进行排序,并释放。
E
显示分页,跨底部未分页的总计。循环。
Q
退出

以上文献来至: http://support.microsoft.com/kb/177415/en-us

 

你可能感兴趣的:(职场,内存泄漏,休闲,内核模式,Poolmon.exe)