Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Puede cambiar el formato en el que se muestra un valor en las ventanas Inspección, Automático y Variables locales mediante especificadores de formato.
También puede usar especificadores de formato en la ventana Inmediato, la ventana Comandos, en puntos de traza e incluso en ventanas del código fuente. Si pausas una expresión en esas ventanas, el resultado aparece en un DataTip. El visualizador DataTip refleja el especificador de formato.
Nota:
Cuando el depurador nativo de Visual Studio cambió a un nuevo motor de depuración, se agregaron algunos especificadores de formato nuevos y se quitaron algunos antiguos. El depurador anterior todavía se usa cuando se realiza la depuración de interoperabilidad (combinada nativa y administrada) con C++/CLI.
Establecer especificadores de formato
Usaremos el código de ejemplo siguiente:
int main() {
int my_var1 = 0x0065;
int my_var2 = 0x0066;
int my_var3 = 0x0067;
}
Agregue la my_var1 variable a la ventana Inspección durante la depuración, Depurar> inspección deWindows>Watch>1. A continuación, haga clic con el botón derecho en la variable y seleccione Mostrar hexadecimal. Ahora, la ventana Inspección muestra el valor 0x0065. Para ver este valor expresado como un carácter en lugar de un entero, primero haga clic con el botón derecho y anule la selección de pantalla hexadecimal. A continuación, agregue el especificador de formato de caracteres , c en la columna Nombre después del nombre de la variable. La columna Valor muestra ahora 101 'e'.
Puede ver y seleccionar de una lista de especificadores de formato disponibles añadiendo una coma (,) al valor en la ventana Inspección.
Especificadores de formato
En las tablas siguientes se describen los especificadores de formato que puede usar en Visual Studio. Los especificadores en negrita solo se admiten para el nuevo depurador y no para la depuración de interoperabilidad con C++/CLI.
| Especificador | Formato | Valor de vigilancia original | Valor mostrado |
|---|---|---|---|
| d | número entero | 0x00000066 | 102 |
| o | entero octal sin signo | 0x00000066 | 000000000146 |
| x h |
entero hexadecimal | 102 | 0xcccccccc |
| X H |
entero hexadecimal | 102 | 0xCCCCCCCC |
| Xb Hb |
entero hexadecimal (sin 0x inicial) | 102 | cccccccc |
| Xb Hb |
entero hexadecimal (sin 0x inicial) | 102 | CCCCCCCC |
| b | entero binario sin signo | 25 | 0b00000000000000000000000000011001 |
| Bb | entero binario sin signo(sin 0b inicial) | 25 | 00000000000000000000000000011001 |
| e | notación científica | 25000000 | 2.500000e+07 |
| g | más corto de punto flotante o científico | 25000000 | 2.5e+07 |
| c | carácter único | 0x0065 | 101 'e' |
| s | cadena const char* (con comillas) | <ubicación> "hola mundo" | "Hola mundo" |
| Sb | cadena const char* (sin comillas) | <ubicación> "hola mundo" | Hola mundo |
| s8 | Cadena UTF-8 | <ubicación> "Esta es una taza de café UTF-8 ☕" | "Esta es una taza ☕ de café UTF-8 " |
| s8b | Cadena UTF-8 (sin comillas) | <ubicación> "hola mundo" | Hola mundo |
| su | Cadena Unicode (codificación UTF-16) (con comillas) | <location> L"hola mundo" | L"hola mundo" u"hola mundo" |
| submarino | Cadena Unicode (codificación UTF-16) (sin comillas) | <location> L"hola mundo" | Hola mundo |
| bstr | Cadena binaria BSTR (con comillas) | <location> L"hola mundo" | L"hola mundo" |
| Entorno | Bloque de entorno (cadena con doble terminación NULL) | <ubicación> L"=::=::\\" | L"=::=::\\\0=C:=C:\\windows\\system32\0ALLUSERSPROFILE=... |
| s32 | Cadena UTF-32 (con comillas) | <ubicación> U"hello world" | U"hola mundo" |
| s32b | Cadena UTF-32 (sin comillas) | <location> U"hello world" | Hola mundo |
| en | enum | Sábado(6) | Sábado |
| Hv | Tipo de puntero: indica que el valor de puntero que se está inspeccionando es el resultado de la asignación del montón de una matriz, por ejemplo, new int[3]. |
<ubicación>{<primer miembro>} | <ubicación>{<primer miembro>, <segundo miembro>, ...} |
| na | Suprime la dirección de memoria de un puntero a un objeto . | <location>, {member=value...} | {member=value...} |
| Nd | Muestra solo la información de la clase base, ignorando las clases derivadas. |
(Shape*) square incluye información de clase base y clase derivada |
Muestra solo información de clase base |
| h | Código de error HRESULT o Win32. Este especificador ya no es necesario para HRESULT, ya que el depurador los descodifica automáticamente. | S_OK | S_OK |
| WC | Bandera de clase de ventana | 0x0010 | WC_DEFAULTCHAR |
| wm | Números de mensaje de Windows | 16 | WM_CLOSE |
| Nr | Suprimir el elemento "Vista en bruto" | ||
| nvo | Mostrar el elemento "Vista sin procesar" solo para valores numéricos | ||
| ! | formato bruto, omitiendo las personalizaciones de las vistas de tipo de datos | <representación personalizada> | 4 |
| asa | Muestra información sobre el identificador win32 | 0x000000000000009c | Muestra información útil sobre el handle, como el identificador de subproceso, etc. |
Nota:
Cuando el especificador de formato hv está presente, el depurador intenta determinar la longitud del búfer y mostrar ese número de elementos. Dado que no siempre es posible que el depurador encuentre el tamaño exacto del búfer de una matriz, debe usar un especificador (pBuffer,[bufferSize]) de tamaño siempre que sea posible. El especificador de formato hv es útil cuando el tamaño del búfer no está disponible fácilmente.
Especificadores de tamaño para punteros como matrices
Si tiene un puntero a un objeto que desea ver como una matriz, puede usar un entero o una expresión para especificar el número de elementos de matriz.
| Especificador | Formato | Valor de vigilancia original | Valor mostrado |
|---|---|---|---|
| n | Entero decimal o hexadecimal | pBuffer,[32] pBuffer,[0x20] |
Se muestra pBuffer como una matriz de 32 elementos. |
| [exp] | Expresión válida de C++ que se evalúa como un entero. | pBuffer,[bufferSize] | Muestra pBuffer como una matriz de bufferSize elementos. |
| expand(n) | Expresión de C++ válida que se evalúa como un entero | pBuffer, expand(2) | Muestra el tercer elemento de pBuffer |
Especificadores de formato para la depuración de interoperabilidad con C++/CLI
| Especificador | Formato | Valor de vigilancia original | Valor mostrado |
|---|---|---|---|
| o | entero octal sin signo | 0xF065 | 0170145 |
| x X |
Entero hexadecimal | 61541 | 0x0000f065 |
| c | carácter único | <ubicación> | 101 'e' |
| s | const char* (con comillas) | <ubicación> | "Hola mundo" |
| su | const wchar_t* const char16_t* (con comillas) |
<ubicación> | L"hola mundo" |
| submarino | const wchar_t* const char16_t* |
<ubicación> | Hola mundo |
| s8 | const char* (con comillas) | <ubicación> | "Hola mundo" |
| h | Código de error HRESULT o Win32. Este especificador ya no es necesario para HRESULT, ya que el depurador los descodifica automáticamente. |
S_OK | S_OK |
| WC | Bandera de clase de ventana | 0x00000040, | WC_DEFAULTCHAR |
| wm | Números de mensaje de Windows | 0x0010 | WM_CLOSE |
| ! | formato bruto, omitiendo las personalizaciones de la vista de tipos de datos | <representación personalizada> | 4 |
Los especificadores d, e, f, g, h, i, l, m, ma, mb, md, mq, mu, mw y u para código nativo y C++/CLI requirieron el depurador heredado, el cual no es compatible con Visual Studio 2022 o versiones posteriores.
Los especificadores en negrita solo se admiten para depurar código nativo y C++/CLI. Estos especificadores requieren el depurador heredado, especificado mediante el modo de compatibilidad administrada.
| Especificador | Formato | Valor de vigilancia original | Valor mostrado |
|---|---|---|---|
|
d i |
entero decimal con signo | 0xF000F065 | -268373915 |
| u | entero decimal sin signo | 0x0065 | 101 |
| o | entero octal sin signo | 0xF065 | 0170145 |
| x X |
Entero hexadecimal | 61541 | 0x0000f065 |
|
l h |
prefijo largo o corto para: d, i, u, o, x, X | 00406042 | 0x0c22 |
| f | punto flotante firmado | (3./2.), f | 1.500000 |
| e | notación científica firmada | (3.0/2.0) | 1.5000000e+000 |
| g | signo de punto flotante o notación científica firmada, lo que sea más corto |
(3.0/2.0) | 1.5 |
| c | carácter único | <ubicación> | 101 'e' |
| s | const char* (con comillas) | <ubicación> | "Hola mundo" |
| su | const wchar_t* const char16_t* (con comillas) |
<ubicación> | L"hola mundo" |
| submarino | const wchar_t* const char16_t* |
<ubicación> | Hola mundo |
| s8 | const char* (con comillas) | <ubicación> | "Hola mundo" |
| h | Código de error HRESULT o Win32. Este especificador ya no es necesario para HRESULT, ya que el depurador los descodifica automáticamente. |
S_OK | S_OK |
| WC | Bandera de clase de ventana | 0x00000040, | WC_DEFAULTCHAR |
| wm | Números de mensaje de Windows | 0x0010 | WM_CLOSE |
| ! | formato bruto, omitiendo las personalizaciones de la vista de tipos de datos | <representación personalizada> | 4 |
Especificadores de formato para ubicaciones de memoria en la depuración de interoperabilidad con C++/CLI
En la tabla siguiente se describen los símbolos de formato usados para las ubicaciones de memoria. Puede usar un especificador de ubicación de memoria con cualquier valor o expresión que se evalúe como una ubicación.
Los especificadores en negrita solo se admiten para depurar código nativo y C++/CLI. Esto requiere el depurador heredado, especificado mediante el modo de compatibilidad administrada.
| Símbolo | Formato | Valor de vigilancia original | Valor mostrado |
|---|---|---|---|
| mamá | 64 caracteres ASCII | 0x0012ffac | 0x0012ffac .4...0...".0W&.......1W&.0.:W..1...."..1.JO&.1.2.."..1...0y....1 |
| m | 16 bytes en hexadecimal, seguido de 16 caracteres ASCII | 0x0012ffac | 0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&.. |
| MB | 16 bytes en hexadecimal, seguido de 16 caracteres ASCII | 0x0012ffac | 0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&.. |
| mw | 8 palabras | 0x0012ffac | 0x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 0000 |
| md | 4 palabras dobles | 0x0012ffac | 0x0012ffac 00CB34B3 80943084 308A22FF 00002657 |
| mq | 2 cuadrapalabras | 0x0012ffac | 0x0012ffac 7ffdf0000000000000 5f441a790012fdd4 |
| mu | Caracteres de 2 bytes (Unicode) | 0x0012ffac | 0x0012ffac 8478 77f4 ffff ffff 0000 0000 0000 0000 0000 |
Especificador de tamaño para punteros como matrices en la depuración de interoperabilidad con C++/CLI
Si tiene un puntero a un objeto que desea ver como una matriz, puede usar un entero para especificar el número de elementos de matriz.
| Especificador | Formato | Expression | Valor mostrado |
|---|---|---|---|
| n | Entero decimal | pBuffer[32] | Se muestra pBuffer como una matriz de 32 elementos. |