3

Handle.exe への絶対パスを指定すると、ファイルをロックしたすべてのプロセスが一覧表示されます。

F:\Softwares\Handle>Handle.exe  D:\Source\sample.dll

Handle v4.0
Copyright (C) 1997-2014 Mark Russinovich
Sysinternals - www.sysinternals.com

test1.exe           pid: 9928   type: File           408: D:\Source\sample.dll
test2.exe           pid: 10840  type: File           6A8: D:\Source\sample.dll
test3.exe           pid: 15788  type: File           374: D:\Source\sample.dll
test4.exe           pid: 10940  type: File           308: D:\Source\sample.dll
test5.exe           pid: 15424  type: File           3FC: D:\Source\sample.dll
test6.exe           pid: 10076  type: File           8AC: D:\Source\sample.dll

ウィンドウズ7 64ビット

Handle.exe で述べたように、私の sample.dll は 6 つの異なるプロセスによってロックされています。各プロセスの sample.dll を実際に保持しているコード行を知りたいです。私の仕事は、巨大なアプリケーションのハンドル リークを修正することです。したがって、私の問題はプログラムの特定の部分に固定されていません。タスクは、ハンドル リークを含むレポートを生成し、誰がそれを作成したかを診断することです。リークは file に固有のものではなく、ファイル、レジストリ キー、イベント、セマフォ、スレッドなどのすべてのシステム リソースに展開されます。

Windbg を使用してダンプを取得しましたが、特にハンドル リークについてダンプ ファイルを診断する方法が見つかりませんでした。半日ほど検索したところ、問題に合った適切なチュートリアルや解決策が見つかりませんでした。

私の質問に答えるコマンドラインツールやその他のツールはありますか?

4

2 に答える 2

4

間違ったデバッグ ツールを使用しています。この記事を読みたい場合は、 !htracedebugger コマンドを使用してリークされたハンドルのスタック トレースを取得する方法について詳しく説明しています。この既存のSOの質問でもカバーされています。

「Windows 用デバッグ ツール」という言葉がよく使われます。個別のダウンロードではなくなりましたが、Windows SDK のインストールに含まれています。

于 2015-02-13T10:23:01.783 に答える