Delen via


Opmaakaanduidingen voor C++ in het Visual Studio-foutopsporingsprogramma

U kunt de notatie wijzigen waarin een waarde wordt weergegeven in de vensters Watch, Autos en Locals met behulp van opmaakaanduidingen.

U kunt ook opmaakaanduidingen gebruiken in het Immediate venster, het opdrachtvenster, in tracepoints en zelfs in bronvensters. Als u een expressie in deze vensters onderbreekt, wordt het resultaat weergegeven in een DataTip. De DataTip-weergave volgt de opmaakspecifier.

Opmerking

Wanneer het systeemeigen foutopsporingsprogramma van Visual Studio is gewijzigd in een nieuwe foutopsporingsengine, zijn er enkele nieuwe indelingsaanduidingen toegevoegd en zijn sommige oude verwijderd. Het oudere foutopsporingsprogramma wordt nog steeds gebruikt wanneer u foutopsporing uitvoert (gemengd systeemeigen en beheerd) met C++/CLI.

Formaatspecificaties opgeven

We gebruiken de volgende voorbeeldcode:

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

Voeg de my_var1 variabele toe aan het venster Watch tijdens het debuggen> in Windows>Watch>Watch 1. Klik vervolgens met de rechtermuisknop op de variabele en selecteer Hexadecimale weergave. In het venster Controle ziet u nu de waarde 0x0065. Als u deze waarde wilt weergeven als een teken in plaats van een geheel getal, klikt u eerst met de rechtermuisknop en schakelt u hexadecimale weergave uit. Voeg vervolgens de tekenopmaakaanduiding toe, c in de kolom Naam na de naam van de variabele. In de kolom Waarde wordt nu 101 'e' weergegeven.

Schermopname van het Visual Studio Watch-venster met één geselecteerde regel met my_var1.c met de waarde 101 'e' en een type int.

U kunt een lijst met beschikbare opmaakaanduidingen weergeven en selecteren door een komma (,) toe te voegen aan de waarde in het Watch venster.

WatchFormatSpecDropdown

Opmaakaanduidingen

In de volgende tabellen worden de indelingsaanduidingen beschreven die u in Visual Studio kunt gebruiken. Vetgedrukte specificaties worden alleen ondersteund voor de nieuwe debugger en niet voor interop-debugging met C++/CLI.

Specificator Formaat Oorspronkelijke horlogewaarde Weergegeven waarde
d decimaal geheel getal 0x00000066 102
o niet-ondertekend octaal geheel getal 0x00000066 000000000146
x

h
hexadecimaal geheel getal 102 0xcccccccc
X

H
hexadecimaal geheel getal 102 0xCCCCCCCC
xb

Hb
hexadecimaal geheel getal (zonder voorloop van 0x) 102 cccccccc
Xb

Hb
hexadecimaal geheel getal (zonder voorloop van 0x) 102 CCCCCCCC
b niet-ondertekend binair geheel getal vijfentwintig 0b00000000000000000000000000011001
Bb niet-ondertekend binair integer (zonder voorafgaande 0b) vijfentwintig 00000000000000000000000000011001
e wetenschappelijke notatie 25000000 2.500000e+07
g korter in wetenschappelijke of drijvendekommanotatie 25000000 2,5e+07
c enkel teken 0x0065 101 'e'
s const char* tekenreeks (met aanhalingstekens) <locatie> "hallo wereld" "hallo wereld"
Sb const char* tekenreeks (geen aanhalingstekens) <locatie> "hallo wereld" Hallo mensen
s8 UTF-8-tekenreeks <locatie> "Dit is een UTF-8 koffiekopje ☕" "Dit is een UTF-8 koffiekop ☕ "
s8b UTF-8-tekenreeks (geen aanhalingstekens) <locatie> "hallo wereld" Hallo mensen
Su Unicode-tekenreeks (UTF-16-codering) (met aanhalingstekens) <locatie> L"hallo wereld" L"hallo wereld"

u"hallo wereld"
ondertiteling Unicode-tekenreeks (UTF-16-codering) (geen aanhalingstekens) <locatie> L"hello world" Hallo mensen
bstr BSTR binaire tekenreeks (met aanhalingstekens) <locatie> L"hallo wereld" L"hallo wereld"
Env Omgevingsblok (dubbel-nul beëindigde tekenreeks) <locatie> L"=::=:\\" L"=::=::\\\0=C:=C:\\windows\\system32\0ALLUSERSPROFILE=...
s32 UTF-32-tekenreeks (met aanhalingstekens) <locatie> U"hallo wereld" U"hallo wereld"
s32b UTF-32-tekenreeks (geen aanhalingstekens) <locatie> U"hallo wereld" Hallo mensen
en enum Zaterdag(6) Zaterdag
hv Type aanwijzer : geeft aan dat de waarde van de aanwijzer die wordt geïnspecteerd, het resultaat is van de heaptoewijzing van een matrix, bijvoorbeeld new int[3]. <locatie>{<eerste lid>} <locatie>{<eerste lid>, <tweede lid>, ...}
na Onderdrukt het geheugenadres van een aanwijzer naar een object. <locatie>, {member=value...} {member=value...}
Nd Alleen de basisklassegegevens weergeven, waarbij afgeleide klassen worden genegeerd (Shape*) square bevat basisklasse- en afgeleide klasse-informatie Alleen basisklassegegevens weergeven
hr HRESULT- of Win32-foutcode. Deze aanduiding is niet meer nodig voor HRESULTs omdat het foutopsporingsprogramma deze automatisch codeert. S_OK S_OK
wc Vlag van vensterklasse 0x0010 WC_DEFAULTCHAR
wm Windows-berichtnummers 16 WM_CLOSE
nr Item 'Onbewerkte weergave' onderdrukken
nvo Toon item "Onbewerkte Weergave" alleen voor numerieke waarden
! onbewerkte indeling, waarbij eventuele aanpassingen van gegevenstypeweergaven worden genegeerd <aangepaste weergave> 4
handvat Geeft informatie weer over win32 handle 0x000000000000009c Geeft nuttige informatie weer over de handle, zoals draad-id, etc.

Opmerking

Wanneer de hv-indelingsaanduiding aanwezig is, probeert het foutopsporingsprogramma de lengte van de buffer te bepalen en dat aantal elementen weer te geven. Omdat de debugger niet altijd in staat is om de exacte buffergrootte van een array te vinden, moet u waar mogelijk een grootteaanduiding (pBuffer,[bufferSize]) gebruiken. De hv-indelingsaanduiding is handig wanneer de buffergrootte niet direct beschikbaar is.

Grootteaanduidingen voor pointers als arrays

Als u een aanwijzer hebt naar een object dat u als matrix wilt weergeven, kunt u een geheel getal of een expressie gebruiken om het aantal matrixelementen op te geven.

Specificator Formaat Oorspronkelijke horlogewaarde Weergegeven waarde
n Decimaal of hexadecimaal geheel getal pBuffer,[32]

pBuffer,[0x20]
Wordt weergegeven pBuffer als een matrix met 32 elementen.
[exp] Een geldige C++-expressie die resulteert in een geheel getal. pBuffer,[bufferSize] Geeft pBuffer weer als een matrix van bufferSize elementen.
expand(n) Een geldige C++-expressie die resulteert in een geheel getal pBuffer, expand(2) Geeft het derde element van pBuffer

Indelingsspecificaties voor interop-debuggen met C++/CLI

Specificator Formaat Oorspronkelijke horlogewaarde Weergegeven waarde
o niet-ondertekend octaal geheel getal 0xF065 0170145
x

X
Hexadecimaal geheel getal 61541 0x0000f065
c enkel teken <plaats> 101 'e'
s const char* (met aanhalingstekens) <plaats> "hallo wereld"
Su const wchar_t*

const char16_t* (met aanhalingstekens)
<plaats> L"hallo wereld"
ondertiteling const wchar_t*

const char16_t*
<plaats> Hallo mensen
s8 const char* (met aanhalingstekens) <plaats> "hallo wereld"
hr HRESULT- of Win32-foutcode.
Deze aanduiding is niet meer nodig voor HRESULTs omdat het foutopsporingsprogramma deze automatisch codeert.
S_OK S_OK
wc Vlag van vensterklasse 0x00000040, WC_DEFAULTCHAR
wm Windows-berichtnummers 0x0010 WM_CLOSE
! onbewerkte indeling, waarbij eventuele aanpassingen van de weergave van het gegevenstype worden genegeerd <aangepaste weergave> 4

De d-, e-, f-, g-, h-, i-, l-, m-, ma-, mb-, md-, mq-, mu-, mw- en u-specificaties voor systeemeigen en C++/CLI-code vereisten de legacy-debugger, die niet wordt ondersteund in Visual Studio 2022 of latere versies.

Vetgedrukte aanduidingen worden alleen ondersteund voor foutopsporing in systeemeigen en C++/CLI-code. Voor deze aanduidingen is de legacy-debugger vereist, die is opgegeven met de beheerde compatibiliteitsmodus.

Specificator Formaat Oorspronkelijke horlogewaarde Weergegeven waarde
d

Ik
tekendecimaal geheel getal 0xF000F065 -268373915
u ongetekend decimaal integer 0x0065 101
o niet-ondertekend octaal geheel getal 0xF065 0170145
x

X
Hexadecimaal geheel getal 61541 0x0000f065
l

h
lang of kort voorvoegsel voor: d, i, u, o, x, X 00406042 0x0c22
f met teken zwevendekomma (3./2.), f 1.500000
e ondertekende wetenschappelijke notatie (3.0/2.0) 1.500000e+000
g ondertekend drijvende komma of ondertekende wetenschappelijke notatie,
wat korter is
(3.0/2.0) 1.5
c enkel teken <plaats> 101 'e'
s const char* (met aanhalingstekens) <plaats> "hallo wereld"
Su const wchar_t*

const char16_t* (met aanhalingstekens)
<plaats> L"hallo wereld"
ondertiteling const wchar_t*

const char16_t*
<plaats> Hallo mensen
s8 const char* (met aanhalingstekens) <plaats> "hallo wereld"
hr HRESULT- of Win32-foutcode.
Deze aanduiding is niet meer nodig voor HRESULTs omdat het foutopsporingsprogramma deze automatisch codeert.
S_OK S_OK
wc Vlag van vensterklasse 0x00000040, WC_DEFAULTCHAR
wm Windows-berichtnummers 0x0010 WM_CLOSE
! onbewerkte indeling, waarbij eventuele aanpassingen van de weergave van het gegevenstype worden genegeerd <aangepaste weergave> 4

Indelingsspecificaties voor geheugenlocaties bij interoperabiliteitsdebugging met C++/CLI

In de volgende tabel worden opmaaksymbolen beschreven die worden gebruikt voor geheugenlocaties. U kunt een geheugenlocatieaanduiding gebruiken met een waarde of expressie die resulteert in een locatie.

Vetgedrukte aanduidingen worden alleen ondersteund voor foutopsporing in systeemeigen en C++/CLI-code. Hiervoor is het verouderde foutopsporingsprogramma vereist, dat is opgegeven met de beheerde compatibiliteitsmodus.

Symbol Formaat Oorspronkelijke horlogewaarde Weergegeven waarde
ma 64 ASCII-tekens 0x0012ffac 0x0012ffac .4...0...".0W&.......1W&.0.:W..1...."..1.JO&.1.2.."..1...0y....1
m 16 bytes in hexadecimaal, gevolgd door 16 ASCII-tekens 0x0012ffac 0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&..
Mb 16 bytes in hexadecimaal, gevolgd door 16 ASCII-tekens 0x0012ffac 0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&..
mw 8 woorden 0x0012ffac 0x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 0000
md 4 dubbelwoorden 0x0012ffac 0x0012ffac 00CB34B3 80943084 308A22FF 00002657
mq 2 quadwoorden 0x0012ffac 0x0012ffac 7ffdf0000000000000 5f441a790012fdd4
mu 2 bytetekens (Unicode) 0x0012ffac 0x0012ffac 8478 77f4 ffff ffff 0000 0000 0000 0000 0000

Grootteaanduiding voor aanwijzers als matrices in interop-foutopopsporing met C++/CLI

Als u een aanwijzer hebt naar een object dat u als matrix wilt weergeven, kunt u een geheel getal gebruiken om het aantal matrixelementen op te geven.

Specificator Formaat Expression Weergegeven waarde
n Decimaal getal pBuffer[32] Wordt weergegeven pBuffer als een matrix met 32 elementen.