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".
Seznam dostupných specifikátorů formátu můžete zobrazit a vybrat tak, že k hodnotě okna Kukátko přidáte čárku (,).
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. |