4

タスクマネージャーで表示できるUSERオブジェクトをリークしているプログラムがあります。どのタイプのリソースがリークされているかを判断する方法はありますか?オブジェクトタイプごとに分類するGDIリーク用のGDIビューなどのプログラムを使用しました。USERオブジェクトにこれに似たものはありますか?

4

2 に答える 2

2

Create/DestroyWindow をフックしてウィンドウ ハンドル リークを追跡し、渡されたハンドルを追跡できます。そうすれば、まだ削除されていない余分なハンドルが残っている WPA のグラフを ETW トレースで簡単に生成できます。

http://geekswithblogs.net/akraus1/archive/2016/01/30/172079.aspxを参照してください。

私の EasyHook のフォークでは、Win 8 以降の x64 でも動作します。以下は、私の EasyHook フォークの一部である ETWStackwalk.exe で作成されたイメージです。WPA を使用すると、AllocSize 列の値 > 0 をチェックすることで、すべての開いたウィンドウと閉じたウィンドウ、およびまだ開いているウィンドウを確認できます。次に、ハンドルがまだ開いているイベントをフィルター処理し、割り当てられたが解放されなかったコール スタックを直接取得します。遠い。

ここに画像の説明を入力

ブラシまたはフォントを使用している場合は、リークの原因と思われるメソッドのツールを拡張する必要があります。提示されたアプローチは、どのメソッドがリークを作成する疑いがあるかを知っていて、リソース割り当てをフックして呼び出しを解放できる限り、リソース リークを解決することができます。

于 2016-01-31T17:05:29.743 に答える
0

windbgというデバッガーがあります。このようなことはできますが、学習曲線は驚異的です。

于 2011-03-18T15:19:28.117 に答える