Spécificateurs de format en C++ dans le débogueur Visual StudioFormat specifiers in C++ in the Visual Studio debugger

Vous pouvez modifier le format dans lequel une valeur est affichée dans la fenêtre Espion à l’aide de spécificateurs de format.You can change the format in which a value is displayed in the Watch window using format specifiers.

Vous pouvez également utiliser des spécificateurs de format dans le immédiat fenêtre, le commande fenêtre, dans des points de traceet même les fenêtres sources.You can also use format specifiers in the Immediate window, the Command window, in tracepoints, and even in source windows. Si vous faites une pause d’une expression dans ces fenêtres, le résultat s’affiche dans un DataTip.If you pause on an expression in those windows, the result appears in a DataTip. L’affichage du DataTip reflète le spécificateur de format.The DataTip display reflects the format specifier.

Note

Lorsque le débogueur natif Visual Studio passe à un nouveau moteur de débogage, nouveaux spécificateurs de format ont été ajoutés et certains anciens ont été supprimés.When the Visual Studio native debugger changed to a new debugging engine, some new format specifiers were added and some old ones were removed. Le débogueur plus ancien est toujours utilisé quand vous effectuez un débogage d’interopérabilité (native et managée à la fois) avec C++/CLI.The older debugger is still used when you do interop (mixed native and managed) debugging with C++/CLI. Les sections suivantes présentent les spécificateurs de format pour chaque moteur de débogage.The following sections in this topic show the format specifiers for each debug engine.

Utilisation des spécificateurs de formatUsing Format Specifiers

Si vous avez le code suivant :If you have the following code:

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

Ajouter le my_var1 à la variable le espion fenêtre (pendant le débogage, Déboguer > Windows > espion > Espion 1), puis définissez l’affichage au format hexadécimal (dans le regarderfenêtre, cliquez sur la variable et sélectionnez affichage hexadécimal).Add the my_var1 variable to the Watch window (while debugging, Debug > Windows > Watch > Watch 1), and then set the display to hexadecimal (in the Watch window, right-click the variable and select Hexadecimal Display). La fenêtre Espion indique à présent qu’elle contient la valeur 0x0065.Now the Watch window shows that it contains the value 0x0065. Pour que la valeur soit exprimée sous forme de caractère plutôt que sous forme d’entier, dans la colonne Nom, après le nom de la variable, ajoutez le spécificateur de format de caractère , c.To see this value expressed as a character instead of an integer, in the Name column, after the variable name, add the character format specifier , c. La colonne Valeur apparaît désormais avec 101 ’e’.The Value column now appears with 101 'e'.

WatchFormatCPlus1WatchFormatCPlus1

Spécificateurs de formatFormat Specifiers

Les tableaux suivants indiquent les spécificateurs de format que vous pouvez utiliser dans Visual Studio.The following tables show the format specifiers that you can use in Visual Studio. Les spécificateurs en gras ne sont pas pris en charge pour le débogage d’interopérabilité avec C++/CLI.Specifiers in bold are not supported for interop debugging with C++/CLI.

SpécificateurSpecifier FormatFormat Valeur d’espion d’origineOriginal Watch Value Valeur affichéeValue Displayed
jd entier décimaldecimal integer 0x000000660x00000066 102102
oo entier octal non signéunsigned octal integer 0x000000660x00000066 000000000146000000000146
xx

hh
entier hexadécimalhexadecimal integer 102102 0xcccccccc0xcccccccc
XX

HH
entier hexadécimalhexadecimal integer 102102 0xcccccccc0xCCCCCCCC
cc caractère uniquesingle character 0x0065, c0x0065, c 101 ’e’101 'e'
ss chaîne const char*const char* string <emplacement > « hello world »<location> "hello world" "hello world""hello world"
sbsb const char * chaîne (sans guillemets)const char* string (no quotation marks) <emplacement > « hello world »<location> "hello world" hello worldhello world
s8s8 Chaîne UTF-8UTF-8 string <emplacement > « Ceci est un ☕ tasse de café de UTF-8 »<location> "This is a UTF-8 coffee cup ☕" « Il s’agit d’un ☕ tasse de café de UTF-8 »"This is a UTF-8 coffee cup ☕"
s8bs8b Chaîne UTF-8 (sans guillemets)UTF-8 string (no quotation marks) <emplacement > « hello world »<location> "hello world" hello worldhello world
susu Chaîne Unicode (encodage UTF-16)Unicode (UTF-16 encoding) string <emplacement > L « hello world »<location> L"hello world" L"hello world"L"hello world"

u"hello world"u"hello world"
subsub Chaîne Unicode (encodage UTF-16) (sans guillemets)Unicode (UTF-16 encoding) string (no quotation marks) <emplacement > L « hello world »<location> L"hello world" hello worldhello world
bstrbstr chaîne BSTRBSTR string <emplacement > L « hello world »<location> L"hello world" L"hello world"L"hello world"
envenv Bloc d’environnement (chaîne se terminant par null double)Environment block (double-null terminated string) <emplacement > L "= :: = ::\\»<location> L"=::=::\\" L "= :: = ::\\\0 = C : = C :\\windows\\system32\0ALLUSERSPROFILE =...L"=::=::\\\0=C:=C:\\windows\\system32\0ALLUSERSPROFILE=...
s32s32 chaîne UTF-32UTF-32 string <emplacement > U « hello world »<location> U"hello world" u"hello world"U"hello world"
s32bs32b chaîne UTF-32 (sans guillemets)UTF-32 string (no quotation marks) <emplacement > U « hello world »<location> U"hello world" hello worldhello world
enen enumenum Saturday(6)Saturday(6) SaturdaySaturday
hvhv Type de pointeur : indique que la valeur de pointeur inspectée est le résultat de l’allocation de tas d’un tableau, par exemple, new int[3].Pointer type - indicates that the pointer value being inspected is the result of the heap allocation of an array, for example, new int[3]. <emplacement > {<premier membre >}<location>{<first member>} <emplacement > {<premier membre >, <deuxième membre >,...}<location>{<first member>, <second member>, ...}
nana Supprime l’adresse mémoire d’un pointeur vers un objet.Suppresses the memory address of a pointer to an object. <emplacement >, {membre = valeur...}<location>, {member=value...} {membre = valeur...}{member=value...}
ndnd Affiche uniquement les informations de classe de base, en ignorant les classes dérivéesDisplays only the base class information, ignoring derived classes (Shape*) square inclut les informations de classe de base et de classe dérivée(Shape*) square includes base class and derived class information Affiche uniquement les informations de classe de baseDisplays only base class information
hrhr HRESULT ou code d’erreur Win32.HRESULT or Win32 error code. (Le débogueur décodant automatiquement HRESULTs, le spécificateur n’est pas nécessaire dans ces cas-là.(The debugger now decodes HRESULTs automatically, so this specifier is not required in those cases. S_OKS_OK S_OKS_OK
wcwc Indicateur de classe de fenêtreWindow class flag 0x00100x0010 WC_DEFAULTCHARWC_DEFAULTCHAR
wmwm Numéros de messages WindowsWindows message numbers 1616 WM_CLOSEWM_CLOSE
!! format brut, ignorant toutes les personnalisations d’affichage de type de donnéesraw format, ignoring any data type views customizations <personnaliser la représentation sous forme de ><customized representation> 44

Note

Quand le spécificateur de format hv est présent, le débogueur tente de déterminer la taille de la mémoire tampon et d’afficher le nombre d’éléments approprié.When the hv format specifier is present, the debugger attempts to determine the length of the buffer and display the appropriate number of elements. Comme il n’est pas toujours possible pour le débogueur de rechercher la taille exacte de la mémoire tampon d’un tableau, vous devez utiliser un spécificateur de taille (pBuffer,[bufferSize]) chaque fois que cela est possible.Because it is not always possible for the debugger to find the exact buffer size of an array, you should use a size specifier (pBuffer,[bufferSize]) whenever possible. Le spécificateur de format hv est destiné aux scénarios dans lesquels la taille de la mémoire tampon n’est pas immédiatement disponibleThe hv format specifier is intended for scenarios where the buffer size is not readily available

Spécificateurs de taille pour les pointeurs en tant que tableauxSize specifiers for pointers as arrays

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 :If you have a pointer to an object you want to view as an array, you can use an integer or an expression to specify the number of array elements:

SpécificateurSpecifier FormatFormat Valeur d’espion d’origineOriginal Watch Value Valeur affichéeValue Displayed
nn Entier décimal ou hexadécimalDecimal or hexadecimal integer pBuffer,[32]pBuffer,[32]

pBuffer,[0x20]pBuffer,[0x20]
Affiche pBuffer sous forme d’un tableau de 32 éléments.Displays pBuffer as a 32 element array.
[exp][exp] Expression C++ valide qui correspond à un entier.A valid C++ expression that evaluates to an integer. pBuffer,[bufferSize]pBuffer,[bufferSize] Affiche pBuffer sous forme d’un tableau d’éléments bufferSize .Displays pBuffer as an array of bufferSize elements.
expand(n)expand(n) Expression C++ valide qui correspond à un entierA valid C++ expression that evaluates to an integer pBuffer, expand(2)pBuffer, expand(2) Affiche le troisième élément de pBuffer.Displays the third element of pBuffer

Spécificateurs de format pour le débogage d’interopérabilité avec C++/CLIFormat specifiers for interop debugging with C++/CLI

Les spécificateurs en gras sont pris en charge uniquement pour le débogage de code natif et C++/CLI.Specifiers in bold are supported only for debugging native and C++/CLI code.

SpécificateurSpecifier FormatFormat Valeur d’espion d’origineOriginal Watch Value Valeur affichéeValue Displayed
d,id,i entier décimal signésigned decimal integer 0xF000F0650xF000F065 -268373915-268373915
uu entier décimal non signéunsigned decimal integer 0x00650x0065 101101
oo entier octal non signéunsigned octal integer 0xF0650xF065 01701450170145
x,Xx,X entier hexadécimalHexadecimal integer 6154161541 0x0000f0650x0000f065
l,hl,h préfixe long ou court pour : d, i, u, o, x, Xlong or short prefix for: d, i, u, o, x, X 0040604200406042 0x0c220x0c22
ff virgule flottante signéesigned floating point (3./2.), f(3./2.), f 1,5000001.500000
ee notation scientifique signéesigned scientific notation (3.0/2.0)(3.0/2.0) 1.500000e+0001.500000e+000
gg virgule flottante signée ou notation scientifique signée,signed floating point or signed scientific notation,
selon ce qui est plus courtwhichever is shorter
(3.0/2.0)(3.0/2.0) 1,51.5
cc caractère uniquesingle character <emplacement ><location> 101 ’e’101 'e'
ss const char*const char* <emplacement ><location> "hello world""hello world"
susu const wchar_t*const wchar_t*

char16_t const*const char16_t*
<emplacement ><location> L"hello world"L"hello world"
subsub const wchar_t*const wchar_t*

char16_t const*const char16_t*
<emplacement ><location> hello worldhello world
s8s8 const char*const char* <emplacement ><location> "hello world""hello world"
hrhr HRESULT ou code d’erreur Win32.HRESULT or Win32 error code.
(Débogueur décode automatiquement HRESULTs,(Debugger decodes HRESULTs automatically,
Dans ce spécificateur ne pas nécessaire dans ces cas-là.so specifier not required in those cases.
S_OKS_OK S_OKS_OK
wcwc Indicateur de classe de fenêtre.Window class flag. 0x00000040,0x00000040, WC_DEFAULTCHARWC_DEFAULTCHAR
wmwm Numéros de messages WindowsWindows message numbers 0x00100x0010 WM_CLOSEWM_CLOSE
!! format brut, ignorant toutes les personnalisations d’affichage de type de donnéesraw format, ignoring any data type views customizations <personnaliser la représentation sous forme de ><customized representation> 44

Emplacements de mémoire des spécificateurs de format dans le débogage d’interopérabilité avec C++/CLIFormat specifiers memory locations in interop debugging with C++/CLI

Le tableau suivant contient les symboles de mise en forme pour les emplacements de mémoire.The following table contains formatting symbols used for memory locations. Vous pouvez utiliser un spécificateur d’emplacement de mémoire avec n’importe quelle valeur ou expression correspondant à un emplacement.You can use a memory location specifier with any value or expression that evaluates to a location.

SymboleSymbol FormatFormat Valeur d’espion d’origineOriginal Watch Value Valeur affichéeValue Displayed
mama 64 caractères ASCII64 ASCII characters 0x0012ffac0x0012ffac 0x0012ffac .4...0...".0W&.......1W&.0.:W..1...."..1.JO&.1.2.."..1...0y....10x0012ffac .4...0...".0W&.......1W&.0.:W..1...."..1.JO&.1.2.."..1...0y....1
mm 16 octets en hexadécimal suivis de 16 caractères ASCII16 bytes in hexadecimal, followed by 16 ASCII characters 0x0012ffac0x0012ffac 0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&.0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&..
mbmb 16 octets en hexadécimal suivis de 16 caractères ASCII16 bytes in hexadecimal, followed by 16 ASCII characters 0x0012ffac0x0012ffac 0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&.0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&..
mwmw 8 mots8 words 0x0012ffac0x0012ffac 0x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 00000x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 0000
mdmd 4 mots doubles4 doublewords 0x0012ffac0x0012ffac 0x0012ffac 00CB34B3 80943084 308A22FF 000026570x0012ffac 00CB34B3 80943084 308A22FF 00002657
mqmq 2 mots quadruples2 quadwords 0x0012ffac0x0012ffac 0x0012ffac 7ffdf00000000000 5f441a790012fdd40x0012ffac 7ffdf00000000000 5f441a790012fdd4
mumu caractères de 2 octets (Unicode)2-byte characters (Unicode) 0x0012ffac0x0012ffac 0x0012ffac 8478 77f4 ffff ffff 0000 0000 0000 00000x0012ffac 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++ / c++ / CLISize specifier for pointers as arrays in interop debugging with C++/CLI

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 :If you have a pointer to an object you want to view as an array, you can use an integer to specify the number of array elements:

SpécificateurSpecifier FormatFormat ExpressionExpression Valeur affichéeValue Displayed
nn entier décimalDecimal integer pBuffer[32]pBuffer[32] Affiche pBuffer sous forme d’un tableau de 32 éléments.Displays pBuffer as a 32 element array.