그러한 코드는, 실제 그 오류 코드가 어떻게 발생하였는지 전후 상황을 조사해 보면 짐작은 할수 있지만 정확한 의미는 알수가 없습니다.
메시지박스로 보여주기도 합니다만, 이벤트로그중에 다음과 같은 예를 볼 수 있습니다.
이벤트 형식: 정보
이벤트 원본: 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.
이벤트 원본: 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)
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
물론, 디버거 사용법 자체가 까다롭기 때문에 쉽게 알아낼수 있는데에는 그닥 추천되지는 않습니다만, 디버거를 이용할 경우 보다 더 자세한 함수까지 알아 낼수 있습니다.
댓글 없음:
댓글 쓰기