Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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. Zobrazování DataTip 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 my_var1 do okna Watch při ladění, Debug>Windows>Watch>Watch 1. 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ě zvýrazněné jsou podporovány pouze pro nový ladicí program, a nikoli pro ladění spolupráce s C++/CLI.
| Specifikátor | Formát | Původní hodnota sledování | Zobrazená hodnota |
|---|---|---|---|
| d | desítkové celé číslo | 0x00000066 | 102 |
| o | osmičkové celé číslo bez znaménka | 0x00000066 | 000000000146 |
| x 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 Hemoglobin |
šestnáctkové celé číslo (bez úvodních 0x) | 102 | CCCCCCCC |
| b | binární celé číslo bez znaménka | 25 | 0b00000000000000000000000000011001 |
| Bb | neznamá binární celé číslo (bez úvodního 0b) | 25 | 00000000000000000000000000011001 |
| e | exponenciální 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" | "ahoj světe" |
| 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) | <location> L"hello world" | L"hello world" "ahoj světe" |
| sub | Ř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ý dvěma nulovými znaky) | <umístění> 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) | <umístění> U"hello world" | Ahoj světe |
| en | výčet | 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 . |
<umístění>{<první člen>} | <location>{<první člen>, <druhý člen>, ...} |
| sodík | 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ě. |
| hr | 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 | Skrýt položku Nezpracované zobrazení | ||
| nvo | Zobrazit položku Surové zobrazení pouze pro číselné hodnoty | ||
| ! | nezpracovaný formát bez ohledu na vlastní nastavení zobrazení datových typů | <přizpůsobená reprezentace> | 4 |
| popisovač | Zobrazí informace o popisovači Win32. | 0x000000000000009c | Zobrazí užitečné informace o handle, 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ů. Protože ladicí program nemůže vždy určit přesnou velikost vyrovnávací paměti pole, měli byste kdykoli je to možné použít specifikátor velikosti (pBuffer,[bufferSize]). Specifikátor formátu hv je užitečný, pokud velikost vyrovnávací paměti není snadno dostupná.
Specifikátory velikosti pro ukazatele formou polí
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 sledování | Zobrazená hodnota |
|---|---|---|---|
| n | Desetinné nebo šestnáctkové celé číslo | pBuffer,[32] pBuffer,[0x20] |
Zobrazí se pBuffer jako pole o 32 prvcích. |
| [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, rozšířit(2) | Zobrazí třetí prvek pBuffer |
Specifikátory formátu při ladění interoperability s C++/CLI
| Specifikátor | Formát | Původní hodnota sledování | Zobrazená hodnota |
|---|---|---|---|
| o | osmičkové celé číslo bez znaménka | 0xF065 | 0170145 |
| x X |
Šestnáctkové celé číslo | 61541 | 0x0000f065 |
| c | jeden znak | <umístění> | 101 'e' |
| s | const char* (s uvozovkami) | <umístění> | "Ahoj světe" |
| Su | const wchar_t* const char16_t* (s uvozovkami) |
<umístění> | L"hello world" |
| sub | const wchar_t* const char16_t* |
<umístění> | Ahoj světe |
| s8 | const char* (s uvozovkami) | <umístění> | ahoj světe |
| hr | 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 |
| ! | surový formát bez ohledu na 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 u specifikátory pro nativní kód a C++/CLI vyžadovaly starší ladicí program, který není podporován ve Visual Studio 2022 ani 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í ladicí program ve starším režimu, specifikovaný s využitím režimu spravované kompatibility.
| Specifikátor | Formát | Původní hodnota sledování | Zobrazená hodnota |
|---|---|---|---|
|
d já |
podepsané celé číslo | 0xF000F065 | -268373915 |
| u | celé číslo bez znaménka | 0x0065 | 101 |
| o | osmičkové celé číslo bez znaménka | 0xF065 | 0170145 |
| x 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í řádová čá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 | <umístění> | 101 „e“ |
| s | const char* (s uvozovkami) | <umístění> | "ahoj světe" |
| Su | const wchar_t* const char16_t* (s uvozovkami) |
<umístění> | L"hello world" |
| sub | const wchar_t* const char16_t* |
<umístění> | Ahoj světe |
| s8 | const char* (s uvozovkami) | <umístění> | "ahoj světe" |
| hr | 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 uživatelská 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 zastaralý ladicí program, specifikovaný pomocí režimu spravované kompatibility.
| Symbol | Formát | Původní hodnota sledování | 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 dvojice slov | 0x0012ffac | 0x0012ffac 00CB34B3 80943084 308A22FF 00002657 |
| mq | 2 čtyřúhelníku | 0x0012ffac | 0x0012ffac 7ffdf00000000000 5f441a790012fdd4 |
| µ | 2 bajtové znaky (Unicode) | 0x0012ffac | 0x0012ffac 8478 77f4 ffff ffff 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 | Expression | Zobrazená hodnota |
|---|---|---|---|
| n | Desetinné celé číslo | pBuffer[32] | Zobrazí pBuffer se jako pole s 32 prvky. |