2007/11/05

Windows 등 오류코드의 의미 찾기 - Error Code Look-up

Windows 환경에서, 운영체제 자체에서 발생하는 오류 이벤트 또는 소프트웨어 제품의 오류 이벤트에서 발생하는 메시지를 종종 코드에 의한 메시지만 보여줍니다.

그러한 코드는, 실제 그 오류 코드가 어떻게 발생하였는지 전후 상황을 조사해 보면 짐작은 할수 있지만 정확한 의미는 알수가 없습니다.

메시지박스로 보여주기도 합니다만, 이벤트로그중에 다음과 같은 예를 볼 수 있습니다.

이벤트 형식: 정보
이벤트 원본: Save Dump
이벤트 범주: 없음
이벤트 ID: 1001
날짜:  2007-09-11
시간:  오전 10:18:20
사용자:  N/A
컴퓨터: WSSPLEX-WEB
설명:
컴퓨터가 오류 검사 후 다시 부트되었습니다. 오류 검사: 0x0000007f (0x00000008, 0x00000000, 0x00000000, 0x00000000). Microsoft Windows 2000 [v15.2195]. 덤프 저장 위치: C:\WINNT\MEMORY.DMP.

실제로 여러이유에 의해서 발생할수 있지만, 정확하게 0x0000007f 코드가 어떤 의미를 갖고 있는지 알아야 대략 어떤 이유에 의해서 문제가 발생했는지 추측을 할수 있습니다.

물론, 그 코드의 확장 문자열을 안다고 해서 원인을 모두 알수 있는것은 아닙니다만,..^^

이러한, 오류코드의 의미를 알수 있도록 Microsoft 에서는 "Microsoft Exchange Server Error Code Look-up" 제공해 주고 있습니다.

다운로드:
http://www.microsoft.com/downloads/details.aspx?FamilyID=be596899-7bb8-
4208-b7fc-09e02a13696c&DisplayLang=en



뭐 이 유틸이 현재는 거의 필요가 없어지고 있을 정도로  제품 개발 단계에서 부터 좀더 사용자 친화적인 오류 메시지를 보여주고 있을 뿐만 아니라, 오류 보고 시스템에 의해서 자세한 오류내용과 함께 자동으로 Microsoft 에 보고하여 제품 개선에 까지 이용하고 있기 때문 입니다.

그렇다고 해서,. 모든 오류메시지가 사용자 친화적인 것은 아니며 아직도 일부는 여전이 알기 어려운 오류메시지를 뿌리고 있습니다.

D:\Err>Err.exe /?

Table ? could not be found. USAGE: Err.exe {value} [value] [value] ...
 where <value> must be of one of the following forms:
   1. decorated hex (0x54f)
   2. implicit hex  (54f)
   3. ambiguous     (1359)
   4. exact string  (=ERROR_INTERNAL_ERROR)
   5. substring     (:INTERNAL_ERROR)


사용법은 간단합니다. 그냥 현재 보여주는 오류내용을 변수로 넣어주기만 하면 됩니다.


D:\Temp\Err>Err.exe c00007d0
# for hex 0xc00007d0 / decimal -1073739824 :
  EVENT_SRV_SERVICE_FAILED                                      netevent.h
# 1 matches found for "c00007d0"

D:\Temp\Err>Err.exe c0000184
# for hex 0xc0000184 / decimal -1073741436 :
  STATUS_INVALID_DEVICE_STATE                                   ntstatus.h
# The device is not in a valid state to perform this request.
# 1 matches found for "c0000184"

D:\Temp\Err>Err.exe 0x0000007f
# for hex 0x7f / decimal 127 :
  UNEXPECTED_KERNEL_MODE_TRAP                                   bugcodes.h
# Run a system diagnostic utility supplied by your hardware
# manufacturer.
# In particular, run a memory check, and check for faulty or
# mismatched
# memory. Try changing video adapters.
# Disable or remove any newly installed hardware and drivers.
# Disable or
# remove any newly installed software. If you need to use
# Safe Mode to
# remove or disable components, restart your computer, press
# F8 to select
# Advanced Startup Options, and then select Safe Mode.
  NMERR_REMOTE_VERSION_OUTOFSYNC                                netmon.h
  SQL_127_severity_15                                           sql_err
# A TOP N value may not be negative.
  ERROR_PROC_NOT_FOUND                                          winerror.h
# The specified procedure could not be found.
# 4 matches found for "0x0000007f"


위 예제에서 볼수 있는 것은, Windows 에 이용되는 라이브러리를 통해서 오류메시지를 찾는 다는 것입니다.

물론, "UNEXPECTED_KERNEL_MODE_TRAP" 와 같은 확장 문자열을 통해서 원인을 알아 낼수 있는것은 그닥?.. 거의?.. 없습니다.

내용만 보고 대충 감을 잡을 수는 있겠지만, 정확한 의미를 알려면 또 웹사이트에서 검색을 해야 합니다.

이 유틸이 배포가 된지가 꽤 오래된것이므로 (2003년), 현재 최근의 추가된 오류코드는 찾을수 없습니다. 찾을려면 Windbg 같은 디버거 툴을 이용해야 합니다.

http://www.microsoft.com/whdc/devtools/debugging/default.mspx

물론, 디버거 사용법 자체가 까다롭기 때문에 쉽게 알아낼수 있는데에는 그닥 추천되지는 않습니다만, 디버거를 이용할 경우 보다 더 자세한 함수까지 알아 낼수 있습니다.

댓글 없음:

댓글 쓰기

가장 많이 본 글