代码之家  ›  专栏  ›  技术社区  ›  Jack Bolding

从崩溃转储查找GDI/用户资源使用情况

  •  6
  • Jack Bolding  · 技术社区  · 18 年前

    我有一个应用程序的崩溃转储,该应用程序可能正在泄漏GDI。该应用程序在XP上运行,我可以将其加载到WinDbg中查看。以前我们使用 Gdikdx.dll extension

    有没有人有在WinDbg中查找GDI对象用法的指针。

    3 回复  |  直到 18 年前
        1
  •  5
  •   deemok    17 年前

    我花了一周的时间在GDI泄漏查找工具上。我们还定期进行压力测试,由于用户/gdi对象句柄过度消耗,压力测试的持续时间从未超过一天。

    在开始写我自己的东西之前,我使用的另一个工具是 leakbrowser .

    无论如何,我最终决定采用迭代方法来实现以下目标:

    • 轻微的绩效处罚
    • 非侵入性(用于多种产品)
    • 依靠尽可能多的可用资源

    我非常乐意分享我的发现。

    另外,我花了一些时间来改进以前的工作。我的意图是尽量减少误报(我在开发过程中看到的误报太多了),因此它还将检查分配/发布的一致性,并避免考虑从未泄漏的分配。

    here

        2
  •  4
  •   Thomas Weller    12 年前

    有一个 MSDN Magazine article from several years ago

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

    您也可以尝试使用 Microsoft Detours ,但许可证并不总是有效。它也更具侵入性和先进性。

        3
  •  0
  •   Community Mohan Dere    9 年前

    Command to get GDI handle count from a crash dump

    要跟踪分配堆栈,您可以设置一个ba(访问中断)断点,使其超过上次分配的GDICell对象,以便在另一个GDI分配发生时中断。这可能有点复杂,因为地址发生了变化,但可能足以发现几乎任何泄漏。

    推荐文章