dt (型の表示)dt (Display Type)

Dt コマンドでは、ローカル変数、グローバル変数、またはデータ型に関する情報が表示されます。The dt command displays information about a local variable, global variable or data type. これにより、単純なデータ型に加え、構造と共用体に関する情報を表示できます。This can display information about simple data types, as well as structures and unions.

User-Mode 構文User-Mode Syntax

dt [-DisplayOpts] [-SearchOpts] [module!]Name [[-SearchOpts] Field] [Address] [-l List] 
dt [-DisplayOpts] Address [-l List] 
dt -h 

Kernel-Mode 構文Kernel-Mode Syntax

[Processor] dt [-DisplayOpts] [-SearchOpts] [module!]Name [[-SearchOpts] Field] [Address] [-l List] 
dt [-DisplayOpts] Address [-l List] 
dt -h 


プロセッサ Processor
必要な情報が含まれているプロセスを実行しているプロセッサを指定します。Specifies the processor that is running the process containing the information needed. 詳細については、「 マルチプロセッサ構文」を参照してください。For more information, see Multiprocessor Syntax. プロセッサはカーネルモードでのみ指定できます。Processors can only be specified in kernel mode.

Displaydisplay DisplayOpts
次の表に示す1つ以上のオプションを指定します。Specifies one or more of the options given in the following table. これらのオプションの前にはハイフンが付きます。These options are preceded by a hyphen.

オプションOption 説明Description


各配列要素をインデックスと共に新しい行に表示します。Show each array element on a new line, with its index. 数量要素の合計が表示されます。A total of quantity elements will be displayed. Aquantityの間にスペースを配置することはできません。There must be no space between the a and the quantity. -Aの後に数字が付いていない場合は、配列内のすべての項目が表示されます。If -a is not followed by a digit, all items in the array are shown. -A[quantity] スイッチは、この方法で表示する各型名またはフィールド名の直前に表示されます。The -a[quantity] switch should appear immediately before each type name or field name that you want displayed in this manner.


ブロックを再帰的に表示します。Display blocks recursively. 表示されている構造体にサブ構造体が含まれている場合は、任意の深度に再帰的に展開され、完全に表示されます。If a displayed structure contains substructures, it is expanded recursively to arbitrary depths and displayed in full. ポインターは、サブ構造体ではなく元の構造にある場合にのみ拡張されます。Pointers are expanded only if they are in the original structure, not in substructures.


圧縮出力。Compact output. 可能であれば、すべてのフィールドが1行に表示されます。All fields are displayed on one line, if possible. ( -A スイッチと共に使用する場合、各配列要素は、複数行のブロックとして書式設定されるのではなく、1つの行を受け取ります)。(When used with the -a switch, each array element takes one line rather than being formatted as a several-line block.)


アスタリスクで終わっている 名前 で使用する場合は、 nameで始まるすべての型の詳細出力を表示します。When used with a Name that is ended with an asterisk, display verbose output for all types that begin with Name. 名前の末尾にアスタリスクが付いていない場合は、詳細出力を表示します。If Name does not end with an asterisk, display verbose output.


Dtが型を列挙するように強制します。Forces dt to enumerate types. このオプションは、 dt によって 名前 の値が型ではなくインスタンスとして誤って解釈される場合にのみ必要です。This option is only needed if dt is mistakenly interpreting the Name value as an instance rather than as a type.


サブタイプをインデントしません。Do not indent the subtypes.


構造体のフィールドのオフセット値を省略します。Omit offset values of the structure fields.


アドレス は、仮想アドレスではなく、物理アドレスです。Address is a physical address, rather than a virtual address.


サブタイプフィールドを再帰的にダンプします。Recursively dumps the subtype fields. Depthが指定されている場合、この再帰は深さレベルの後に停止します。If depth is given, this recursion will stop after depth levels. 深さは1から9までの数字にする必要があります。また、 rdepthの間にスペースを配置することはできません。The depth must be a digit between 1 and 9, and there must be no space between the r and the depth. -R[depth] スイッチは、アドレスの直前に表示されます。The -r[depth] switch should appear immediately before the address.

-s サイズ-s size

バイト単位のサイズが sizeの値と等しい型のみを列挙します。Enumerate only those types whose size in bytes equals the value of size. -Sオプションは、型が列挙されている場合にのみ有効です。The -s option is only useful when types are being enumerated. -Sが指定されている場合、 -eも常に暗黙的に指定されます。When -s is specified, -e is always implied as well.


型のみを列挙します。Enumerate types only.


詳細出力。Verbose output. これにより、構造体の合計サイズや要素の数などの追加情報が提供されます。This gives additional information such as the total size of a structure and the number of its elements. これを -y 検索オプションと共に使用すると、型情報が関連付けられていないものも含め、すべての記号が表示されます。When this is used along with the -y search option, all symbols are displayed, even those with no associated type information.

Searchopts SearchOpts
次の表に示す1つ以上のオプションを指定します。Specifies one or more of the options given in the following table. これらのオプションの前にはハイフンが付きます。These options are preceded by a hyphen.

オプションOption 説明Description


これは、次のパラメーターが名前であることを示します。This indicates that the next parameter is a name. これは、次の項目がすべて16進文字で構成されている場合に使用します。それ以外の場合は、アドレスとして取得されるためです。This should be used if the next item consists entirely of hexadecimal characters, because it will otherwise be taken as an address.


これは、次のパラメーターが名前の先頭であり、必ずしも名前全体ではないことを示しています。This indicates that the next parameter is the beginning of the name, not necessarily the entire name. -Yが含まれている場合は、すべての一致が一覧表示され、その後、リスト内の最初の一致に関する詳細情報が示されます。When -y is included, all matches are listed, followed by detailed information on the first match in the list. -Yが含まれていない場合は、完全一致のみが表示されます。If -y is not included, only exact matches will be displayed.

モジュール module
この構造体を定義するモジュールを指定する省略可能なパラメーター。An optional parameter specifying the module that defines this structure. グローバル変数または型と同じ名前のローカル変数または型がある場合は、グローバル変数を指定する モジュール を含める必要があります。If there is a local variable or type with the same name as a global variable or type, you should include module to specify that you mean the global variable. そうしないと、ローカル変数が大文字と小文字を区別せず、グローバル変数が大文字と小文字を区別する場合でも、 dt コマンドによってローカル変数が表示されます。Otherwise, the dt command will display the local variable, even if the local variable is a case-insensitive match and the global variable is a case-sensitive match.

名前 Name
型またはグローバル変数の名前を指定します。Specifies the name of a type or global variable. 名前 の末尾にアスタリスク () が付いている場合 * は、すべての一致の一覧が表示されます。If Name ends with an asterisk (*), a list of all matches is displayed. したがって、 Dt \ A _ は、"A" で始まるすべてのデータ型、グローバル、およびスタティックを一覧表示しますが、これらの型の実際のインスタンスは表示されません。Thus, dt A\ _ will list all data types, globals, and statics beginning with "A", but will not display the actual instances of these types. (_ -V* display オプションを同時に使用すると、関連付けられた型情報を持つシンボルだけでなく、すべての記号が表示されます)。また、 name をピリオド (.) に置き換えて、最近使用した 名前 の値を繰り返すように指定することもできます。(If the _ -v* display option is used at the same time, all symbols will be displayed -- not just those with associated type information.) You can also replace Name with a period (.) to signify that you want to repeat the most recently used value of Name.

名前 にスペースが含まれている場合は、かっこで囲む必要があります。If Name contains a space, it should be enclosed in parentheses.

フィールド Field
表示するフィールドを指定します。Specifies the field(s) to be displayed. フィールド を省略した場合は、すべてのフィールドが表示されます。If Field is omitted, all fields are displayed. フィールド の後にピリオド (.) がある場合は、このフィールドの第1レベルサブフィールドも表示されます。If Field is followed by a period (.), the first-level subfields of this field will be displayed as well. フィールド の後に一連のピリオドが続く場合、サブフィールドは期間の数と同じ深さに表示されます。If Field is followed with a series of periods, the subfields will be displayed to a depth equal to the number of periods. -Y 検索オプションを使用した場合と同じように、フィールド名の後にピリオドが続くと、プレフィックスの一致として扱われます。Any field name followed by a period will be treated as a prefix match, as if the -y search option was used. フィールド の後にアスタリスク () がある場合は、フィールド全体では * なくフィールドの先頭のみとして扱われ、すべての一致するフィールドが表示されます。If Field is followed by an asterisk (*), it is treated as only the beginning of the field, not necessarily the entire field, and all matching fields are displayed.

アドレス Address
表示する構造体のアドレスを指定します。Specifies the address of the structure to be displayed. Name を省略する場合は、 address を含め、グローバル変数のアドレスを指定する必要があります。If Name is omitted, Address must be included and must specify the address of a global variable. 特に指定がない限り、アドレス は仮想アドレスとして使用されます。Address is taken to be a virtual address unless otherwise specified. 物理アドレスを指定するには、 -p オプションを使用します。Use the -p option to specify a physical address. レジスタを指定するには、アットマーク ( @ ) を使用します (たとえば、 @eax )。Use an "at" sign ( @ ) to specify a register (for example, @eax).

リスト List
リンクリストをリンクするフィールド名を指定します。Specifies the field name that links a linked list. Address パラメーターを含める必要があります。The Address parameter must be included.



ユーザーモード、カーネルモードuser mode, kernel mode


ライブ、クラッシュダンプlive, crash dump



追加情報Additional Information

メモリ操作の概要とその他のメモリ関連コマンドの説明については、「 メモリの読み取りと書き込み」を参照してください。For an overview of memory manipulation and a description of other memory-related commands, see Reading and Writing Memory.


Dt コマンドの出力には、常に10進数の符号付き数値と16進数の符号なしの数値が表示されます。The dt command output will always display signed numbers in base 10, and unsigned numbers in hexadecimal.

シンボル値を許可する dt のすべてのパラメーターは、文字列のワイルドカードも許可します。All parameters of dt that allow symbol values also allow string wildcards. 詳細については、「 文字列ワイルドカード構文 」を参照してください。See String Wildcard Syntax for details.

-Y オプションと -n オプションは、任意の 名前 または フィールド の前に指定できます。The -y and -n options can precede any Name or Field. -Y オプションを使用すると、型または構造体の名前の先頭を指定できます。The -y option allows you to specify the beginning of the type or structure name. たとえば、 dt-y ALLEN は、 allentown 型に関するデータを表示します。For example, dt -y ALLEN will display data about the type ALLENTOWN. ただし、型 AllentownDt-y A と共に表示することはできません。代わりに、 dt-Ny a を使用する必要があります。これは が有効な16進数の値であり、 -n オプションを指定せずにアドレスとして解釈されるためです。However, you could not display the type ALLENTOWN with dt -y A. Instead, you would have to use dt -ny A, because A is a valid hexadecimal value and would be interpreted as an address without the -n option.

名前 が構造体を示す場合は、すべてのフィールドが表示されます (たとえば、 dt mystruct)。If Name indicates a structure, all fields will be displayed (for example, dt myStruct). 特定のフィールドが1つだけ必要な場合は、 Dt myStruct myField を実行できます。If you only want one specific field, you can do dt myStruct myField. これにより、C が myField を呼び出すメンバーが表示されます。This displays the member that C would call myStruct.myField. ただし、コマンド Dt Mystruct MyField1 myField2 には Mystruct. MyField1mystruct. myField2 が表示されることに注意してください。However, note that the command dt myStruct myField1 myField2 displays myStruct.myField1 and myStruct.myField2. MyField1 は表示されません。 myField2It does not display myStruct.myField1.myField2.

構造体の名前またはフィールドの後に添字が続く場合は、配列の1つのインスタンスを指定します。If a structure name or field is followed by a subscript, this specifies a single instance of an array. たとえば、 Dt myStruct myFieldArray [ 3 ] では、該当する配列の4番目の要素が表示されます。For example, dt myStruct myFieldArray[3] will display the fourth element of the array in question. しかし、型名の後に添字が続く場合は、配列全体を指定します。But if a type name is followed by a subscript, this specifies an entire array. たとえば、 DT CHAR [ 8 ] myptr は、8文字の文字列を表示します。For example, dt CHAR[8] myPtr will display an eight-character string. 添字は、現在の基数に関係なく、常に小数点として取得されます。 0x プレフィックスを付けると、エラーが発生します。The subscript is always taken as decimal regardless of the current radix; an 0x prefix will cause an error.

このコマンドは、からの型情報を使用するためです。pdb ファイルは、任意の CPU プラットフォームのデバッグに自由に使用できます。Because the command uses type information from the .pdb file, it can freely be used to debug any CPU platform.

Dt によって使用される型情報には、すべての Windows 定義型を含め、 typedef で作成されたすべての型名が含まれます。The type information used by dt includes all type names created with typedef, including all the Windows-defined types. たとえば、 unsigned long および char は有効な型名ではありませんが、 ULONG および char はです。For example, unsigned long and char are not valid type names, but ULONG and CHAR are. すべての Windows 型名の完全な一覧については、Microsoft Windows SDK を参照してください。See the Microsoft Windows SDK for a full list of all Windows type names.

独自のコード内の typedef によって作成されたすべての型は、プログラムで実際に使用されている限り、存在します。All types created by typedefs within your own code will be present, as long as they have actually been used in your program. ただし、ヘッダーに定義されているものの、実際には使用されていない型は .pdb シンボルファイルに格納されず、デバッガーはアクセスできません。However, types that are defined in your headers but never actually used will not be stored in the .pdb symbol files and will not be accessible to the debugger. このような型をデバッガーで使用できるようにするには、 typedef ステートメントの 入力 として使用します。To make such a type available to the debugger, use it as the input of a typedef statement. たとえば、コードに次のコードが含まれている場合、データの構造は _ .pdb シンボルファイルに格納され、 dt コマンドで表示できます。For example, if the following appears in your code, the structure MY_DATA will be stored in the .pdb symbol file and can be displayed by the dt command:

typedef struct _MY_DATA {
    . . .
    } MY_DATA;
typedef  MY_DATA *PMY_DATA; 

一方、次のコードでは、MY _ data と PMY _ データの両方が初期の typedef によって定義されているため、 _ データ自体は typedef ステートメントの入力として使用されていないため、十分ではありません。On the other hand, the following code would not suffice because both MY_DATA and PMY_DATA are defined by the initial typedef and, therefore, MY_DATA has not itself been used as the input of any typedef statement:

typedef struct _MY_DATA {
    . . .
    } MY_DATA, *PMY_DATA; 

どのような場合でも、型情報は、すべてのプライベートシンボル情報が削除されたシンボルファイルではなく、完全なシンボルファイルにのみ含まれます。In any event, type information is included only in a full symbol file, not a symbol file that has been stripped of all private symbol information. 詳細については、「 パブリックシンボルとプライベートシンボル」を参照してください。For more information, see Public and Private Symbols.

Unicode 文字列を表示する場合は、まず、 . enable _ Unicode (Unicode 表示を有効 にする) コマンドを使用する必要があります。If you want to display unicode strings, you need to use the .enable_unicode (Enable Unicode Display) command first. 長い整数の表示を制御するには、を使用 します。 long の状態を有効にする _ _ (長い整数の表示を有効にする) コマンドを有効にします。You can control the display of long integers with the .enable_long_status (Enable Long Integer Display) command.

次の例では、 dt はグローバル変数を表示します。In the following example, dt displays a global variable:

0:000> dt mt1 
   +0x000 a                : 10
   +0x004 b                : 98 'b'
   +0x006 c                : 0xdd
   +0x008 d                : 0xabcd
   +0x00c gn               : [6] 0x1
   +0x024 ex               : 0x0 

次の例では、 dt は配列フィールド gn を表示します。In the following example, dt displays the array field gn:

0:000> dt mt1 -a gn 
   +0x00c gn : 
    [00] 0x1
    [01] 0x2
    [02] 0x3
    [03] 0x4
    [04] 0x5
    [05] 0x6 

次のコマンドは、変数のサブフィールドを表示します。The following command displays some subfields of a variable:

0:000> dt mcl1 m_t1 dpo 
   +0x010 dpo  : DEEP_ONE
   +0x070 m_t1 : MYTYPE1 

フィールド m _ t1 のサブフィールドを表示するコマンドを次に示します。The following command displays the subfields of the field m_t1. ピリオドによってプレフィックスの一致が自動的に行われるため、"m t1" で始まる任意のフィールドのサブフィールドも表示され _ ます。Because the period automatically causes prefix matching, this will also display subfields of any field that begins with "m_t1":

0:000> dt mcl1 m_t1. 
   +0x070 m_t1  : 
      +0x000 a     : 0
      +0x004 b     : 0 '
      +0x006 c     : 0x0
      +0x008 d     : 0x0
      +0x00c gn    : [6] 0x0
      +0x024 ex    : 0x0 

これは、任意の深さに繰り返すことができます。You could repeat this to any depth. たとえば、コマンド dt mcl1 a..c。For example, the command dt mcl1 a..c. では、最初のフィールド名がで始まり、3番目のフィールド名が c で始まるように、すべてのフィールドが深さ4に表示されます。would display all fields to depth four, such that the first field name began with a and the third field name began with c.

ここでは、サブフィールドを表示する方法の詳細な例を示します。Here is a more detailed example of how subfields can be displayed. 最初に、 Ldr フィールドを表示します。First, display the Ldr field:

0:000> dt nt!_PEB Ldr 7ffdf000 
   +0x00c Ldr : 0x00191ea0 

次に、[ポインターの種類] フィールドを展開します。Now expand the pointer type field:

0:000> dt nt!_PEB Ldr Ldr. 7ffdf000 
   +0x00c Ldr  : 0x00191ea0
      +0x000 Length : 0x28
      +0x004 Initialized : 0x1 '
      +0x008 SsHandle : (null)
      +0x00c InLoadOrderModuleList : _LIST_ENTRY [ 0x191ee0 - 0x192848 ]
      +0x014 InMemoryOrderModuleList : _LIST_ENTRY [ 0x191ee8 - 0x192850 ]
      +0x01c InInitializationOrderModuleList : _LIST_ENTRY [ 0x191f58 - 0x192858 ]
      +0x024 EntryInProgress : (null) 

次に、 CriticalSectionTimeout フィールドを表示します。Now display the CriticalSectionTimeout field:

0:000> dt nt!_PEB CriticalSectionTimeout 7ffdf000 
   +0x070 CriticalSectionTimeout : _LARGE_INTEGER 0xffffe86d`079b8000 

次に、 CriticalSectionTimeout 構造体のサブフィールドを1レベル詳細に展開します。Now expand the CriticalSectionTimeout structure subfields one level deep:

0:000> dt nt!_PEB CriticalSectionTimeout. 7ffdf000 
   +0x070 CriticalSectionTimeout  :  0xffffe86d`079b8000
      +0x000 LowPart                 : 0x79b8000
      +0x004 HighPart                : -6035
      +0x000 u                       : __unnamed
      +0x000 QuadPart                : -25920000000000 

ここで、 CriticalSectionTimeout 構造体のサブフィールドを展開します。Now expand the CriticalSectionTimeout structure subfields two levels deep:

0:000> dt nt!_PEB CriticalSectionTimeout.. 7ffdf000 
   +0x070 CriticalSectionTimeout   :  0xffffe86d`079b8000
      +0x000 LowPart                  : 0x79b8000
      +0x004 HighPart                 : -6035
      +0x000 u                        :
         +0x000 LowPart                  : 0x79b8000
         +0x004 HighPart                 : -6035
      +0x000 QuadPart                 : -25920000000000 

次のコマンドを実行すると、アドレス0x0100297C にあるデータ型 MYTYPE1 のインスタンスが表示されます。The following command displays an instance of the data type MYTYPE1 that is located at the address 0x0100297C:

0:000> dt 0x0100297c MYTYPE1 
   +0x000 a                : 22
   +0x004 b                : 43 '+'
   +0x006 c                : 0x0
   +0x008 d                : 0x0
   +0x00c gn               : [6] 0x0
   +0x024 ex               : 0x0 

次のコマンドでは、アドレス0x01002BE0 の 10 ULONGs の配列が表示されます。The following command displays an array of 10 ULONGs at the address 0x01002BE0:

0:000> dt -ca10 ULONG 01002be0 
[0] 0x1001098
[1] 0x1
[2] 0xdead
[3] 0x7d0
[4] 0x1
[5] 0xcd
[6] 0x0
[7] 0x0
[8] 0x0
[9] 0x0 

次のコマンドは、前の表示を別のアドレスで続行します。The following command continues the previous display at a different address. "ULONG" を再入力する必要はないことに注意してください。Note that "ULONG" does not need to be re-entered:

0:000> dt -ca4 . 01002d00 
Using sym ULONG
[0] 0x12
[1] 0x4ac
[2] 0xbadfeed
[3] 0x2 

次に、型 display の例をいくつか示します。Here are some examples of type display. 次のコマンドは、モジュール thismodule 内の文字列 "MY" で始まるすべての型とグローバルを表示します。The following command displays all types and globals beginning with the string "MY" in the module thismodule. アドレスがプレフィックスとして使用されるのは実際のインスタンスです。アドレスのないものは型定義です。Those prefixed with an address are actual instances; those without addresses are type definitions:

0:000> dt thismodule!MY* 
010029b8  thismodule!myglobal1
01002990  thismodule!myglobal2

Type display を実行する場合は、 -v オプションを使用して各項目のサイズを表示できます。When performing type display, the -v option can be used to display the size of each item. -S size オプションは、特定のサイズの項目だけを列挙するために使用できます。The -s size option can be used to only enumerate items of a specific size. ここでも、アドレスがプレフィックスとして使用されるのは実際のインスタンスです。アドレスのないものは型定義です。Again, those prefixed with an address are actual instances; those without addresses are type definitions:

0:001> dt -s 2 -v thismodule!* 
Enumerating symbols matching thismodule!*, Size = 0x2
Address   Size Symbol
           002 thismodule!wchar_t
           002 thismodule!WORD
           002 thismodule!USHORT
           002 thismodule!SHORT
           002 thismodule!u_short
           002 thismodule!WCHAR
00427a34   002 thismodule!numberOfShips
00427a32   002 thismodule!numberOfPlanes
00427a30   002 thismodule!totalNumberOfItems 

-B オプションの例を次に示します。Here is an example of the -b option. 構造体が展開され、構造体内の Ownerthreads 配列が拡張されていますが、 Flink点滅 の一覧のポインターは次のようになります。The structure is expanded and the OwnerThreads array within the structure is expanded, but the Flink and Blink list pointers are not followed:

kd> dt nt!_ERESOURCE -b 0x8154f040 
   +0x000 SystemResourcesList :  [ 0x815bb388 - 0x816cd478 ]
      +0x000 Flink            : 0x815bb388
      +0x004 Blink            : 0x816cd478
   +0x008 OwnerTable       : (null)
   +0x00c ActiveCount      : 1
   +0x00e Flag             : 8
   +0x010 SharedWaiters    : (null)
   +0x014 ExclusiveWaiters : (null)
   +0x018 OwnerThreads     :
      +0x000 OwnerThread      : 0
      +0x004 OwnerCount       : 0
      +0x004 TableSize        : 0
      +0x000 OwnerThread      : 0x8167f563
      +0x004 OwnerCount       : 1
      +0x004 TableSize        : 1
   +0x028 ContentionCount  : 0
   +0x02c NumberOfSharedWaiters : 0
   +0x02e NumberOfExclusiveWaiters : 0
   +0x030 Address          : (null)
   +0x030 CreatorBackTraceIndex : 0
   +0x034 SpinLock         : 0

カーネルモードの dt の例を次に示します。Here is an example of dt in kernel mode. 次のコマンドを実行すると、 ! process 0 0のような結果が生成されます。The following command produces results similar to !process 0 0:

kd> dt nt!_EPROCESS -l ActiveProcessLinks.Flink -y Ima -yoi Uni 814856f0 
## ActiveProcessLinks.Flink at 0x814856f0

UniqueProcessId : 0x00000008
ImageFileName : [16] "System"

## ActiveProcessLinks.Flink at 0x8138a030

UniqueProcessId : 0x00000084
ImageFileName : [16] "smss.exe"

## ActiveProcessLinks.Flink at 0x81372368

UniqueProcessId : 0x000000a0
ImageFileName : [16] "csrss.exe"

## ActiveProcessLinks.Flink at 0x81369930

UniqueProcessId : 0x000000b4
ImageFileName : [16] "winlogon.exe"


リストの各要素に対してコマンドを実行する場合は、 ! list 拡張機能を使用します。If you want to execute a command for each element of the list, use the !list extension.

最後に、 dt-h コマンドを実行すると、 dt 構文の概要を説明する短いヘルプテキストが表示されます。Finally, the dt -h command will display a short help text summarizing the dt syntax.