Dela via


Formatera specificerare för C++ i Visual Studio-felsökningsprogrammet

Du kan ändra formatet där ett värde visas i fönstren Klocka, Autos och Locals med hjälp av formatspecificerare.

Du kan också använda formatspecificerare i fönstret Omedelbart , kommandofönstret , i spårningspunkter och även i källfönster. Om du pausar ett uttryck i dessa fönster visas resultatet i en DataTip. DataTip-visningen visar formatspecificeraren.

Anmärkning

När det inbyggda Felsökningsprogrammet i Visual Studio ändrades till en ny felsökningsmotor lades vissa nya formatspecificerare till och några gamla togs bort. Det äldre felsökningsprogrammet används fortfarande när du felsöker interop (blandat inbyggt och hanterat) med C++/CLI.

Ange formatangivelser

Vi använder följande exempelkod:

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

Lägg till variabeln my_var1 i Watch-fönstret vid felsökning, Debug>Windows>Watch>Watch 1. Högerklicka sedan på variabeln och välj Hexadecimal visning. Nu visar fönstret Watch värdet 0x0065. Om du vill se det här värdet uttryckt som ett tecken i stället för ett heltal högerklickar du först och avmarkerar Hexadecimal display. Lägg sedan till teckenformatsspecificeraren , c i kolumnen Namn efter variabelnamnet. Kolumnen Värde visar nu 101 "e".

Skärmbild av Visual Studio Watch-fönstret med en markerad rad som visar my_var1.c med värdet 101

Du kan visa och välja från en lista över tillgängliga formatspecificerare genom att lägga till ett kommatecken (,) till värdet i bevakningsfönstret .

WatchFormatSpecDropdown

Formatspecifikatorer

I följande tabeller beskrivs de formatspecificerare som du kan använda i Visual Studio. Specificerare i fetstil stöds bara för det nya felsökningsprogrammet och inte för interop-felsökning med C++/CLI.

Specificerare Format Ursprungs klocktidvärde Värde som visas
d heltal i decimalsystemet 0x00000066 102
o osignerat oktalt heltal 0x00000066 000000000146
x

h
hexadecimalt heltal 102 0xcccccccc
X

H
hexadecimalt heltal 102 0xCCCCCCCC
Xb

Hb
hexadecimalt heltal (utan inledande 0x) 102 cccccccccc
Xb

Hb
hexadecimalt heltal (utan inledande 0x) 102 CCCCCCCC
b osignerat binärt heltal 25 0b00000000000000000000000000011001
Bb osignerat binärt heltal (utan inledande 0b) 25 00000000000000000000000000011001
e vetenskaplig notation 25000000 2.500000e+07
g kortare av antingen vetenskaplig notation eller flyttalsrepresentation 25000000 2.5e+07
c enskilt tecken 0x0065 101 'e'
s const char* sträng (med citattecken) <plats> "hello world" hej världen
Sb const char* string (inga citattecken) <plats> "hello world" Hej världen
s8 UTF-8-sträng <plats> "Detta är en UTF-8 kaffekopp ☕" "Det här är en UTF-8 kaffekopp ☕"
s8b UTF-8-sträng (inga citattecken) <plats> "hello world" Hej världen
Su Unicode-sträng (UTF-16-kodning) (med citattecken) <lokalisering> L"Hej världen" L"Hej världen"

"hej världen"
sub Unicode-sträng (UTF-16-kodning) (inga citattecken) <location> L"hej världen" Hej världen
bstr BSTR-binär sträng (med citattecken) <location> L"Hej världen" L"hej världen"
env Miljöblock (dubbelnoll-terminerad sträng) <location> L"=::=::\\" L"=::=::\\\0=C:=C:\\windows\\system32\0ALLUSERSPROFILE=...
s32 UTF-32-sträng (med citattecken) <location> U"Hej världen" U"Hej världen"
s32b UTF-32-sträng (inga citattecken) <location> U"hello world" Hej världen
sv enum Lördag(6) lördag
Hv Pekartyp – indikerar att pekarvärdet som inspekteras är resultatet av heapallokeringen av en matris, till exempel new int[3]. <lokalisering>{<första medlemmen>} <plats>{<första medlem>, <andra medlem>, ...}
Na Undertrycker minnesadressen för en pekare till ett objekt. <location>, {member=value...} {member=value...}
Nd Visar endast basklassinformationen och ignorerar härledda klasser (Shape*) square innehåller information om basklass och härledd klass Visar endast basklassinformation
hr HRESULT- eller Win32-felkod. Den här specificeraren behövs inte längre för HRESULTs eftersom felsökningsprogrammet avkodar dem automatiskt. S_OK S_OK
wc Flagga för fönsterklass 0x0010 WC_DEFAULTCHAR
wm Windows-meddelandenummer 16 WM_CLOSE
nr Undertryck "Raw View"-objekt
nvo Visa "Raw View"-objekt endast för numeriska värden
! raw-format, ignorerar alla anpassningar av datatyper <anpassad representation> 4
handtag Visar information om win32-handtag 0x000000000000009c Visar användbar information om handtag, till exempel tråd-ID osv.

Anmärkning

När hv-formatspecificeraren finns försöker felsökaren fastställa längden på bufferten och visa det antalet element. Eftersom det inte alltid är möjligt för felsökaren att hitta den exakta buffertstorleken för en matris bör du använda en storleksspecificerare (pBuffer,[bufferSize]) när det är möjligt. HV-formatspecificeraren är användbar när buffertstorleken inte är lätt tillgänglig.

Storleksspecificerare för pekare som matriser

Om du har en pekare till ett objekt som du vill visa som en matris kan du använda ett heltal eller ett uttryck för att ange antalet matriselement.

Specificerare Format Ursprungs klocktidvärde Värde som visas
n Decimal- eller hexadecimalt heltal pBuffer,[32]

pBuffer,[0x20]
Visas pBuffer som en 32-elementmatris.
[exp] Ett giltigt C++-uttryck som utvärderas till ett heltal. pBuffer,[bufferSize] Visar pBuffer som en matris med bufferSize element.
expand(n) Ett giltigt C++-uttryck som utvärderas till ett heltal pBuffer, expand(2) Visar det tredje elementet i pBuffer

Formatera specificerare för interop-felsökning med C++/CLI

Specificerare Format Ursprungs klocktidvärde Värde som visas
o osignerat oktalt heltal 0xF065 0170145
x

X
Hexadecimalt heltal 61541 0x0000f065
c enskilt tecken <plats> 101 'e'
s const char* (med citattecken) <plats> hej världen
Su const wchar_t*

const char16_t* (med citattecken)
<plats> L"hej världen"
sub const wchar_t*

const char16_t*
<lokation> Hej världen
s8 const char* (med citattecken) <lokation> hej världen
hr HRESULT- eller Win32-felkod.
Den här specificeraren behövs inte längre för HRESULTs eftersom felsökningsprogrammet avkodar dem automatiskt.
S_OK S_OK
wc Flagga för fönsterklass 0x00000040, WC_DEFAULTCHAR
wm Windows-meddelandenummer 0x0010 WM_CLOSE
! råformat, ignorerar alla anpassningar av datatypsvyer <anpassad representation> 4

D, e, f, g, h, i, l, m, ma, mb, md, mq, mu, mw och u specificerare för inbyggd C++/CLI-kod och inbyggd kod krävde det äldre felsökningsverktyget, som inte stöds i Visual Studio 2022 eller senare versioner av Visual Studio.

Specificerare i fetstil stöds endast för felsökning av inbyggd kod och C++/CLI-kod. Dessa specificerare kräver det äldre felsökningsprogrammet, som anges med Hanterat Kompatibilitetsläge.

Specificerare Format Ursprungs klocktidvärde Värde som visas
d

jag
signerat decimal heltal 0xF000F065 -268373915
u intesignerat decimaltal 0x0065 101
o osignerat oktalt heltal 0xF065 0170145
x

X
Hexadecimalt heltal 61541 0x0000f065
l

h
långt eller kort prefix för: d, i, u, o, x, X 00406042 0x0c22
f signerad flyttals (3./2.), f 1.500000
e teckenförsedd vetenskaplig notation (3.0/2.0) 1.500000e+000
g signerad flyttal eller signerad vetenskaplig notation,
vilket som än är kortare
(3.0/2.0) 1.5
c enskilt tecken <plats> 101 'e'
s const char* (med citattecken) <plats> hej världen
Su const wchar_t*

const char16_t* (med citattecken)
<plats> L"hej världen"
sub const wchar_t*

const char16_t*
<plats> Hej världen
s8 const char* (med citattecken) <plats> hej världen
hr HRESULT- eller Win32-felkod.
Den här specificeraren behövs inte längre för HRESULTs eftersom felsökningsprogrammet avkodar dem automatiskt.
S_OK S_OK
wc Flagga för fönsterklass 0x00000040, WC_DEFAULTCHAR
wm Windows-meddelandenummer 0x0010 WM_CLOSE
! råformat, ignorerar alla anpassningar av datatypsvyer <anpassad representation> 4

Formatera specificerare för minnesplatser i interop-felsökning med C++/CLI

I följande tabell beskrivs formateringssymboler som används för minnesplatser. Du kan använda en minnesplatsspecificerare med valfritt värde eller uttryck som utvärderas till en plats.

Specificerare i fetstil stöds endast för felsökning av inbyggd kod och C++/CLI-kod. Detta kräver det äldre felsökningsprogrammet, specificerat med Hantereat Kompatibilitetsläge.

Symbol Format Ursprungs klocktidvärde Värde som visas
mA 64 ASCII-tecken 0x0012ffac 0x0012ffac .4...0...". 0W&....... 1W&.0.:W.. 1....".. 1.JO&.1.2..".. 1...0y.... 1
m 16 byte i hexadecimalt, följt av 16 ASCII-tecken 0x0012ffac 0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&..
MB 16 byte i hexadecimalt, följt av 16 ASCII-tecken 0x0012ffac 0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&..
mw 8 ord 0x0012ffac 0x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 0000
md 4 dubbla ord 0x0012ffac 0x0012ffac 00CB34B3 80943084 308A22FF 00002657
mq 2 fyrord 0x0012ffac 0x0012ffac 7ffdf00000000000 5f441a790012fdd4
Mu 2-byte-tecken (Unicode) 0x0012ffac 0x0012ffac 8478 77f4 ffff ffff 0000 0000 0000 0000 0000

Storleksspecificerare för pekare som matriser i interop-felsökning med C++/CLI

Om du har en pekare till ett objekt som du vill visa som en matris kan du använda ett heltal för att ange antalet matriselement.

Specificerare Format Expression Värde som visas
n Decimal heltal pBuffer[32] Visas pBuffer som en matris med 32 element.