从故障转储中查找GDI /用户资源使用情况

时间:2020-03-06 14:27:08  来源:igfitidea点击:

我有一个应该泄漏GDI的应用程序的故障转储。该应用程序在XP上运行,将它加载到WinDbg中可以正常查看。以前,我们使用Gdikdx.dll扩展名查看Gdi信息,但XP或者Vista不支持此扩展名。

是否有人在WinDbg中找到用于查找GDI对象用法的任何指针。

另外,我确实可以访问失败的程序(及其压力测试套件),因此,如果我们知道任何适用于XP和Vista(或者Windows 2000,尽管不是我们的目标)的"实时"调试工具,则可以在运行的系统上重现。 。

解决方案

几年前,有一篇MSDN Magazine文章谈到了GDI泄漏。这指向具有良好信息的几个不同的地方。

在WinDbg中,我们也可以尝试!poolused命令以获取一些信息。

从崩溃转储(事后分析)中查找资源泄漏可能很困难-如果它始终位于同一位置,并使用泄漏内存的相同变量,那么我们很幸运,可以看到最后一个位置泄漏等。在调试器下运行实时程序可能会容易得多。

我们也可以尝试使用Microsoft Detours,但许可证并非总能奏效。它也更具侵入性和先进性。

  • 轻微的性能损失
  • 实现简单
  • 非侵入性(用于多种产品)
  • 尽可能多地依靠