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 |
| f | pevná řádová čárka plovoucí řádová čárka | 25000000 | 25000000.000000 |
| 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) | <poloha> L"ahoj světe" | L"hello world" "ahoj světe" |
| sub | Řetězec kódování Unicode (kódování UTF-16) (bez uvozovek) | <poloha> L"ahoj světe" | Ahoj světe |
| bstr | Binární řetězec BSTR (s uvozovkami) | <poloha> L"ahoj světe" | 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) | <poloha> 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. | <umístění>, {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í | ||
| Fe | výčet bitových příznaků (použijte, když automatická detekce selže) | 6 | příznak1 | příznak2 (6) |
| 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á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. |