Spécificateurs de format en C++
Lorsque vous déboguez du code natif dans la fenêtre Espion ou la boîte de dialogue Espion express, vous modifiez le format d'affichage des valeurs à l'aide de spécificateurs de format.
(La plupart des spécificateurs de format ne s'appliquent qu'au code natif, mais Visual C# possède un jeu limité de spécificateurs de format. Consultez Spécificateurs de format en C#.)
Vous pouvez également utiliser des spécificateurs de format dans la fenêtre Exécution, la fenêtre Commande et même les fenêtres sources. Si vous effectuez une suspension sur une expression dans ces fenêtres, le résultat apparaît dans un DataTip. Les DataTips répercutent le spécificateur de format dans l'affichage du DataTip.
Notes
Le débogueur natif Visual Studio utilise désormais un nouveau moteur de débogage.Cette modification inclut l'ajout de nouveaux spécificateurs de format et la suppression d'anciens.La transition n'est pas terminée et le débogueur plus ancien est encore utilisé lorsque vous effectuez un débogage d'interopérabilité (mixte natif et managé) avec C++/CLI et lorsque vous déboguez à l'aide de la fonctionnalité Modifier & Continuer en C++.Les sections de cette rubrique présentent les spécificateurs de format pour chaque moteur de débogage.
-
Spécificateurs de format Visual Studio 2012 décrit les spécificateurs de format dans le nouveau moteur de débogage.
-
Spécificateurs de format pour le débogage d'interopérabilité et la fonctionnalité Modifier & Continuer en C++ décrit les spécificateurs de format dans l'ancien moteur de débogage.
Sommaire
Exemple
Spécificateurs de format Visual Studio 2012
- Spécificateurs de taille pour les pointeurs en tant que tableaux dans Visual Studio 2012
Spécificateurs de format pour le débogage d'interopérabilité et la fonctionnalité Modifier & Continuer en C++
Emplacements de mémoire des spécificateurs de format dans le débogage d'interopérabilité et la fonctionnalité Modifier & Continuer en C++
Spécificateur de taille pour les pointeurs en tant que tableaux dans le débogage d'interopérabilité et la fonctionnalité Modifier & Continuer en C++
Exemple
Supposez que nVar est une variable entière et que la fenêtre Espion montre qu'elle contient la valeur 0x0065. Pour voir la valeur exprimée sous la forme d'un caractère plutôt que sous la forme d'un entier, dans la colonne Nom, après le nom de la variable, ajoutez le spécificateur de format de caractère c :
À la place de la valeur entière 0x0065, la colonne Valeur affiche désormais la valeur de caractère 101 'e'.
Si vous souhaitez appliquer un spécificateur de format aux éléments d'un tableau ou aux membres d'un objet, vous devez l'appliquer directement à chaque élément ou membre. Vous ne pouvez pas l'appliquer au tableau ou à l'objet dans son intégralité. Par exemple, supposez que vous avez un tableau nArray et que vous souhaitez afficher les quatre premiers éléments au format caractère. Dans ce cas, vous entrez les expressions suivantes dans la fenêtre Espion :
nArray[0],c
nArray[1],c
nArray[2],c
nArray[3],c
Spécificateurs de format Visual Studio 2012
Les tableaux suivants illustrent les spécificateurs de format que vous pouvez utiliser dans Visual Studio 2012 lorsque vous n'êtes pas en train de déboguer du code (natif et managé) d'interopérabilité avec C++/CLI ou d'utiliser la fonctionnalité Modifier & Continuer en C++.
Les spécificateurs en gras ne sont pas pris en charge pour le débogage d'interopérabilité avec C++/CLI ou le débogage avec la fonctionnalité Modifier & Continuer en C++.
Spécificateur |
Format |
Expression |
Valeur affichée |
---|---|---|---|
d |
entier décimal |
0xF000F065, d |
-268373915 |
o |
entier octal non signé |
0xF065, o |
0170145 |
x h |
Entier hexadécimal |
61546, x 61541, h |
0x0000f06a |
X H |
Entier hexadécimal |
61541, X 61546, H |
0x0000F06A |
c |
Caractère unique |
0x0065, c |
101 'e' |
s |
Chaîne ASCII |
0x0012fde8, s |
"Hello world" |
sb |
Chaîne ASCII |
0x0012fde8, sb |
Hello world |
su |
chaîne Unicode |
0x0012fde8, su |
L"Hello world" |
sub |
chaîne Unicode |
0x0012fde8, sub |
Hello world |
s8 |
Chaîne UTF-8 |
0x0012fde8, s8 |
"Hello world" |
s8b |
Chaîne UTF-8 |
0x0012fde8, s8b |
Hello world |
bstr |
Chaîne BSTR |
0x0032fe8, bstr |
Hi there |
, na |
&myGlobal, n winmain, na |
L'adresse du pointeur n'est pas affichée. |
|
nd |
pb,nd |
Affiche uniquement les informations de classe de base de pb, en ignorant les classes dérivées |
|
hr |
HRESULT ou un code d'erreur Win32. (Le débogueur décodant automatiquement HRESULTs, le spécificateur n'est pas requis dans ces cas-là. |
0x00000000L, hr |
S_OK |
wc |
Indicateur de classe de fenêtre. |
0x00000040, wc |
WC_DEFAULTCHAR |
wm |
Numéros de messages Windows |
0x0010, wm |
WM_CLOSE |
! |
format brut, ignorant toutes les personnalisations de vue de type de données |
i ! |
4 |
Spécificateurs de taille pour les pointeurs en tant que tableaux dans Visual Studio 2012
Si vous avez un pointeur vers un objet que vous souhaitez afficher sous forme de tableau, vous pouvez utiliser un entier ou une expression pour spécifier le nombre d'éléments du tableau :
Spécificateur |
Format |
Expression |
Valeur affichée |
---|---|---|---|
n |
Entier décimal ou hexadécimal |
pBuffer,[32] pBuffer,[0x20] |
Affiche pBuffer sous forme de tableau de 32 éléments. |
[exp] |
Expression C++ valide qui correspond à un entier. |
pBuffer,[bufferSize] |
Évalue bufferSize et affiche pBuffer comme un tableau du nombre d'éléments évalués. |
expand(n) |
pBuffer, expand(1,2) |
Affiche le troisième enfant du deuxième enfant de pBuffer |
Spécificateurs de format pour le débogage d'interopérabilité avec C++/CLI ou la fonctionnalité Modifier & Continuer en C++
Les spécificateurs en gras ne sont pris en charge que pour le débogage du code natif et C++/CLI et le débogage avec la fonctionnalité Modifier & Continuer en C++.
Spécificateur |
Format |
Expression |
Valeur affichée |
---|---|---|---|
d,i |
entier décimal signé |
0xF000F065, d |
-268373915 |
u |
entier décimal non signé |
0x0065, u |
101 |
o |
entier octal non signé |
0xF065, o |
0170145 |
x,X |
Entier hexadécimal |
61541, x |
0x0000f065 |
l,h |
préfixe long ou court pour : d, i, u, o, x, X |
00406042,hx |
0x0c22 |
f |
virgule flottante signée |
(3./2.), f |
1.500000 |
e |
notation scientifique signée |
(3./2.), e |
1.500000e+000 |
g |
virgule flottante signée ou notation scientifique signée, selon ce qui est le plus court |
(3./2.), g |
1.5 |
c |
Caractère unique |
0x0065, c |
101 'e' |
s |
Chaîne |
0x0012fde8, s |
"Hello world" |
su |
chaîne Unicode |
0x0012fde8, su |
L"Hello world" |
sub |
chaîne Unicode |
0x0012fde8, sub |
Hello world |
s8 |
Chaîne UTF-8 |
0x0012fde8, s8 |
"Hello world" |
hr |
HRESULT ou un code d'erreur Win32. (Le débogueur décodant automatiquement HRESULTs, le spécificateur n'est pas requis dans ces cas-là. |
0x00000000L, hr |
S_OK |
wc |
Indicateur de classe de fenêtre. |
0x00000040, wc |
WC_DEFAULTCHAR |
wm |
Numéros de messages Windows |
0x0010, wm |
WM_CLOSE |
! |
format brut, ignorant toutes les personnalisations de vue de type de données |
i ! |
4 |
Emplacements de mémoire des spécificateurs de format dans le débogage d'interopérabilité avec C++/CLI ou la fonctionnalité Modifier & Continuer en C++
Le tableau suivant contient les symboles de mise en forme pour les emplacements en mémoire. Vous pouvez utiliser un spécificateur d'emplacement en mémoire avec n'importe quelle valeur ou expression dont l'évaluation fournit un emplacement.
Symbole |
Format |
Expression |
Valeur affichée |
---|---|---|---|
ma |
64 caractères ASCII |
ptr, ma |
0x0012ffac .4...0...".0W&.......1W&.0.:W..1...."..1.JO&.1.2.."..1...0y....1 |
m |
16 octets en hexadécimal suivis de 16 caractères ASCII |
ptr, m |
0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&.. |
mb |
16 octets en hexadécimal suivis de 16 caractères ASCII |
ptr, mb |
0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&.. |
mw |
8 mots |
ptr, mw |
0x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 0000 |
md |
4 mots doubles |
ptr, md |
0x0012ffac 00CB34B3 80943084 308A22FF 00002657 |
mq |
2 mots quadruples |
ptr, mq |
0x0012ffac 7ffdf00000000000 5f441a790012fdd4 |
mu |
caractères sur 2 octets (Unicode) |
ptr, mu |
0x0012fc60 8478 77f4 ffff ffff 0000 0000 0000 0000 |
Spécificateur de taille pour les pointeurs en tant que tableaux dans le débogage d'interopérabilité avec C++/CLI ou la fonctionnalité Modifier & Continuer en C++
Si vous avez un pointeur vers un objet que vous souhaitez afficher sous forme de tableau, vous pouvez utiliser un entier pour spécifier le nombre d'éléments du tableau :
Spécificateur |
Format |
Expression |
Valeur affichée |
---|---|---|---|
n |
Entier décimal |
pBuffer[32] |
Affiche pBuffer sous forme de tableau de 32 éléments. |