Windows システムでのDependency Walkerの使用方法

Windows Speedup Tool をダウンロードしてエラーを修正し、PC の動作を高速化します。

通常のトラブルシューティング手順だけでは解決できない場合があります。フォレンジックなトラブルシューティングのような、さらに上のことを行う必要があるかもしれません。今日はそれを助けるツールについて書きます。依存関係ウォーカーするためのツールですDLL の依存関係を見つける関数やモジュールなどの Windows アプリケーションの依存関係を分析します。exe、dll、sys などのすべての依存モジュールの階層ツリーを構築します。

DLL の依存関係を見つける方法

dependency Walker は、32 ビットまたは 64 ビットの Windows モジュール (exe、dll、ocx、sys など) をスキャンし、すべての依存モジュールの階層ツリー図を構築する無料のユーティリティです。アプリケーション エラー、ファイル登録エラー、メモリ アクセス違反、無効なページ フォールトのトラブルシューティングに役立ちます。

dependency Walker は、特定のプログラムが読み込まれない場合、または特定の DLL を指すエラーでサービスの開始に失敗する場合に特に役立ちます。このような場合、Dependency Walker でそのプログラムまたは DLL をロードして、どのファイルがロードに失敗しているか、どのモジュールが問題の原因となっているかを確認し、修正することができます。

プログラムはモジュールをロードするだけでなく、潜在的なエラーもスキャンします。ヘルプ ファイルによると、次のジョブを実行します。

  • 不足しているファイルを検出します。これらは、別のモジュールへの依存関係として必要なファイルです。この問題の症状は、「ダイナミック リンク ライブラリ BAR.DLL が指定されたパスに見つかりませんでした…」エラーです。
  • 無効なファイルを検出します。これには、Win32 または Win64 に準拠していないファイルや破損したファイルが含まれます。この問題の症状は、「アプリケーションまたは DLL BAR.EXE は有効な Windows イメージではありません」エラーです。
  • インポート/エクスポートの不一致を検出します。モジュールによってインポートされたすべての関数が実際に依存モジュールからエクスポートされていることを検証します。すべての未解決のインポート関数にはエラーのフラグが立てられます。この問題の症状は、「プロシージャ エントリ ポイント FOO がダイナミック リンク ライブラリ BAR.DLL に見つかりませんでした」というエラーです。
  • 循環依存関係エラーを検出します。これは非常にまれなエラーですが、転送された関数で発生する可能性があります。
  • モジュールの CPU タイプの不一致を検出します。これは、ある CPU 用に構築されたモジュールが別の CPU 用に構築されたモジュールをロードしようとすると発生します。
  • モジュールのチェックサムを検証して、ビルド後にモジュールが変更されていないかどうかを確認することで、チェックサムの不一致を検出します。
  • 優先ベース アドレスでのロードに失敗したモジュールを強調表示することで、モジュールの衝突を検出します。
  • モジュールのエントリ ポイントへの呼び出しを追跡し、エラーを探すことで、モジュールの初期化の失敗を検出します。
  • また、Dependency Walker は、アプリケーションの実行時プロファイルを実行して、動的にロードされたモジュールやモジュールの初期化エラーを検出することもできます。上記と同じエラー チェックが、動的にロードされるモジュールにも適用されます。

たとえば、私は先日クライアントをサポートしていました。彼女はブラウザをロードしていましたが、特にエラーもなくクラッシュし続けました。基本的なトラブルシューティングはほとんど完了しましたが、それでもクラッシュが続いていました。これは、必要な 1 つ以上のファイルが問題を引き起こしていることを意味します。このようなケースのトラブルシューティングは常に困難ですが、Dependency Walker を使用すると、依存ファイルの 1 つに何か問題があるかどうかを確認できます。

そこで、ブラウザのプロセスをDependency Walkerにロードしました。

次に、リストを 1 つずつ拡張していきます。

次に、各モジュールを調べて、何か疑わしいものが見つかるかどうかを確認しました。モジュールをスクロールしたところ、幸運にも問題を見つけることができました。

特定の DLL ファイルが欠落していることがわかりました。そこで、Windows インストール DVD のファイルを置き換えました。それで問題は解決しました。これでブラウザはクラッシュしなくなりました。

このツールを使用して依存関係エラーの可能性を検出するのがいかに簡単であるかが伝われば幸いです。

Windows システムでのDependency Walkerの使用方法

dependency Walker を使用してエラーを調査するには、次の手順に従います。

  1. 依存関係ウォーカーを開始する
  2. [ファイル] メニューの [開く] をクリックして、問題のあるファイルをロードします。
  3. [表示] メニューで、[プロファイリングの開始] をクリックします。 [プロファイル モジュール] ダイアログ ボックスが表示されます
  4. 必要なスイッチ、プログラム引数、その他のオプションを入力し、「OK」をクリックします。

dependency Walker は、エラーが発生する前に dwinject.dll を挿入し、エラー発生時に発生したイベントをログに記録します。

依存関係ウォーカーのダウンロード

依存関係ウォーカーは次からダウンロードできます。ここ