Ask CORE

Microsoft Japan Windows Technology Support

なにかと便利な Err.exe

こんにちは。Windows テクノロジー サポートの永野です。

 

今回は、私たちサポート担当が良く使うコマンド Err.exe をご紹介します。

まずは、以下のサイトからダウンロードしてください。

 

Microsoft Exchange Server Error Code Look-up

http://www.microsoft.com/downloads/details.aspx?familyid=be596899-7bb8-4208-b7fc-09e02a13696c&displaylang=en

 

ダウンロードできたら、実行して解凍してください。

解凍してできたフォルダ内の Err.exe を C:\Windows\System32 などコマンド プロンプトのパスが通っているフォルダに移動してください。

ここまでが準備になります。

 

では実際に使ってみましょう。

まずは、どういうときに使うのかということですが、イベント ログやクラスタ ログなどのログにエラーが記録されているときです。

例えば、ログを見ていて以下のようなログを発見したとします。

 

05/28/2010  xx:xx:xx AM  情報  ServerA  1001  Save Dump  N/A  N/A  このコンピュータはバグチェック後、再起動されました。バグチェック:  0x0000008e (0xc0000005, 0x00000000 , 0x00000000, 0x00000000)  ダンプが保存されました: C:\MEMORY.DMP

 

イベントに意味ありげな 16 進数が出たら、とりあえず Err.exe を使ってみましょう。

この場合、0x0000008e と 0xc0000005 が使えそうな値なのでこれを入れてみましょう。

 

C:\>err 8e

# for hex 0x8e / decimal 142 :

  KERNEL_MODE_EXCEPTION_NOT_HANDLED                             bugcodes.h

  SQL_142_severity_15                                           sql_err

# Incorrect syntax for definition of the ‘%ls’ constraint.

  ERROR_BUSY_DRIVE                                              winerror.h

# The system cannot perform a JOIN or SUBST at this time.

  SCW_E_DIRNOTEMPTY                                             wpscoserr.mc

# The directory is not empty%0

# 4 matches found for “8e”

 

 

 

 

C:\>err c0000005

# for hex 0xc0000005 / decimal -1073741819 :

  STATUS_ACCESS_VIOLATION                                       ntstatus.h

# The instruction at “0x%08lx” referenced memory at

# “0x%08lx”. The memory could not be “%s”.

  USBD_STATUS_DEV_NOT_RESPONDING                                usb.h

# 2 matches found for “c0000005”

 

 

 

この出力内容から、最初の 0x8e はバグのコードなので KERNEL_MODE_EXCEPTION_NOT_HANDLED と推測できます。

c00000005 は、KERNEL_MODE_EXCEPTION_NOT_HANDLED と関連のありそうな STATUS_ACCESS_VIOLATION でしょう。

 

意味の分からなかったログの意味がなんとなく見えてきませんか?

無意味な数字の羅列に見えますが、「アクセス違反が発生して、それをうまく処理できなかったから落ちた」

ことをあらわしていたのです。

 

他のログでも同じようなことができます。

例えばクラスタログです。

 

00000000.00000000::2010/05/28-xx:xx:xx.xxx ERR [RM] Exception. Code = 0xc0000194, Address = 0x00000000

00000000.00000000::2010/05/28-xx:xx:xx.xxx ERR [RM] Exception parameters: 0,

00000000, 00000000, 00000000

00000000.00000000::2010/05/28-xx:xx:xx.xxx INFO [RM] GenerateMemoryDump: Start

memory dump to file C:\WINDOWS\Cluster\resrcmon.dmp

 

リソース モニタが突然落ちたときのログです。

このログの例外コードを Err.exe に入れてみましょう。

 

C:\>err c0000194

# for hex 0xc0000194 / decimal -1073741420

  STATUS_POSSIBLE_DEADLOCK                                       ntstatus.h

# {EXCEPTION}

# Possible deadlock condition.

 

 

 

上の出力結果から、デッドロックのような状態で落ちたことが分かります。

 

このように、色々なログの値を Err.exe に入れてみることで、ログの内容をより深く理解することが出来ます。

ぜひログを確認するときには、Err.exe を活用してみてください。

また、Err.exe は 0x ではじまる 16 進数のエラーコード以外にも、-2147024875 などの 10 進数のエラーコードにも対応しています。

10 進の数のときでも、怪しいと感じたらぜひ Err.exe に入れてみてください。