dt (Display Type)
타입을 보여주는 명령인데 주로 구조체 타입을 확인할 때 사용합니다.
이 명령 역시 WinDbg Help 에는 무지 다양하고 복잡한 옵션들이 있습니다.
하지만 제가 주로 사용하는 구조체 확인에 대한 내용만 다루도록 하겠습니다.
1) dt 구조체타입이름
- 구조체의 멤버 필드를 확인합니다.
kd> dt _IO_STACK_LOCATION
+0x000 MajorFunction : UChar
+0x001 MinorFunction : UChar
+0x002 Flags : UChar
+0x003 Control : UChar
+0x004 Parameters : __unnamed
+0x014 DeviceObject : Ptr32 _DEVICE_OBJECT
+0x018 FileObject : Ptr32 _FILE_OBJECT
+0x01c CompletionRoutine : Ptr32
+0x020 Context : Ptr32 Void
구조체타입이름은 다음과 같이 선언된 구조체의 경우 맨 앞에 선언한 구조체 이름을 사용합니다.
typedef struct _IO_STACK_LOCATION {
...
} IO_STACK_LOCATION, *PIO_STACK_LOCATION;
2) dt 구조체타입이름 구조체주소
- 구조체의 멤버 필드와 실제 내용을 확인합니다.
kd> dt _IO_STACK_LOCATION 816441c0
+0x000 MajorFunction : 0xe ''
+0x001 MinorFunction : 0 ''
+0x002 Flags : 0x1 ''
+0x003 Control : 0 ''
+0x004 Parameters : __unnamed
+0x014 DeviceObject : 0x815d2030 _DEVICE_OBJECT
+0x018 FileObject : 0x8166b288 _FILE_OBJECT
+0x01c CompletionRoutine : (null)
+0x020 Context : (null)
3) dt 구조체타입이름 멤버필드이름 [구조체주소]
- 구조체에서 특정한 멤버필드만 확인합니다.
kd> dt _IO_STACK_LOCATION MajorFunction
+0x000 MajorFunction : UChar
kd> dt _IO_STACK_LOCATION MajorFunction 816441c0
+0x000 MajorFunction : 0xe ''
4) dt -r 구조체타입이름 [구조체주소]
- 구조체의 멤버필드중 구조체가 있으면 펼쳐서 보여줍니다.
kd> dt -r _IO_STACK_LOCATION 816441c0
+0x000 MajorFunction : 0xe ''
+0x001 MinorFunction : 0 ''
+0x002 Flags : 0x1 ''
+0x003 Control : 0 ''
+0x004 Parameters : __unnamed
+0x000 Create : __unnamed
+0x000 SecurityContext : (null)
+0x004 Options : 0
+0x008 FileAttributes : 0x18
+0x00a ShareAccess : 0x22
+0x00c EaLength : 0
+0x000 CreatePipe : __unnamed
+0x000 SecurityContext : (null)
+0x004 Options : 0
...
5) dt -r[숫자] 구조체타입이름 [구조체주소]
- 구조체의 멤버필드중 구조체가 있으면 숫자만큼만 펼쳐서 보여줍니다.
kd> dt -r1 _IO_STACK_LOCATION 816441c0
+0x000 MajorFunction : 0xe ''
+0x001 MinorFunction : 0 ''
+0x002 Flags : 0x1 ''
+0x003 Control : 0 ''
+0x004 Parameters : __unnamed
+0x000 Create : __unnamed
+0x000 CreatePipe : __unnamed
...
6) dt 변수이름
- 심볼이 맞춰져 있다면 변수이름에 해당하는 타입과 정보를 보여줍니다.
kd> dt pIrpStack
Local var @ 0xf9c8bc30 Type _IO_STACK_LOCATION*
0x816441c0
+0x000 MajorFunction : 0xe ''
+0x001 MinorFunction : 0 ''
+0x002 Flags : 0x1 ''
+0x003 Control : 0 ''
+0x004 Parameters : __unnamed
+0x014 DeviceObject : 0x815d2030 _DEVICE_OBJECT
+0x018 FileObject : 0x8166b288 _FILE_OBJECT
+0x01c CompletionRoutine : (null)
+0x020 Context : (null)
http://www.driveronline.org/bbs/view.asp?tb=tipbbs&GotoPage=4&s_bulu=&s_key=&no=56