なにかと便利な Err.exe
こんにちは。Windows テクノロジー サポートの永野です。
今回は、私たちサポート担当が良く使うコマンド Err.exe をご紹介します。
まずは、以下のサイトからダウンロードしてください。
Microsoft Exchange Server Error Code Look-up
ダウンロードできたら、実行して解凍してください。
解凍してできたフォルダ内の 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 に入れてみてください。