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. 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".

Snímek obrazovky okna sledování Visual Studia s jedním vybraným řádkem, který zobrazuje my_var1.c s hodnotou 101 'e' a typem 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ě 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.