Especificadores de formato en C++ en el depurador de Visual StudioFormat specifiers in C++ in the Visual Studio debugger

Puede cambiar el formato en el que se muestra un valor en la ventana Inspección mediante especificadores de formato.You can change the format in which a value is displayed in the Watch window using format specifiers.

También puede usar especificadores de formato en el inmediato ventana, el comando ventana, en puntos de seguimientoe incluso en las ventanas de código fuente.You can also use format specifiers in the Immediate window, the Command window, in tracepoints, and even in source windows. Si hace una pausa en una expresión de esas ventanas, el resultado aparece en una información sobre datos.If you pause on an expression in those windows, the result appears in a DataTip. La visualización de información sobre datos refleja el especificador de formato.The DataTip display reflects the format specifier.

Note

Cuando el depurador nativo de Visual Studio cambia a un nuevo motor de depuración, se agregaron algunos nuevos especificadores de formato y se han quitado otros más antiguos.When the Visual Studio native debugger changed to a new debugging engine, some new format specifiers were added and some old ones were removed. El depurador antiguo todavía se usa cuando se realiza depuración de interoperabilidad (administrada y nativa mixta) con C++/CLI.The older debugger is still used when you do interop (mixed native and managed) debugging with C++/CLI. Las secciones siguientes de este tema muestran los especificadores de formato de cada motor de depuración.The following sections in this topic show the format specifiers for each debug engine.

Uso de especificadores de formatoUsing Format Specifiers

Si tiene el siguiente código:If you have the following code:

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

Agregar el my_var1 variable a la inspección ventana (durante la depuración, Depurar > Windows > inspección > Inspección 1) y, a continuación, establezca la visualización en formato hexadecimal (en el verventana, haga clic en la variable y seleccione presentación Hexadecimal).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). Ahora la ventana Inspección muestra que contiene el valor 0x0065.Now the Watch window shows that it contains the value 0x0065. Para ver este valor expresado como carácter, en vez de como entero, en la columna Nombre, agregue el especificador de formato de carácter , cdespués del nombre de la variable: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 columna Valor muestra ahora 101 'e'.The Value column now appears with 101 'e'.

WatchFormatCPlus1WatchFormatCPlus1

Especificadores de formatoFormat Specifiers

Las siguientes tablas muestran los especificadores de formato que se pueden usar en Visual Studio.The following tables show the format specifiers that you can use in Visual Studio. Los especificadores en negrita no se admiten para la depuración de interoperabilidad con C++/CLI.Specifiers in bold are not supported for interop debugging with C++/CLI.

EspecificadorSpecifier FormatoFormat Valor de inspección originalOriginal Watch Value Valor mostradoValue Displayed
dd Entero decimaldecimal integer 0x000000660x00000066 102102
oo Entero octal sin signounsigned octal integer 0x000000660x00000066 000000000146000000000146
xx

hh
entero hexadecimalhexadecimal integer 102102 0xcccccccc0xcccccccc
XX

HH
entero hexadecimalhexadecimal integer 102102 0xcccccccc0xCCCCCCCC
cc carácter únicosingle character 0x0065, c0x0065, c 101 'e'101 'e'
ss cadena const char*const char* string <ubicación > "Hola mundo"<location> "hello world" "hola a todos""hello world"
sbsb const char * string (sin comillas)const char* string (no quotation marks) <ubicación > "Hola mundo"<location> "hello world" hola a todoshello world
s8s8 Cadena UTF-8UTF-8 string <ubicación > "Esto es un ☕ taza de café de UTF-8"<location> "This is a UTF-8 coffee cup ☕" "Esto es un ☕ taza de café de UTF-8""This is a UTF-8 coffee cup ☕"
s8bs8b Cadena UTF-8 (sin comillas)UTF-8 string (no quotation marks) <ubicación > "Hola mundo"<location> "hello world" hola a todoshello world
susu Cadena Unicode (codificación UTF-16)Unicode (UTF-16 encoding) string <ubicación > L "Hola mundo"<location> L"hello world" L"hola a todos"L"hello world"

u"hola a todos"u"hello world"
subsub Cadena Unicode (codificación UTF-16) (sin comillas)Unicode (UTF-16 encoding) string (no quotation marks) <ubicación > L "Hola mundo"<location> L"hello world" hola a todoshello world
bstrbstr Cadena BSTRBSTR string <ubicación > L "Hola mundo"<location> L"hello world" L"hola a todos"L"hello world"
envenv Bloque de entorno (cadena terminada en doble null)Environment block (double-null terminated string) <ubicación > L "=:: =::\\"<location> L"=::=::\\" L"=::=::\\\0=C:=C:\\windows\\system32\0ALLUSERSPROFILE=...L"=::=::\\\0=C:=C:\\windows\\system32\0ALLUSERSPROFILE=...
s32s32 cadena UTF-32UTF-32 string <ubicación > U "Hola a todos"<location> U"hello world" u"hola a todos"U"hello world"
s32bs32b cadena UTF-32 (sin comillas)UTF-32 string (no quotation marks) <ubicación > U "Hola a todos"<location> U"hello world" hola a todoshello world
enen enumenum Sábado(6)Saturday(6) SábadoSaturday
hvhv Tipo de puntero: indica que el valor de puntero que se va a inspeccionar es el resultado de la asignación del montón de una matriz, por ejemplo, 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]. <ubicación > {<primer miembro >}<location>{<first member>} <ubicación > {<primer miembro >, <segundo miembro >,...}<location>{<first member>, <second member>, ...}
nana Suprime la dirección de memoria de un puntero a un objeto.Suppresses the memory address of a pointer to an object. <ubicación >, {miembro = value...}<location>, {member=value...} {miembro = value...}{member=value...}
ndnd Muestra solo la información de la clase, omitiendo las clases derivadasDisplays only the base class information, ignoring derived classes (Shape*) square incluye la información de clase base y derivada(Shape*) square includes base class and derived class information Muestra únicamente la información de clase baseDisplays only base class information
hrhr HRESULT o código de error Win32.HRESULT or Win32 error code. (Ahora, el depurador descodifica los valores HRESULT automáticamente, de modo que este especificador no es necesario en esos casos).(The debugger now decodes HRESULTs automatically, so this specifier is not required in those cases. S_OKS_OK S_OKS_OK
wcwc Marcador de clase de ventanaWindow class flag 0x00100x0010 WC_DEFAULTCHARWC_DEFAULTCHAR
wmwm Números de mensajes de WindowsWindows message numbers 1616 WM_CLOSEWM_CLOSE
!! Sin formato, omite cualquier personalización de vistas de tipos de datosraw format, ignoring any data type views customizations <personalizar la representación ><customized representation> 44

Note

Cuando el especificador de formato hv está presente, el depurador intenta determinar la longitud del búfer y muestra el número apropiado de elementos.When the hv format specifier is present, the debugger attempts to determine the length of the buffer and display the appropriate number of elements. Dado que el depurador no siempre puede averiguar el tamaño del búfer exacto de una matriz, debe usar un especificador de tamaño de (pBuffer,[bufferSize]) siempre que sea posible.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. El especificador de formato hv está diseñado para escenarios en los que el tamaño de búfer no está disponibleThe hv format specifier is intended for scenarios where the buffer size is not readily available

Especificadores de tamaño para punteros como matricesSize specifiers for pointers as arrays

Si tiene un puntero a un objeto que desea ver como una matriz, puede utilizar un entero o una expresión para especificar el número de elementos de matriz: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:

EspecificadorSpecifier FormatoFormat Valor de inspección originalOriginal Watch Value Valor mostradoValue Displayed
nn Entero decimal o hexadecimalDecimal or hexadecimal integer pBuffer,[32]pBuffer,[32]

pBuffer,[0x20]pBuffer,[0x20]
Muestra pBuffer como una matriz de 32 elementos.Displays pBuffer as a 32 element array.
[exp][exp] Expresión de C++ válida que se evalúa como un entero.A valid C++ expression that evaluates to an integer. pBuffer,[bufferSize]pBuffer,[bufferSize] Muestra pBuffer como una matriz de bufferSize elementos.Displays pBuffer as an array of bufferSize elements.
expand(n)expand(n) Expresión de C++ válida que se evalúa como un enteroA valid C++ expression that evaluates to an integer pBuffer, expand(2)pBuffer, expand(2) Muestra el tercer elemento de pBufferDisplays the third element of pBuffer

Especificadores de formato para la depuración de interoperabilidad con C++/CLIFormat specifiers for interop debugging with C++/CLI

Los especificadores en negrita solo son compatibles con la depuración nativa y con el código C++/CLI.Specifiers in bold are supported only for debugging native and C++/CLI code.

EspecificadorSpecifier FormatoFormat Valor de inspección originalOriginal Watch Value Valor mostradoValue Displayed
d,id,i Entero decimal con signosigned decimal integer 0xF000F0650xF000F065 -268373915-268373915
uu Entero decimal sin signounsigned decimal integer 0x00650x0065 101101
oo Entero octal sin signounsigned octal integer 0xF0650xF065 01701450170145
x,Xx,X entero hexadecimalHexadecimal integer 6154161541 0x0000f0650x0000f065
l,hl,h Prefijo long o short para: d, i, u, o, x, Xlong or short prefix for: d, i, u, o, x, X 0040604200406042 0x0c220x0c22
ff Punto flotante con signosigned floating point (3./2.), f(3./2.), f 1.5000001.500000
ee Notación científica con signosigned scientific notation (3.0/2.0)(3.0/2.0) 1.500000e+0001.500000e+000
gg punto flotante con signo o notación científica con signosigned floating point or signed scientific notation,
lo que sea más cortowhichever is shorter
(3.0/2.0)(3.0/2.0) 1.51.5
cc carácter únicosingle character <ubicación ><location> 101 'e'101 'e'
ss const char*const char* <ubicación ><location> "hola a todos""hello world"
susu const wchar_t*const wchar_t*

const char16_t*const char16_t*
<ubicación ><location> L"hola a todos"L"hello world"
subsub const wchar_t*const wchar_t*

const char16_t*const char16_t*
<ubicación ><location> hola a todoshello world
s8s8 const char*const char* <ubicación ><location> "hola a todos""hello world"
hrhr HRESULT o código de error Win32.HRESULT or Win32 error code.
(Depurador descodifica los valores HRESULT automáticamente,(Debugger decodes HRESULTs automatically,
especificador de por lo que no es necesario en esos casos.so specifier not required in those cases.
S_OKS_OK S_OKS_OK
wcwc Marcador de clase de ventana.Window class flag. 0x00000040,0x00000040, WC_DEFAULTCHARWC_DEFAULTCHAR
wmwm Números de mensajes de WindowsWindows message numbers 0x00100x0010 WM_CLOSEWM_CLOSE
!! Sin formato, omite cualquier personalización de vistas de tipos de datosraw format, ignoring any data type views customizations <personalizar la representación ><customized representation> 44

Ubicaciones de memoria de los especificadores de formato en la depuración de interoperabilidad con C++/CLIFormat specifiers memory locations in interop debugging with C++/CLI

La siguiente tabla contiene símbolos de formato que se utilizan para ubicaciones de memoria.The following table contains formatting symbols used for memory locations. Puede utilizar un especificador de ubicación de memoria con cualquier valor o expresión que se evalúe como una ubicación.You can use a memory location specifier with any value or expression that evaluates to a location.

SímboloSymbol FormatoFormat Valor de inspección originalOriginal Watch Value Valor mostradoValue Displayed
mama 64 caracteres 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 bytes en hexadecimal, seguidos de 16 caracteres 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 bytes en hexadecimal, seguidos de 16 caracteres 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 palabras8 words 0x0012ffac0x0012ffac 0x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 00000x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 0000
mdmd 4 palabras dobles4 doublewords 0x0012ffac0x0012ffac 0x0012ffac 00CB34B3 80943084 308A22FF 000026570x0012ffac 00CB34B3 80943084 308A22FF 00002657
mqmq 2 palabras cuádruples2 quadwords 0x0012ffac0x0012ffac 0x0012ffac 7ffdf00000000000 5f441a790012fdd40x0012ffac 7ffdf00000000000 5f441a790012fdd4
mumu Caracteres de 2 bytes (Unicode)2-byte characters (Unicode) 0x0012ffac0x0012ffac 0x0012ffac 8478 77f4 ffff ffff 0000 0000 0000 00000x0012ffac 8478 77f4 ffff ffff 0000 0000 0000 0000

Especificador de tamaño para punteros como matrices en la depuración de interoperabilidad con C++ / c++ / CLISize specifier for pointers as arrays in interop debugging with C++/CLI

Si tiene un puntero a un objeto que desea ver como una matriz, puede utilizar un entero para especificar el número de elementos de matriz: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:

EspecificadorSpecifier FormatoFormat ExpresiónExpression Valor mostradoValue Displayed
nn Entero decimalDecimal integer pBuffer[32]pBuffer[32] Muestra pBuffer como una matriz de 32 elementos.Displays pBuffer as a 32 element array.