C++ 中的格式規範
在 [監看式] 視窗或 [快速監看式] 對話方塊中偵錯機器碼時,使用格式規範來變更顯示的數值格式
(大部分格式規範僅適用於機器碼,但是 Visual C# 擁有一組有限的格式規範。 請參閱 C# 中的格式規範)。
您也可以在 [即時運算] 視窗、[命令] 視窗,甚至來源視窗中使用格式規範。 如果暫停在這些視窗中的某個運算式上,結果則會顯示在 DataTip (資料提示方塊)。 DataTip (資料提示方塊) 會反映 DataTip (資料提示方塊) 顯示中的格式規範。
注意事項 |
---|
Visual Studio 原生偵錯工具轉換到新的偵錯引擎。此變更包括加入一些新的格式規範和移除一些舊的格式規範。轉換不完整,因此在以 C++/CLI 進行 Interop (混合原生和 Managed) 偵錯,和在使用 C++ 編輯後繼續偵錯時,仍會使用舊的偵錯工具。本主題中的章節說明每個偵錯引擎的格式規範。
|
內容
Example
Visual Studio 2012 format specifiers
- Size specifiers for pointers as arrays in Visual Studio 2012
Format specifiers for interop debugging and C++ edit and continue
Format specifiers memory locations in interop debugging and C++ edit and continue
Size specifier for pointers as arrays in interop debugging and C++ edit and continue
範例
假設 nVar 是一個整數變數,而且 [監看式] 視窗顯示出它包含了數值 0x0065。 若希望數值以字元顯示,而非整數,請在 [名稱] 欄位中變數名稱後面,加入字元格式規範 c:
[值] 欄位現在顯示字元值 0x0065,而非整數值 101 'e'。
如果希望將格式規範套用至陣列元素或物件成員,您必須將它直接套用至每個元素或成員中。 您不能將它一次套用至整個陣列或物件中。 例如,假設您擁有一個陣列 nArray,並希望前四個元素都以字元格式顯示。 您應將下列運算式輸入至 [監看式] 視窗中:
nArray[0],c
nArray[1],c
nArray[2],c
nArray[3],c
Visual Studio 2012 格式規範
下表顯示當您沒有以 C++/CLI 偵錯 Interop (原生和 Managed) 程式碼時或使用 C++ 編輯後繼續時,可在 Visual Studio 2012 使用的格式規範。
粗體的規範不支援使用 C++/CLI 的 Interop 偵錯或使用 C++ 編輯後繼續的偵錯。
指定名稱 |
格式 |
運算式 |
顯示的值 |
---|---|---|---|
d |
十進位整數 |
0xF000F065, d |
-268373915 |
o |
不帶正負號的八進位整數 |
0xF065, o |
0170145 |
x h |
十六進位整數 |
61546, x 61541, h |
0x0000f06a |
X H |
十六進位整數 |
61541, X 61546, H |
0x0000F06A |
c |
單一字元 |
0x0065, c |
101 'e' |
s |
ASCII 字串 |
0x0012fde8, s |
"Hello world" |
sb |
ASCII 字串 |
0x0012fde8, sb |
Hello World |
su |
Unicode 字串 |
0x0012fde8, su |
L"Hello world" |
sub |
Unicode 字串 |
0x0012fde8, sub |
Hello World |
s8 |
UTF-8 字串 |
0x0012fde8, s8 |
"Hello world" |
s8b |
UTF-8 字串 |
0x0012fde8, s8b |
Hello World |
bstr |
BSTR 字串 |
0x0032fe8, bstr |
Hi there |
en |
用於評估為 C++ 列舉類型的運算式。 僅顯示列舉常數的名稱,並省略數值。 |
enumValue,en |
EnumValue |
, na |
&myGlobal, n winmain, na |
不會顯示指標的位址。 |
|
nd |
pb,nd |
只顯示 pb 的基底類別資訊,忽略衍生類別 |
|
hr |
HRESULT 或 Win32 錯誤碼 (偵錯工具現在可自動將 HRESULT 解碼,因此這個規範並不需要用於這些狀況中)。 |
0x00000000L, hr |
S_OK |
wc |
Window 類別旗標。 |
0x00000040, wc |
WC_DEFAULTCHAR |
wm |
Windows 訊息編號 |
0x0010, wm |
WM_CLOSE |
! |
未經處理格式,忽略任何資料類型檢視自訂 |
i ! |
4 |
在 Visual Studio 2012 中做為陣列之指標的大小規範
如果想要將檢視的物件指標做為陣列,可以使用整數或運算式來指定陣列項目的數量:
指定名稱 |
格式 |
運算式 |
顯示的值 |
---|---|---|---|
n |
十進位或十六進位整數 |
pBuffer,[32] pBuffer,[0x20] |
pBuffer 顯示為 32 個元素的陣列。 |
[exp] |
判斷值為整數的有效 C++ 運算式。 |
pBuffer,[bufferSize] |
評估 bufferSize,並將 pBuffer 顯示為已評估項目數的陣列。 |
expand(n) |
pBuffer, expand(1,2) |
顯示 pBuffer 的第二個子系的第三個子系 |
使用 C++/CLI 的 Interop 偵錯或 C++ 編輯後繼續的格式規範
粗體的規範僅支援機器碼及 C++/CLI 程式碼的偵錯,以及使用 C++ 編輯後繼續的偵錯。
指定名稱 |
格式 |
運算式 |
顯示的值 |
---|---|---|---|
d,i |
帶正負號的十進位整數 |
0xF000F065, d |
-268373915 |
u |
不帶正負號的十進位整數 |
0x0065, u |
101 |
o |
不帶正負號的八進位整數 |
0xF065, o |
0170145 |
x,X |
十六進位整數 |
61541, x |
0x0000f065 |
l,h |
長整數或短整數前置詞,用於:d、i、u、o、x、X |
00406042,hx |
0x0c22 |
f |
帶正負號的浮點數 |
(3./2.), f |
1.500000 |
e |
帶正負號的科學記號表示法 |
(3./2.), e |
1.500000e+000 |
g |
帶正負號的浮點數或帶正負號的科學記號表示法 (兩者中較短的) |
(3./2.), g |
1.5 |
c |
單一字元 |
0x0065, c |
101 'e' |
s |
String |
0x0012fde8, s |
"Hello world" |
su |
Unicode 字串 |
0x0012fde8, su |
L"Hello world" |
sub |
Unicode 字串 |
0x0012fde8, sub |
Hello World |
s8 |
UTF-8 字串 |
0x0012fde8, s8 |
"Hello world" |
hr |
HRESULT 或 Win32 錯誤碼 (偵錯工具現在可自動將 HRESULT 解碼,因此這個規範並不需要用於這些狀況中)。 |
0x00000000L, hr |
S_OK |
wc |
Window 類別旗標。 |
0x00000040, wc |
WC_DEFAULTCHAR |
wm |
Windows 訊息編號 |
0x0010, wm |
WM_CLOSE |
! |
未經處理格式,忽略任何資料類型檢視自訂 |
i ! |
4 |
使用 C++/CLI 的 Interop 偵錯或 C++ 編輯後繼續中記憶體位置的格式規範
下表包含了用於記憶體位置的格式化符號。 您可將記憶體位置規範用於評估結果為位置的任何數值或運算式。
符號 |
格式 |
運算式 |
顯示的值 |
---|---|---|---|
ma |
64 個 ASCII 字元 |
ptr, ma |
0x0012ffac .4...0...".0W&.......1W&.0.:W..1...."..1.JO&.1.2.."..1...0y....1 |
m |
十六進位表示的 16 個位元組,後面跟著 16 個 ASCII 字元 |
ptr, m |
0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&.. |
mb |
十六進位表示的 16 個位元組,後面跟著 16 個 ASCII 字元 |
ptr, mb |
0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&.. |
mw |
8 個字組 |
ptr, mw |
0x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 0000 |
md |
4 個 Doubleword |
ptr, md |
0x0012ffac 00CB34B3 80943084 308A22FF 00002657 |
mq |
2 個 Quadword |
ptr, mq |
0x0012ffac 7ffdf00000000000 5f441a790012fdd4 |
mu |
2 個位元組的字元 (Unicode) |
ptr, mu |
0x0012fc60 8478 77f4 ffff ffff 0000 0000 0000 0000 |
在使用 C++/CLI 的 Interop 偵錯或 C++ 編輯後繼續中做為陣列之指標的大小規範
如果想要將檢視的物件指標做為陣列,可以使用整數來指定陣列項目的數量:
指定名稱 |
格式 |
運算式 |
顯示的值 |
---|---|---|---|
n |
十進位整數 |
pBuffer[32] |
pBuffer 顯示為 32 個元素的陣列。 |