Formatbezeichner in C++
Beim Debuggen von systemeigenem Code im Überwachungsfenster oder im Dialogfeld Schnellüberwachung können Sie mithilfe von Formatbezeichnern das Format ändern, in dem ein Wert angezeigt wird.
(Die meisten Formatbezeichner gelten nur für systemeigenen Code, jedoch verfügt Visual C# über einen begrenzten Satz Formatbezeichner.Weitere Informationen erhalten Sie unter Formatbezeichner in C#.)
Formatbezeichner können im Direktfenster, im Befehlsfenster und sogar in den Quellcodefenstern verwendet werden.Wenn Sie in einen Ausdruck in diesen Fenstern anhalten, wird das Ergebnis in einem DataTip angezeigt.DataTips geben den Formatbezeichner in der DataTip-Anzeige wieder.
Hinweis |
---|
Der systemeigene Debugger in Visual Studio wurde als neues Debugmodul konstruiert.Diese Änderung umfasste das Hinzufügen mehrerer neuer Formatbezeichner und das Entfernen von einigen alten.Der Übergang ist noch nicht abgeschlossen, und der ältere Debugger wird weiterhin verwendet, wenn Sie Interop-Debuggen (systemeigenes und verwaltetes Debuggen gemischt) mit C++/CLI ausführen und wenn Sie mithilfe der C++-Funktion "Bearbeiten und Fortfahren" debuggen.Abschnitte in diesem Thema erläutern die Formatbezeichner für jedes Debugmodul.
|
Inhalt
Example
Visual Studio 2012 format specifiers
- Size specifiers for pointers as arrays in Visual Studio 2012
Format specifiers for interop debugging and C++ edit and continue
Format specifiers memory locations in interop debugging and C++ edit and continue
Size specifier for pointers as arrays in interop debugging and C++ edit and continue
Beispiel
Angenommen, nVar ist eine Ganzzahlvariable, und aus dem Überwachungsfenster wird ersichtlich, dass sie den Wert 0x0065 enthält.Um den Wert als Zeichen und nicht als ganze Zahl anzuzeigen, geben Sie in der Spalte "Name" hinter dem Variablennamen den Zeichenformatbezeichner c ein:
Anstatt der ganzen Zahl 0x0065 wird in der Spalte "Wert" nun der Zeichenwert 101 'e' angezeigt.
Um einen Formatbezeichner auf Elemente eines Arrays oder Member eines Objekts anzuwenden, müssen Sie diesen direkt für jedes Element bzw. jeden Member festlegen.Der Bezeichner kann nicht auf das Array oder Objekt im Ganzen angewendet werden.Angenommen, Sie verfügen über das Array nArray und möchten die vier ersten Elemente im Zeichenformat anzeigen.In diesem Fall würden Sie die folgenden Ausdrücke im Überwachungsfenster eingeben:
nArray[0],c
nArray[1],c
nArray[2],c
nArray[3],c
Visual Studio 2012-Formatbezeichner
In den folgenden Tabellen sind die Formatbezeichner angegeben, die Sie in Visual Studio 2012 verwenden können, wenn Sie kein Interop-Debuggen (systemeigenes und verwaltetes Debuggen) für den Code mit C++/CLI ausführen oder hierzu die C++-Funktion "Bearbeiten und Fortfahren" verwenden.
Fett formatierte Bezeichner werden nicht für das Interop-Debuggen mit C++/CLI oder für das Debuggen mit der C++-Funktion "Bearbeiten und Fortfahren" unterstützt.
Bezeichner |
Format |
Ausdruck |
Angezeigter Wert |
---|---|---|---|
d |
Ganze Dezimalzahl |
0xF000F065, d |
-268373915 |
o |
Oktale ganze Zahl ohne Vorzeichen |
0xF065, o |
0170145 |
w h |
Ganze Hexadezimalzahl |
61546, x 61541, h |
0x0000f06a |
X S |
Ganze Hexadezimalzahl |
61541, X 61546, H |
0x0000F06A |
c |
Einzelnes Zeichen |
0x0065, c |
101 'e' |
s |
ASCII-Zeichenfolge |
0x0012fde8, s |
"Hello world" |
sb |
ASCII-Zeichenfolge |
0x0012fde8, sb |
Hello World |
su |
Unicode-Zeichenfolge |
0x0012fde8, su |
L"Hello world" |
sub |
Unicode-Zeichenfolge |
0x0012fde8, sub |
Hello World |
s8 |
UTF-8-Zeichenfolge |
0x0012fde8, s8 |
"Hello world" |
s8b |
UTF-8-Zeichenfolge |
0x0012fde8, s8b |
Hello World |
bstr |
BSTR-Zeichenfolge |
0x0032fe8, bstr |
Hi there |
en |
Wird für einen Ausdruck verwendet, der zu einem C++-Enumerationstyp ausgewertet wird.Zeigt nur den Namen der Enumerationskonstante an und lässt den numerischen Wert weg. |
enumValue,en |
enumValue |
, na |
&myGlobal, n winmain, na |
Die Adresse des Zeigers wird nicht angezeigt. |
|
nd |
pb,nd |
Es werden nur die pb-Basisklasseninformationen angezeigt, die abgeleiteten Klassen werden ignoriert. |
|
hr |
HRESULT oder Win32-Fehlercode.(Der Debugger decodiert HRESULT-Werte nun automatisch, sodass der Bezeichner in diesem Fall nicht erforderlich ist.) |
0x00000000L, hr |
S_OK |
wc |
Fensterklassenflag |
0x00000040, wc |
WC_DEFAULTCHAR |
wm |
Windows-Meldungsnummern |
0x0010, wm |
WM_CLOSE |
! |
Rohdatenformat, jegliche Ansichtsanpassungen für den Datentyp werden ignoriert. |
i ! |
4 |
Größenbezeichner für Zeiger als Arrays in Visual Studio 2012
Wenn Sie einen Zeiger für ein Objekt haben, das Sie als Array anzeigen möchten, können Sie eine ganze Zahl oder einen Ausdruck verwenden, um die Anzahl von Arrayelementen zu bestimmen:
Bezeichner |
Format |
Ausdruck |
Angezeigter Wert |
---|---|---|---|
n |
Dezimalzahl oder ganze Hexadezimalzahl |
pBuffer,[32] pBuffer,[0x20] |
Zeigt pBuffer als Array mit 32 Elementen an. |
[exp] |
Ein gültiger C++-Ausdruck, der für eine ganze Zahl ausgewertet wird. |
pBuffer,[bufferSize] |
Wertet die Puffergröße aus und zeigt pBuffer als Array der ausgewerteten Anzahl von Elementen an. |
expand(n) |
pBuffer, expand(1,2) |
Zeigt das dritte untergeordnete Element des zweiten untergeordneten Elements von pBuffer an. |
Formatbezeichner für das Interop-Debuggen mit C++/CLI oder für die C++-Funktion "Bearbeiten und Fortfahren".
Fett formatierte Bezeichner werden nur für das Debuggen von systemeigenem und C++/CLI-Code sowie für das Debuggen mit der C++-Funktion "Bearbeiten und Fortfahren" unterstützt.
Bezeichner |
Format |
Ausdruck |
Angezeigter Wert |
---|---|---|---|
d,i |
Ganze Dezimalzahl mit Vorzeichen |
0xF000F065, d |
-268373915 |
n |
Ganze Dezimalzahl ohne Vorzeichen |
0x0065, u |
101 |
o |
Oktale ganze Zahl ohne Vorzeichen |
0xF065, o |
0170145 |
x,X |
Ganze Hexadezimalzahl |
61541, x |
0x0000f065 |
l,h |
Langes oder kurzes Präfix für: d, i, u, o, x, X |
00406042,hx |
0x0c22 |
f |
Gleitkommazahl mit Vorzeichen |
(3./2.), f |
1.500000 |
e |
Wissenschaftliche Notation mit Vorzeichen |
(3./2.), e |
1.500000e+000 |
l |
Gleitkommazahl oder wissenschaftliche Notation mit Vorzeichen, je nachdem, welche kürzer ist |
(3./2.), g |
1.5 |
c |
Einzelnes Zeichen |
0x0065, c |
101 'e' |
s |
Zeichenfolge |
0x0012fde8, s |
"Hello world" |
su |
Unicode-Zeichenfolge |
0x0012fde8, su |
L"Hello world" |
sub |
Unicode-Zeichenfolge |
0x0012fde8, sub |
Hello World |
s8 |
UTF-8-Zeichenfolge |
0x0012fde8, s8 |
"Hello world" |
hr |
HRESULT oder Win32-Fehlercode.(Der Debugger decodiert HRESULT-Werte nun automatisch, sodass der Bezeichner in diesem Fall nicht erforderlich ist.) |
0x00000000L, hr |
S_OK |
wc |
Fensterklassenflag |
0x00000040, wc |
WC_DEFAULTCHAR |
wm |
Windows-Meldungsnummern |
0x0010, wm |
WM_CLOSE |
! |
Rohdatenformat, jegliche Ansichtsanpassungen für den Datentyp werden ignoriert. |
i ! |
4 |
Formatbezeichner für Speicherbereiche beim Interop-Debuggen mit C++/CLI oder für die C++-Funktion "Bearbeiten und Fortfahren"
Die folgende Tabelle enthält Formatierungssymbole, die für Speicherbereiche verwendet werden.Bezeichner für Speicherbereiche können mit beliebigen Werten oder Ausdrücken verwendet werden, die als Speicherbereiche ausgewertet werden.
Symbol |
Format |
Ausdruck |
Angezeigter Wert |
---|---|---|---|
ma |
64 ASCII-Zeichen |
ptr, ma |
0x0012ffac .4...0...".0W&.......1W&.0.:W..1...."..1.JO&.1.2.."..1...0y....1 |
m |
16 Bytes im Hexadezimalformat, gefolgt von 16 ASCII-Zeichen |
ptr, m |
0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&.. |
mb |
16 Bytes im Hexadezimalformat, gefolgt von 16 ASCII-Zeichen |
ptr, mb |
0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&.. |
mw |
8 Wörter |
ptr, mw |
0x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 0000 |
md |
4 Doppelwörter |
ptr, md |
0x0012ffac 00CB34B3 80943084 308A22FF 00002657 |
mq |
2 Vierfachwörter |
ptr, mq |
0x0012ffac 7ffdf00000000000 5f441a790012fdd4 |
mu |
2-Byte-Zeichen (Unicode) |
ptr, mu |
0x0012fc60 8478 77f4 ffff ffff 0000 0000 0000 0000 |
Größenbezeichner für Zeiger als Arrays beim Interop-Debuggen mit C++/CLI oder für die C++-Funktion "Bearbeiten und Fortfahren"
Wenn Sie einen Zeiger für ein Objekt haben, das Sie als Array anzeigen möchten, können Sie eine ganze Zahl verwenden, um die Anzahl von Arrayelementen zu bestimmen:
Bezeichner |
Format |
Ausdruck |
Angezeigter Wert |
---|---|---|---|
n |
Ganze Dezimalzahl |
pBuffer[32] |
Zeigt pBuffer als Array mit 32 Elementen an. |