IE の調査に必要なダンプ ファイルの採取について

Last Update: feedback 共有

こんにちは。

Internet Explorer は Web コンテンツ (html や CSS、JavaScript、画像、動画などなど) を表示 / 動作させるための、いわば「プラットフォーム」です。
Web コンテンツ自体の構成やその中で行われている処理が、プラットフォームであるInternet Explorer に影響を及ぼすことも多くあります。
また、Internet Explorer を取り巻く環境に影響を受けることも多々あります。
例えば、アドオンやサードパーティ製のソフトウェアの影響を受けてしまうことも。

このような状況で Internet Explorer を使っていると、「Internet Explorer は動作を停止しました」や「XXXX は応答していません」という事象が発生することがあります。
そんなとき、原因究明の最初の一歩となる情報がダンプ ファイルです。

ダンプ ファイルは、採取していただく瞬間の状態を記録するものとなります。
写真と同じと考えていただけると分かりやすいと思います。
写真を撮るとき、シャッターチャンスを逃してしまい、撮りたいものが何も写っていないということがありますが、実はダンプ ファイルも同じことが言えます。
このため、ダンプ ファイルはタイミングを見計らって採取していただくことがとても重要となります。

お問い合わせいただいた際に、上述のような事象の場合はダンプ ファイルの取得をお願いすることがありますが、せっかく取得していただいたファイルに手がかりが何も残っていないということがよくあります。
このため今回はダンプ ファイルの採取方法についてご案内いたします。

以下のような手順でダンプ ファイルを採取していただき、お問い合わせの際にご提供いただけますと、事象の解決までスムーズに進められますので、ぜひご確認ください!

ハングしているときには

Internet Explorer がハングしている (応答なし) ときは、以下のようなメッセージが表示されています。

  IEHangBar

この場合は、渋滞中の高速道路と似ています。渋滞が発生している最中にその状況を確認しなければ、解消してからでは何が起こっていたのかは分かりません。
さらに、渋滞の列のどこで何が起こっているのかを確認するためには、複数の箇所を確認する必要があります。

このためハングしている場合は、ダンプファイルは上記の通知バーが表示されている間(事象が起こっている間)に、“間隔をあけて”、“複数回” ダンプファイルの採取を実行してください。
こうすることで、処理がループしているような箇所を可能な限り絞り込むための有効な情報となります。
通知バーが消えてしまいますと、ハング状態から回復し、正常な状態となってしまうため、重要な証拠写真を取り損ねてしまいます。
採取のタイミングには十分ご注意ください。

クラッシュしているときには

Internet Explorer がクラッシュしている(異常終了)のときは、以下のようなメッセージが表示されています。

 IEcrashDialog

この場合は、交通事故でいうと “事故直後” と同様で、すでに事象が発生している状態となります。
事故によりどこが大きく破損しているか、被害者はいるのか、など事故につながる情報を収集することと似ています。
すでに起こった事象の情報が取得できればよいため、ダンプファイルの採取(証拠写真の撮影)は “1 回” で大丈夫です。

ここまで注意点をまとめてきましたが、何より一番大事なことは、事象を再現させること になります。
なかなか再現しない場合は、まずは再現率を上げる、もしくは再現条件の確立を目指しましょう。
その過程で、ダンプファイルを取得することなく解決する場合も多々あります。

ここまでできましたら、以下の操作で証拠写真(ダンプファイル)を撮りましょう。

事象が再現したら

事象が再現しましたら、以下の手順でダンプファイルを採取します。
ハングの場合もクラッシュの場合も採取方法は同じです。
ただし、ハングの場合は後述にもありますように、複数回操作をしていただく必要がありますのでご注意ください!

1.タスクバーを右クリックして、タスク マネージャーを起動します。

Step1

  1. [詳細] タブを開きます。

Step2

  1. [名前] 列をクリックしてソートし、”iexplore.exe” を探します。
    ※ “iexplore.exe” のプロセスは複数存在しますので、すべてのプロセスに対して取得してください。

  2. 3 で探したすべての iexplore.exe に対して 1 つずつ、右クリック メニューから [ダンプ ファイルの作成] を選択します。

Step4

  1. ダンプ ファイルの作成に成功すると、ダイアログで保存場所が表示されるため、確認しておきます。
    ※ 既定では、環境変数 TEMP フォルダー以下に作成され、iexplore.DMP、iexplore (2).DMP のようなファイル名となります。

Step5

※ クラッシュの場合の手順はここまでです。

★ハング事象の場合

上述の手順3~5 を間隔を空けながら 2、3 回繰り返します。
※ 例えば、事象が 2 ~ 3 分続く場合は、30 秒ごとに採取するなど、事象発生時間に合わせて採取します。
※ 上記のスクリーンショットの例では、3つの iexplore.exe が存在したため、同じ操作を2回ずつ実施すると、iexplore.DMP、iexplore (2).DMP、iexplore (3).DMP、… と6つのファイルができます。

★ハング事象の発生時間が短いなら

ハングの場合は事象発生中に複数回実施する必要があるため、事象発生時間が短い場合は上述の手順では採取が難しいことがあります。
その場合、ProcDump というツールを利用すると、上述の手順 4 でご紹介しているIE のすべてのプロセスのダンプ ファイルを一気に取得できます。
タスクマネージャーから手動で実行する手間がないので、ハング事象が 30 秒などと短い場合にはこちらの方法で取得することをお勧めしております。

1.ProcDump ツールは以下のサイトから実行ファイルをダウンロードできます。

 https://docs.microsoft.com/en-us/sysinternals/downloads/procdump

2.ProcDump の実行ファイルと以下の VBScript を事前に端末に配置します。
 ※ いつでも実行できますので、IE を起動して、コマンドを実行したときに、ダンプ ファイルが取得できるかを事前にご確認ください。

なお、以下のサンプルスクリプトでは、C:\dump フォルダーに procdump.exe を格納し、コマンド実行すると、c:\dump フォルダーに、IE のダンプを出力するという例になります。
※ フォルダーは任意の場所を指定してください。

1
2
3
4
5
6
7
8
9
10
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") 
Set colItems = objWMIService.ExecQuery("Select * From Win32_Process")

Set WshShell = WScript.CreateObject("WScript.Shell")

For Each objItem in colItems
If InStr(LCase(objItem.CommandLine), "iexplore.exe") Then
WshShell.Exec("c:\dump\procdump.exe -accepteula -ma "&objItem.ProcessID&" c:\dump\ie"&objItem.ProcessID&".dmp")
End If
Next

3.IE を起動して、ハングの事象が発生しましたら、発生中に間隔をあけて手順 2 の VBScript を数回実行します。

原因究明の最初の一歩となるダンプファイルが取得できましたら、発生する現象について詳細なご説明を添えて、私共、サポートチームへお問い合せください!

今回は以上です。 それでは、また次回!

なお、本ブログは弊社の公式見解ではなく、予告なく変更される場合があります。
もし公式な見解が必要な場合は、弊社ドキュメント (https://docs.microsoft.com/ や https://support.microsoft.com) をご参照いただく、もしくは私共サポートまでお問い合わせください。