Megosztás a következőn keresztül:


A C++ formátumjelölői a Visual Studio hibakeresőjében

Formátumjelölők használatával módosíthatja, hogy milyen formátumban jelenjen meg egy érték a Watch, az Autos és a Locals ablakban.

A formátumjelölőket az Azonnali ablakban, a Parancs ablakban, a nyomkövetési pontokban és még a forrásablakokban is használhatja. Ha ezekben az ablakokban szüneteltet egy kifejezést, az eredmény egy adatleírásban jelenik meg. A DataTip kijelző a formátumkijelölőt tükrözi.

Megjegyzés:

Amikor a Visual Studio natív hibakeresője új hibakeresési motorra váltott, néhány új formátumjelölőt hozzáadtak, és néhány régit eltávolítottak. A régebbi hibakereső akkor is használható, ha a C++/CLI használatával végez interop (vegyes natív és felügyelt) hibakeresést.

Formátumkijelölők beállítása

A következő példakódot fogjuk használni:

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

Adja hozzá a my_var1 változót a Watch ablakhoz hibakeresés közben, Debug>Windows>Watch>Watch 1 alatt. Ezután kattintson a jobb gombbal a változóra, és válassza a Hexadecimális megjelenítés lehetőséget. Most a Figyelő ablak a 0x0065 értéket jeleníti meg. Ha ezt az értéket egész szám helyett karakterként szeretné megjeleníteni, először kattintson a jobb gombbal, és törölje a hexadecimális megjelenítés kijelölését. Ezután adja hozzá a karakterformátum-megadót , c karaktert a változó neve utáni Név oszlopba. Az Érték oszlop ekkor 101 "e" értéket jelenít meg.

Képernyőkép a Visual Studio Watch ablakról egy kijelölt vonallal, amely az my_var1.c értéket jeleníti meg 101

Az elérhető formátumjelölők listájából úgy tekintheti meg és választhat, hogy vesszőt (,) fűz hozzá a Figyelő ablakban lévő értékhez.

WatchFormatSpecDropdown

Formázási definiálók

Az alábbi táblázatok a Visual Studióban használható formátumjelölőket ismertetik. A félkövér betűvel jelölt definiálók csak az új hibakeresőhöz támogatottak, a C++/CLI-vel végzett interop hibakereséshez nem.

Kijelölő Formátum Eredeti óraérték Megjelenített érték
d decimális egész szám 0x00000066 102
o aláíratlan oktális egész szám 0x00000066 000000000146
x

h
hexadecimális egész szám 102 0xcccccccc
X

H
hexadecimális egész szám 102 0xCCCCCCCC
xb

Hb
hexadecimális egész szám (bevezető 0x nélkül) 102 cccccccc
Xb

Hb
hexadecimális egész szám (bevezető 0x nélkül) 102 CCCCCCCC
b aláíratlan bináris egész szám 25 0b00000000000000000000000000011001
Bb aláíratlan bináris egész szám (kezdő 0b nélkül) 25 00000000000000000000000000011001
e tudományos jelölés 25000000 2.500000e+07
g rövidebb tudományos vagy lebegőpontos 25000000 2,5e+07
c egyetlen karakter 0x0065 101 „e”
s const char* string (idézőjelekkel) <location> "hello world" helló világ
Sb const char* string (idézőjelek nélkül) <location> "hello world" Helló világ
s8 UTF-8 sztring <helyszín> "Ez egy UTF-8 kávés csésze ☕" "Ez egy UTF-8 kávés csésze ☕"
s8b UTF-8 karakterlánc (nincs idézőjel) <location> "hello world" Helló világ
Su Unicode (UTF-16 kódolás) karakterlánc (idézőjelekkel) <location> L"hello world" L"szia világ"

u"hello world"
sub Unicode (UTF-16 kódolás) karakterlánc (idézőjelek nélkül) <location> L"hello world" Helló világ
bstr BSTR bináris sztring (idézőjelekkel) <location> L"hello world" L"szia világ"
Környezet Környezeti blokk (dupla nullával lezárt karakterlánc) <hely> L"=::=::\\" L"=::=::\\\0=C:=C:\\windows\\system32\0ALLUSERSPROFILE=...
s32 UTF-32 karaktersorozat (idézőjelekkel) <location> U"hello world" U"hello world"
s32b UTF-32 karakterlánc (idézőjelek nélkül) <location> U"hello world" Helló világ
En felsorolás Szombat(6) Szombat
Hv Mutató típusa – azt jelzi, hogy a vizsgált mutató értéke egy tömb halomfoglalásának eredménye, például new int[3]. <helyszín>{<első tag>} <location>{<első tag>, <második tag>, ...}
Na Letiltja egy objektumra mutató mutató memóriacímét. <location>, {member=value...} {member=value...}
Nd Csak az alaposztály adatait jeleníti meg, figyelmen kívül hagyva a származtatott osztályokat (Shape*) square alaposztályt és származtatott osztályinformációkat tartalmaz Csak az alaposztály információinak megjelenítése
hr HRESULT vagy Win32 hibakód. Ez a paraméter már nem szükséges a HRESULT-ekhez, mivel a hibakereső automatikusan dekódolja őket. S_OK S_OK
WC Ablakosztály jelölője 0x0010 WC_DEFAULTCHAR
Wm Windows-üzenetszámok 16 WM_CLOSE
Nr "Nyers nézet" elem letiltása
nvo A "Nyers nézet" elem megjelenítése csak numerikus értékek esetén
! nyers formátum, figyelmen kívül hagyva az adattípus-nézetek testreszabását <testreszabott ábrázolás> 4
fogópont A win32 fogantyúra vonatkozó információk megjelenítése 0x000000000000009c Hasznos információkat jelenít meg a fogantyúkról, például a szálazonosítóról stb.

Megjegyzés:

Ha a hv formátumjelölő jelen van, a hibakereső megkísérli meghatározni a puffer hosszát, és megjeleníti az elemek számát. Mivel a hibakereső nem mindig találja meg a tömb pontos pufferméretét, lehetőség szerint használjon méretkijelölőt (pBuffer,[bufferSize]) . A hv formátumjelölő akkor hasznos, ha a puffer mérete nem érhető el könnyen.

A mutatók tömbökként való méretkijelölői

Ha egy tömbként megjeleníteni kívánt objektumra mutató mutatóval rendelkezik, egész számmal vagy kifejezéssel megadhatja a tömbelemek számát.

Kijelölő Formátum Eredeti óraérték Megjelenített érték
n Decimális vagy hexadecimális egész szám pBuffer,[32]

pBuffer,[0x20]
pBuffer mint 32 elemből álló tömb jelenik meg.
[exp] Érvényes C++ kifejezés, amely egész számmá értékel. pBuffer,[bufferSize] A pBuffer elemtömbként bufferSize jelenik meg.
expand(n) Érvényes C++ kifejezés, amely egész számmá értékel pBuffer, expand(2) Megjeleníti a harmadik elemet pBuffer

A C++/CLI használatával végzett interop hibakeresés formázási specifikátorai

Kijelölő Formátum Eredeti óraérték Megjelenített érték
o aláíratlan oktális egész szám 0xF065 0170145
x

X
Hexadecimális egész szám 61541 0x0000f065
c egyetlen karakter <helyszín> 101 'e'
s const char* (idézőjelekkel) <helyszín> helló világ
Su const wchar_t*

const char16_t* (idézőjelekkel)
<helyszín> L"szia világ"
sub const wchar_t*

const char16_t*
<helyszín> Helló világ
s8 const char* (idézőjelekkel) <helyszín> helló világ
hr HRESULT vagy Win32 hibakód.
Ez a paraméter már nem szükséges a HRESULT-ekhez, mivel a hibakereső automatikusan dekódolja őket.
S_OK S_OK
WC Ablakosztály jelölője 0x00000040, WC_DEFAULTCHAR
Wm Windows-üzenetszámok 0x0010 WM_CLOSE
! nyers formátum, figyelmen kívül hagyva az adattípus nézet testreszabását <testreszabott ábrázolás> 4

A d, e, f, g, h, i, l, m, ma, mb, md, mq, mu, mw és u specifikátorok, amelyek a natív és C++/CLI kód számára voltak használandók, a régi hibakeresőt igényelték, amit a Visual Studio 2022-es vagy újabb verziói nem támogatnak.

A mutatók méretkijelölője tömbökként a C++/CLI használatával végzett interop hibakeresésben

Ha egy tömbként megtekinteni kívánt objektumra mutató mutató van, egész számmal megadhatja a tömbelemek számát.

Kijelölő Formátum Expression Megjelenített érték
n Decimális egész szám pBuffer[32] 32 elemű tömbként jelenik meg pBuffer .