[WinDbg Command]!error, .enable_long_status

블로그를 보다가 좋은 디버거 명령을 발견하였습니다. (!error, .enable_long_status)

첫번째 좋은 명령은 .enable_long_status 입니다.
아래와 같이 명령을 실행하면 우리가 NTSTATUS.H 에서 보는 형태의 에러 값을 볼 수 있습니다.

0:000> dt status
status = -1073741823
0:000> .enable_long_status 1
0:000> dt status
status = 0xC0000001

두번째 명령은 !error 입니다.
win32, winsock, NTSTATUS, NetAPI 의 Error code 값을 넣으면 Error 정보를 볼 수 있습니다.

Syntax
!error Value [Flags]

Parameters:
Value  Specifies one of the following error codes:
         Win32
         Winsock
         NTSTATUS
         NetAPI

Flags 가 1 로 Set 되면 해당 error code 를 NTSTATUS 에서 읽어 옵니다.

Dump out the value as Win32
0:000>  !error 1
Error code: (Win32) 0x1 (1) - Incorrect function.

Dump out the value as NTSTATUS
0:000> !error 1 1
Error code: (NTSTATUS) 0x1 - STATUS_WAIT_1

Dump out an NTSTATUS value that is not ambiguous with a Win32 value
0:000> !error c0000001
Error code: (NTSTATUS) 0xc0000001 (3221225473) - {Operation Failed}  The requested operation was unsuccessful.