次の方法で共有


Visual Studio デバッガーでの C++ の書式指定子

書式指定子を使用して、[ ウォッチ]、[ 自動変数]、[ ローカル] ウィンドウに値を表示する形式を変更できます。

また、 イミディエイト ウィンドウ、 コマンド ウィンドウ、 トレースポイント、ソース ウィンドウでも書式指定子を使用できます。 これらのウィンドウで式を一時停止すると、結果が データヒントに表示されます。 データチップの表示には、書式指定子が反映されます。

Visual Studio ネイティブ デバッガーが新しいデバッグ エンジンに変更されると、一部の新しい書式指定子が追加され、一部の古い書式指定子が削除されました。 以前のデバッガーは、C++/CLI を使用して相互運用 (ネイティブとマネージドの混在) デバッグを行うときに引き続き使用されます。

書式指定子の設定

次のコード例を使用します。

int main() {
    int my_var1 = 0x0065;
    int my_var2 = 0x0066;
    int my_var3 = 0x0067;
}

デバッグ中に my_var1 変数を ウォッチ ウィンドウに追加します。デバッグ>Windows>ウォッチ>ウォッチ1。 次に、変数を右クリックし、[ 16 進数表示] を選択します。 [ ウォッチ ] ウィンドウに値0x0065が表示されます。 この値を整数ではなく文字として表すには、最初に右クリックして 16 進数表示の選択を解除します。 次に、変数名の後の Name 列に文字書式指定子 c を追加します。 [値] 列に 101 'e' が表示されるようになりました。

My_var1.c の値が 101 'e' で int の種類を示す 1 行が選択されている Visual Studio ウォッチ ウィンドウのスクリーンショット。

[ ウォッチ ] ウィンドウの値にコンマ (,) を追加することで、使用可能な書式指定子の一覧から表示および選択できます。

WatchFormatSpecDropdown

書式指定子

次の表では、Visual Studio で使用できる書式指定子について説明します。 太字の指定子は、新しいデバッガーでのみサポートされ、C++/CLI を使用した相互運用デバッグではサポートされません。

指定子 Format 元のウォッチ値 表示される値
d 10 進整数 0x00000066 102
o 符号なし 8 進数 0x00000066 000000000146
x

h
16進数の整数 102 0xcccccccc
X

H
16進数の整数 102 0xCCCCCCCC
xb

hb
16 進整数 (先頭の 0x なし) 102 cccccccc
Xb

Hb
16 進整数 (先頭の 0x なし) 102 CCCCCCCC
b 符号なしバイナリ整数 二十五 0b00000000000000000000000000011001
bb 符号なし 2 進整数 (先頭 0b なし) 二十五 00000000000000000000000000011001
e 指数表記 25000000 2.500000e+07
g 科学的表記または浮動小数点の短い形式 25000000 2.5e+07
c 1 文字 0x0065 101 'e'
s const char* 文字列 (引用符付き) <location> "hello world" こんにちは、世界!
sb const char* 文字列 (引用符なし) <location> "ハローワールド" ハローワールド
s8 UTF-8 文字列 <location> "これはUTF-8のコーヒーカップ☕です" "これは UTF-8 コーヒー カップ☕です"
s8b UTF-8 文字列 (引用符なし) <location> "hello world" ハローワールド
su Unicode (UTF-16 エンコード) 文字列 (引用符付き) <location> L"hello world" L"ハローワールド"

こんにちは世界
サブ Unicode (UTF-16 エンコード) 文字列 (引用符なし) <location> L"こんにちは世界" ハローワールド
BSTR (バイナリ文字列) BSTR バイナリ文字列 (引用符付き) <location> L"こんにちは世界" L"ハローワールド"
env 環境ブロック (double-null で終わる文字列) <location> L"=::=::\\" L"=::=::\\0=C:=C:\\windows\\system32\0ALLUSERSPROFILE=...
s32 UTF-32 文字列 (引用符付き) <location> U"hello world" U"こんにちは世界"
s32b UTF-32 文字列 (引用符なし) <location> U"hello world" ハローワールド
en 列挙型 土曜日(6) 土曜日
hv ポインター型 - 検査されるポインター値が、配列のヒープ割り当ての結果であることを示します (例: new int[3])。 <位置>{<最初のメンバー>} <場所>{<一番目のメンバー>, <二番目のメンバー>, ...}
na オブジェクトへのポインターのメモリ アドレスを抑制します。 <場所>, {member=value...} {member=value...}
nd 派生クラスを無視して、基底クラス情報のみを表示します (Shape*) square 基底クラスと派生クラスの情報が含まれています 基本クラス情報のみを表示します
人事 HRESULT または Win32 エラー コード。 この指定子は、デバッガーによって自動的にデコードされるため、HRESULT では必要なくなりました。 S_OK S_OK
トイレ ウィンドウ クラス フラグ 0x0010 WC_DEFAULTCHAR
wm Windows メッセージ番号 16 WM_CLOSE
nr [未加工ビュー] 項目を非表示にします
nvo 数値のみの "未加工ビュー" 項目を表示する
! 生データ形式、データ型ビューのカスタマイズを無視する <カスタマイズされた表現> 4
ハンドル win32 ハンドルに関する情報を表示する 0x000000000000009c スレッド ID などのハンドルに関する有用な情報を表示します。

hv 書式指定子が存在する場合、デバッガーはバッファーの長さを判断し、その数の要素を表示しようとします。 デバッガーが配列の正確なバッファー サイズを検索できるわけではないため、可能な限りサイズ指定子 (pBuffer,[bufferSize]) を使用する必要があります。 hv 書式指定子は、バッファー サイズがすぐに使用できない場合に便利です。

配列としてのポインターのサイズ指定子

配列として表示するオブジェクトへのポインターがある場合は、整数または式を使用して配列要素の数を指定できます。

指定子 Format 元のウォッチ値 表示される値
n 10進法または16進法整数 pBuffer,[32]

pBuffer,[0x20]
pBufferを 32 要素配列として表示します。
[exp] 整数に評価される有効な C++ 式。 pBuffer,[bufferSize] pBuffer を bufferSize 要素の配列として表示します。
expand(n) 整数に評価される有効な C++ 式 pBuffer、expand(2) の 3 番目の要素を表示します。 pBuffer

C++/CLI を使用した相互運用デバッグの書式指定子

指定子 Format 元のウォッチ値 表示される値
o 符号なし 8 進数 0xF065 0170145
x

X
16 進数の整数 61541 0x0000f065
c 1 文字 <場所> 101 'e'
s const char* (引用符付き) <場所> こんにちは、世界!
su const wchar_t*

const char16_t* (引用符付き)
<場所> L"ハローワールド"
サブ const wchar_t*

const char16_t*
<場所> ハローワールド
s8 const char* (引用符付き) <場所> こんにちは、世界!
人事 HRESULT または Win32 エラー コード。
この指定子は、デバッガーによって自動的にデコードされるため、HRESULT では必要なくなりました。
S_OK S_OK
トイレ ウィンドウ クラス フラグ 0x00000040、 WC_DEFAULTCHAR
wm Windows メッセージ番号 0x0010 WM_CLOSE
! 生データフォーマット、データ型ビューのカスタマイズを無視する <カスタマイズされた表現> 4

d、e、f、g、h、i、l、m、ma、mb、md、mq、mu、mw、およびネイティブコードと C++/CLI コードの指定子には、Visual Studio 2022 以降のバージョンではサポートされていないレガシ デバッガーが必要です。

太字の指定子は、ネイティブ コードと C++/CLI コードのデバッグでのみサポートされます。 これらの指定子には、 マネージド互換モードを使用して指定されたレガシ デバッガーが必要です。

指定子 Format 元のウォッチ値 表示される値
d

i
符号付き 10 進整数 0xF000F065 -268373915
u 符号なし 10 進整数 0x0065 101
o 符号なし 8 進数 0xF065 0170145
x

X
16 進数の整数 61541 0x0000f065
l

h
longまたはshortのプレフィックス: d, i, u, o, x, X 00406042 0x0c22
f 符号付き浮動小数点 (3./2.)、f 1.500000
e 符号付き科学的表記 (3.0/2.0) 1.500000e+000
g 符号付き浮動小数点または符号付き科学的表記
どちらか短い方
(3.0/2.0) 1.5
c 1 文字 <場所> 101 'e'
s const char* (引用符付き) <場所> こんにちは、世界
su const wchar_t*

const char16_t* (引用符付き)
<場所> L"ハローワールド"
サブ const wchar_t*

const char16_t*
<場所> ハローワールド
s8 const char* (引用符付き) <場所> こんにちは、世界!
人事 HRESULT または Win32 エラー コード。
この指定子は、デバッガーによって自動的にデコードされるため、HRESULT では必要なくなりました。
S_OK S_OK
トイレ ウィンドウ クラス フラグ 0x00000040、 WC_DEFAULTCHAR
wm Windows メッセージ番号 0x0010 WM_CLOSE
! 生データフォーマット、データ型ビューのカスタマイズを無視する <カスタマイズされた表現> 4

C++/CLI を使用した相互運用デバッグにおけるメモリの場所の書式指定子

次の表では、メモリの場所に使用されるシンボルの書式設定について説明します。 メモリ位置指定子は、任意の値や、場所として評価される式と共に使用できます。

太字の指定子は、ネイティブ コードと C++/CLI コードのデバッグでのみサポートされます。 これには、 マネージド互換モードを使用して指定されたレガシ デバッガーが必要です。

Symbol Format 元のウォッチ値 表示される値
ma 64文字のASCII文字 0x0012ffac 0x0012ffac .4...0...".0W&.......1W&.0.:W..1...."..1.JO&.1.2.."..1...0y....1
m 16 バイト (16 進数)、その後に 16 文字の ASCII 文字が続く 0x0012ffac 0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&..
mb 16 バイト (16 進数)、その後に 16 文字の ASCII 文字が続く 0x0012ffac 0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&..
mw 8 単語 0x0012ffac 0x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 0000
md 4 つのダブルワード 0x0012ffac 0x0012ffac 00CB34B3 80943084 308A22FF 00002657
mq 2 クワッドワード 0x0012ffac 0x0012ffac 7ffdf00000000000 5f441a790012fdd4
ミュー 2 バイト文字 (Unicode) 0x0012ffac 0x0012ffac 8478 77f4 ffff ffff 0000 0000 0000 0000

C++/CLI を使用した相互運用デバッグでの配列としてのポインターのサイズ指定子

配列として表示するオブジェクトへのポインターがある場合は、整数を使用して配列要素の数を指定できます。

指定子 Format Expression 表示される値
n 10 進整数 pBuffer[32] pBufferを 32 要素配列として表示します。