gpt4 book ai didi

c++ - 如何追踪 Windows USER 对象泄漏?

转载 作者:可可西里 更新时间:2023-11-01 14:19:53 26 4
gpt4 key购买 nike

我有一个程序正在泄漏可以在任务管理器中看到的 USER 对象。有没有办法确定泄漏的资源类型?我使用了像 GDI View 这样的程序来处理 GDI 泄漏,它按对象类型将其分解。 USER 对象是否有类似的东西?

最佳答案

您可以通过 Hook Create/DestroyWindow 来追踪窗口句柄泄漏,然后追踪传递的句柄。这样,您可以轻松地使用 ETW 跟踪 WPA 中的图表,其中尚未删除的多余句柄将被排除在外。

参见 http://geekswithblogs.net/akraus1/archive/2016/01/30/172079.aspx

使用我的 EasyHook 分支,它也适用于 Win 8 及更高版本的 x64。下面是使用 ETWStackwalk.exe 创建的图像,它是我的 EasyHook 分支的一部分。使用 WPA,您可以通过检查 AllocSize 列的值 > 0 来查看所有打开和关闭的窗口以及哪些窗口仍然打开。然后过滤仍然打开句柄的事件,您可以直接获得分配它但到目前为止从未释放的调用堆栈。

enter image description here

如果您正在寻找画笔或字体,您需要针对您怀疑导致泄漏的方法扩展该工具。只要您知道哪些方法被怀疑造成泄漏并且您能够 Hook 资源分配和免费调用,所提出的方法就能够解决任何资源泄漏。

关于c++ - 如何追踪 Windows USER 对象泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5353263/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com