共用方式為


C++ 中的格式規範

在 [監看式] 視窗或 [快速監看式] 對話方塊中偵錯機器碼時,使用格式規範來變更顯示的數值格式

(大部分格式規範僅適用於機器碼,但是 Visual C# 擁有一組有限的格式規範。 請參閱 C# 中的格式規範)。

您也可以在 [即時運算] 視窗、[命令] 視窗,甚至來源視窗中使用格式規範。 如果暫停在這些視窗中的某個運算式上,結果則會顯示在 DataTip (資料提示方塊)。 DataTip (資料提示方塊) 會反映 DataTip (資料提示方塊) 顯示中的格式規範。

注意事項注意事項

Visual Studio 原生偵錯工具轉換到新的偵錯引擎。此變更包括加入一些新的格式規範和移除一些舊的格式規範。轉換不完整,因此在以 C++/CLI 進行 Interop (混合原生和 Managed) 偵錯,和在使用 C++ 編輯後繼續偵錯時,仍會使用舊的偵錯工具。本主題中的章節說明每個偵錯引擎的格式規範。

  • Visual Studio 2012 format specifiers描述新版偵錯引擎中的格式規範。

  • Format specifiers for interop debugging and C++ edit and continue描述舊版偵錯引擎中的格式規範。

內容

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 個元素的陣列。