Hebikuzure's Tech Memo

2008年9月15日

デバッグ バージョンの Wininet.dll を使用する

Filed under: Internet Explorer — hebikuzure @ 7:49 AM

MSKB 884931
How to use the debug version of the Wininet.dll file for Internet Explorer
http://support.microsoft.com/kb/884931/en-us


7月21日の記事「Internet Explorer のサポート ツールとデバッグ ツール」で書いたように、Internet Explorer の内部的な動作のログを得る方法として、Wininet.dll のデバッグ バージョンを使用してデバッグ ログを採取する事もできる。
この方法のメリットは、STRACEやFiddlerよりはるかに詳細な動作ログか採取できる点である。Wininet.dll は Windows Internet API (WinInet API) の実体なので、そのログとは要するに WinInet API の呼び出しと結果についての記録になる。そのためサーバー/クライアント間の通信内容だけでなく、プロトコル ハンドらの呼び出しや、クライアント内部のインターネット一時ファイルの生成/記録/呼び出し/削除などの動作についても詳細なログが採取できる。

反面、採取にやや手がかかるのと、採取したログの詳細な解析には WinInet API に関する知識が必要になるため、サーバー/クライアント間の通信内容 (例えば HTTP ヘッダーなど) を確認したいだけなら STRACEやFiddler の方が使いやすく解析もしやすい。どちらの方法を取るのかは、目的を考えて決定すべきである。

解析に必要な WinInet API  のリファレンスは、以下のページに掲載されている
WinINet Reference
http://msdn.microsoft.com/en-us/library/aa385483(VS.85).aspx

WinInet のデバッグ ログの採取方法は KB 884931 にも記載されているが、簡単にまとめると以下の通りとなる。

  1. Microsoft ダウンロード センターよりデバッグ バージョンの Wininet.dll を入手する
    884931 – How to use the debug version of the Wininet.dll file for Internet Explorer
    http://www.microsoft.com/downloads/details.aspx?FamilyID=57ad7099-de71-4b1c-8147-725545454146&displaylang=en
  2. ダウンロードした IE-KB884931-v2-x86-enu.exe を実行し、収録されているファイルを展開する
    このファイルには以下のバージョンの Internet Explorer 用の Wininet.dll と Urlmon.dll のデバッグ バージョンが収録されている
    (現時点では Windows Vista / Windows Server 2008 用のバージョンは収録されていない)
    Internet Explorer 5.0 (Windows 2000 SP4)
    Internet Explorer 6.0 SP1 (Windows 2000 SP4)
    Internet Explorer 6.0 (Windows Server 2003 RTM) x86 / ia64 用あり
    Internet Explorer 6.0 (Windows Server 2003 SP1 / SP2) それぞれ x86 / x64 / ia64用あり
    Internet Explorer 6.0 (Windows XP SP2) x86 / x64 用あり
    Internet Explorer 7.0 x86 / x64 用あり
  3. Internet Explorer のインストールされているフォルダ (通常なら C:\Program Files\Internet Explorer) に、上記で展開したファイルからプラットフォームに合ったバージョンの Wininet.dll と urlmon.dll をコピーする
  4. Internet Explorer のインストールされているフォルダに Iexplore.exe.local という名前のファイルを作成する。内容は空で良い。
  5. コマンド プロンプトを開き、カレント ディレクトリを Internet Explorer のインストールされているフォルダに移動する
  6. 以下を実行する
    SET WININETLOG=1
  7. 続けて以下のコマンドで Internet Explorer を起動する
    iexplore.exe

ログ ファイルが保存される場所は、デスクトップまたは Internet Explorer のインストールされているフォルダになるが、以下のような環境変数をセットする事で変更できる。
set wininetlogfile=c:\temp\MyNewLog.log
また以下の環境変数をセットすると、urlmon.dll のデバッグ ログも採取できる。
SET URLMONLOG=1

Internet Explorer はデバッグ バージョンの Wininet.dll と Urlmon.dll をロードして起動するので、起動後の全ての動作がログに記録される。そのため実際のログ採取に当たっては、採取対象の動作がすぐに再現できるよう、予めスタート ページの設定をするなど最小の動作で再現できるような工夫をしておくと良い。
また上記のようにログを採取するかどうか、Internet Explorer 起動後に変更できないし、またログに記録される情報も多いため、ログ ファイルは非常に大きなサイズになる。そのため現象の再現性がはっきりしていないような場合、Wininet ログの採取はあまりお勧めできない。

なお IE-KB884931-v2-x86-enu.exe の展開先のフォルダに作成される inetdbg.txt には KB より詳細な情報が記載されているので、作業前にはこちらも参照すると良い。

Internet Explorer がデバッグ バージョンの DLL をロードする仕組みについては、以下のページに解説がある。
Dynamic-Link Library Redirection
http://msdn.microsoft.com/en-us/library/ms682600.aspx

広告

コメントする »

まだコメントはありません。

RSS feed for comments on this post. TrackBack URI

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

WordPress.com で無料サイトやブログを作成.

%d人のブロガーが「いいね」をつけました。