通常のトラブルシューティング手順だけでは解決できない場合があります。フォレンジックなトラブルシューティングのような、さらに上のことを行う必要があるかもしれません。今日はそれを助けるツールについて書きます。依存関係ウォーカーするためのツールです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 を使用してエラーを調査するには、次の手順に従います。
- 依存関係ウォーカーを開始する
- [ファイル] メニューの [開く] をクリックして、問題のあるファイルをロードします。
- [表示] メニューで、[プロファイリングの開始] をクリックします。 [プロファイル モジュール] ダイアログ ボックスが表示されます
- 必要なスイッチ、プログラム引数、その他のオプションを入力し、「OK」をクリックします。
dependency Walker は、エラーが発生する前に dwinject.dll を挿入し、エラー発生時に発生したイベントをログに記録します。
依存関係ウォーカーのダウンロード
依存関係ウォーカーは次からダウンロードできます。ここ。