Partager via


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.

[!REMARQUE]

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.

  • Visual Studio 2012 format specifiers décrit les spécificateurs de format dans le nouveau moteur de débogage.

  • Format specifiers for interop debugging and C++ edit and continue décrit les spécificateurs de format dans l’ancien moteur de débogage.

Sommaire

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

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 grasne 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

en

Utilisé sur une expression qui évalue un type enum C++.Affiche uniquement le nom de la constante enum, en omettant la valeur numérique.

enumValue,en

EnumValue

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