Sdílet prostřednictvím


Specifikátory formátu pro jazyk C++ v ladicím programu sady Visual Studio

Pomocí specifikátorů formátu můžete změnit formát, ve kterém se hodnota zobrazuje v oknech Kukátku, Automatické hodnoty a Místní hodnoty.

Můžete také použít specifikátory formátu v okně Okamžité , Příkazové okno, v trasovacích bodech a dokonce i ve zdrojových oknech. Pokud se ve výrazu v těchto oknech pozastavíte, výsledek se zobrazí v datovém tipu. Zobrazení Popis dat odráží specifikátor formátu.

Poznámka:

Když se nativní ladicí program sady Visual Studio změnil na nový ladicí modul, byly přidány některé specifikátory nového formátu a některé staré byly odebrány. Starší ladicí program se stále používá, když provádíte ladění v jazyce C++/CLI (smíšené nativní a spravované).

Nastavení specifikátorů formátu

Použijeme následující ukázkový kód:

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

Přidejte proměnnou do okna Kukátko při ladění, ladění>kukátka Windows>Watch>1.my_var1 Potom klikněte pravým tlačítkem myši na proměnnou a vyberte Šestnáctkové zobrazení. Teď okno Kukátko zobrazuje hodnotu 0x0065. Pokud chcete zobrazit tuto hodnotu vyjádřenou jako znak místo celého čísla, klikněte pravým tlačítkem myši a zrušte výběr šestnáctkového zobrazení. Potom přidejte specifikátor formátu znaku , c do sloupce Name za název proměnné. Sloupec Hodnota teď zobrazuje 101 "e".

Screenshot of the Visual Studio Watch window with one selected line that shows my_var1.c with a value of 101 'e' and a type of int.

Seznam dostupných specifikátorů formátu můžete zobrazit a vybrat tak, že k hodnotě okna Kukátko přidáte čárku (,).

WatchFormatSpecDropdown

Specifikátory formátu

Následující tabulky popisují specifikátory formátu, které můžete použít v sadě Visual Studio. Specifikátory tučné písmo jsou podporovány pouze pro nový ladicí program, a ne pro ladění spolupráce s C++/CLI.

Specifikátor Formát Původní hodnota kukátku Zobrazená hodnota
d desetinné celé číslo 0x00000066 102
o osmičkové celé číslo bez znaménka 0x00000066 000000000146
linka

h
šestnáctkové celé číslo 102 0xcccccccc
X

H
šestnáctkové celé číslo 102 0xCCCCCCCC
Xb

Hb
šestnáctkové celé číslo (bez úvodních 0x) 102 cccccccc
Xb

Hb
šestnáctkové celé číslo (bez úvodních 0x) 102 CCCCCCCC
b binární celé číslo bez znaménka 25 0b0000000000000000000000000000011000
Bb unsigned binary integer(without leading 0b) 25 00000000000000000000000000011001
e vědecká notace 25000000 2.500000e+07
g kratší vědeckého nebo plovoucího bodu 25000000 2,5e+07
c jeden znak 0x0065 101 "e"
s const char* řetězec (s uvozovkami) <poloha> "hello world" "hello world"
Sb const char* řetězec (bez uvozovek) <poloha> "hello world" Ahoj světe
s8 Řetězec UTF-8 <umístění> "Toto je UTF-8 kávový šálek â ̃• " "Toto je UTF-8 kávový šálek ☕ "
s8b Řetězec UTF-8 (bez uvozovek) <poloha> "hello world" Ahoj světe
Su Řetězec kódování Unicode (kódování UTF-16) (s uvozovkami) <poloha> L"hello world" L"hello world"

u"hello world"
předmět Řetězec kódování Unicode (kódování UTF-16) (bez uvozovek) <poloha> L"hello world" Ahoj světe
bstr Binární řetězec BSTR (s uvozovkami) <poloha> L"hello world" L"hello world"
Env Blok prostředí (řetězec ukončený s dvojitou hodnotou null) <location> L"=::=::\\" L"=::=::\\\0=C:=C:\\windows\\system32\0ALLUSERSPROFILE=...
s32 Řetězec UTF-32 (s uvozovkami) <poloha> U"hello world" U"hello world"
s32b Řetězec UTF-32 (bez uvozovek) <poloha> U"hello world" Ahoj světe
En enum Sobota(6) Sobota
Hv Typ ukazatele – označuje, že kontrolovaná hodnota ukazatele je výsledkem přidělení haldy pole, new int[3]například . <location>{<first member>} <location>{<first member, <second member>>, ...}
na Potlačí adresu paměti ukazatele na objekt. <location>, {member=value...} {member=value...}
Nd Zobrazí pouze informace základní třídy, které ignorují odvozené třídy. (Shape*) square obsahuje základní třídu a informace o odvozené třídě. Zobrazí pouze informace o základní třídě.
h Kód chyby HRESULT nebo Win32 Tento specifikátor už není pro HRESULT potřeba, protože ladicí program je dekóduje automaticky. S_OK S_OK
Wc Příznak třídy okna 0x0010 WC_DEFAULTCHAR
Wm Čísla zpráv systému Windows 16 WM_CLOSE
Nr Potlačit položku Nezpracované zobrazení
nvo Zobrazit položku Nezpracované zobrazení pouze pro číselné hodnoty
! nezpracovaný formát bez ohledu na vlastní nastavení zobrazení datových typů <přizpůsobená reprezentace> 4
Zpracování Zobrazí informace o popisovači win32. 0x000000000000009c Zobrazí užitečné informace o popisovači, jako je ID vlákna atd.

Poznámka:

Pokud je k dispozici specifikátor formátu hv, ladicí program se pokusí určit délku vyrovnávací paměti a zobrazit tento počet prvků. Vzhledem k tomu, že ladicí program nemůže vždy najít přesnou velikost vyrovnávací paměti pole, měli byste použít specifikátor (pBuffer,[bufferSize]) velikosti, kdykoli je to možné. Specifikátor formátu hv je užitečný, pokud velikost vyrovnávací paměti není snadno dostupná.

Specifikátory velikosti pro ukazatele jako pole

Pokud máte ukazatel na objekt, který chcete zobrazit jako pole, můžete k určení počtu prvků pole použít celé číslo nebo výraz.

Specifikátor Formát Původní hodnota kukátku Zobrazená hodnota
n Desetinné nebo šestnáctkové celé číslo pBuffer,[32]

pBuffer,[0x20]
Zobrazí pBuffer se jako pole prvků 32.
[exp] Platný výraz jazyka C++, který se vyhodnotí jako celé číslo. pBuffer,[bufferSize] Zobrazí pBuffer jako pole bufferSize prvků.
expand(n) Platný výraz C++, který se vyhodnotí jako celé číslo pBuffer, expand(2) Zobrazí třetí prvek pBuffer

Specifikátory formátu pro ladění spolupráce pomocí C++/CLI

Specifikátor Formát Původní hodnota kukátku Zobrazená hodnota
o osmičkové celé číslo bez znaménka 0xF065 0170145
linka

X
Šestnáctkové celé číslo 61541 0x0000f065
c jeden znak <location> 101 "e"
s const char* (s uvozovkami) <location> "hello world"
Su const wchar_t*

const char16_t* (s uvozovkami)
<location> L"hello world"
předmět const wchar_t*

const char16_t*
<location> Ahoj světe
s8 const char* (s uvozovkami) <location> "hello world"
h Kód chyby HRESULT nebo Win32
Tento specifikátor už není pro HRESULT potřeba, protože ladicí program je dekóduje automaticky.
S_OK S_OK
Wc Příznak třídy okna 0x00000040, WC_DEFAULTCHAR
Wm Čísla zpráv systému Windows 0x0010 WM_CLOSE
! nezpracovaný formát bez ohledu na vlastní nastavení zobrazení datového typu <přizpůsobená reprezentace> 4

D, e, f, g, h, i, l, m, ma, mb, md, mq, mu, mw a vy specifikátory pro nativní kód a C++/CLI vyžadoval starší ladicí program, který není podporován v sadě Visual Studio 2022 nebo novějších verzích.

Specifikátory tučného písma jsou podporovány pouze pro ladění nativního kódu jazyka C++/CLI. Tyto specifikátory vyžadují starší ladicí program určený pomocí režimu spravované kompatibility.

Specifikátor Formát Původní hodnota kukátku Zobrazená hodnota
d

I
celé číslo s desetinnou čárkou se signs 0xF000F065 -268373915
U celé číslo bez znaménka 0x0065 101
o osmičkové celé číslo bez znaménka 0xF065 0170145
linka

X
Šestnáctkové celé číslo 61541 0x0000f065
L

h
dlouhá nebo krátká předpona pro: d, i, u, o, x, X 00406042 0x0c22
f podepsaná plovoucí desetiná čárka (3./2.), f 1.500000
E podepsaná vědecká notace (3.0/2.0) 1.500000e+000
G podepsanou plovoucí desetinou čárkou nebo podepsanou vědeckou notací,
podle toho, co je kratší
(3.0/2.0) 1.5
c jeden znak <location> 101 "e"
s const char* (s uvozovkami) <location> "hello world"
Su const wchar_t*

const char16_t* (s uvozovkami)
<location> L"hello world"
předmět const wchar_t*

const char16_t*
<location> Ahoj světe
s8 const char* (s uvozovkami) <location> "hello world"
h Kód chyby HRESULT nebo Win32
Tento specifikátor už není pro HRESULT potřeba, protože ladicí program je dekóduje automaticky.
S_OK S_OK
Wc Příznak třídy okna 0x00000040, WC_DEFAULTCHAR
Wm Čísla zpráv systému Windows 0x0010 WM_CLOSE
! nezpracovaný formát bez ohledu na vlastní nastavení zobrazení datového typu <přizpůsobená reprezentace> 4

Specifikátory formátu pro umístění paměti v ladění spolupráce pomocí C++/CLI

Následující tabulka popisuje symboly formátování používané pro umístění paměti. Specifikátor umístění paměti můžete použít s libovolnou hodnotou nebo výrazem, který se vyhodnotí jako umístění.

Specifikátory tučného písma jsou podporovány pouze pro ladění nativního kódu jazyka C++/CLI. To vyžaduje starší ladicí program určený pomocí režimu spravované kompatibility.

Symbol Formát Původní hodnota kukátku Zobrazená hodnota
Ma 64 znaků ASCII 0x0012ffac 0x0012ffac .4...0...". 0W&...... 1W&.0.:W.. 1....".. 1.JO&.1.2..". 1...0y.... 1
m 16 bajtů v šestnáctkové soustavě následované 16 znaky ASCII 0x0012ffac 0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...". 0W&.
Mb 16 bajtů v šestnáctkové soustavě následované 16 znaky ASCII 0x0012ffac 0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...". 0W&.
Mw 8 slov 0x0012ffac 0x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 0000
Md 4 dvojité meče 0x0012ffac 0x0012ffac 00CB34B3 80943084 308A22FF 00002657
Mq 2 čtyřúhelníku 0x0012ffac 0x0012ffac 7ffdf000000000000 5f441a790012fdd4
mu 2 bajtové znaky (Unicode) 0x0012ffac 0x0012ffac 8478 77f4 ffff 0000 0000 0000 0000 0000

Specifikátor velikosti pro ukazatele jako pole v ladění spolupráce pomocí C++/CLI

Pokud máte ukazatel na objekt, který chcete zobrazit jako pole, můžete použít celé číslo k určení počtu prvků pole.

Specifikátor Formát Výraz Zobrazená hodnota
n Desetinné celé číslo pBuffer[32] Zobrazí pBuffer se jako pole s 32 prvky.