0

サードパーティのプラグインを使用するサードパーティのツールを使用しています。時折、起動時にツールがハングします。スタック トレースを見ると、いくつかのスレッドが WaitForSingleObject を待機していることがわかります。おそらく、これらのスレッドは互いにブロックしているのでしょう。一部のスレッドはサードパーティのツールで開始され、一部はサードパーティのプラグインで開始されます。

私がやりたいことは、サード パーティのツール ベンダーに最も詳細な苦情を申し立てることです (サード パーティのツール ベンダーのせいだと仮定して) (ローカル サポートがそれらの詳細を自分で取得できるとは思えません)。そのために、私はしたいと思います:

  1. 現在待機中の同期オブジェクトを確認する
  2. これらの同期オブジェクトの作成者を見つける

現在手元にあるツールは、VS2005、WinDbg、および Process Explorer です。OSはwindow7 64bitです。助言がありますか?

4

1 に答える 1

1

私は WinDBG に慣れているので、いくつか試してみることができます。まず、シンボルを正しく取得することです:

.symfix c:\websymbols .reload

そして、スタック フレームの深さが増加しました。

.kframes 1000

次に、!uniqstack を使用します。これにより、スタックの重複がなくなり、時間を節約できます。

!uniqstack -b

次に、選択して循環依存関係を見つけようとする問題です。残念ながら、ハングに関する詳細情報がなければ、多くのガイダンスを提供することは困難です. !locks を試して、それで問題が解決するかどうかを確認することもできます (クリティカル セクションのデッドロックの場合にのみ役立ちます)。

待機している同期オブジェクトを把握するのは、カーネル デバッグ セッションからの方がはるかに簡単です。ユーザー モードからは、ハンドルを追跡し、それぞれに対して !handle を実行する必要があります。exeは32ビットまたは64ビットですか?

オブジェクトの作成者を特定するには、!htrace を使用してハンドル トレースをオンにし、シナリオを実行してから、トレース ログをダンプするのが最善の方法です。

幸運を、

-スコット

于 2010-05-13T19:42:43.150 に答える