Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Você pode alterar o formato no qual um valor é exibido nas janelas Inspeção, Automáticos e Locais usando especificadores de formato.
Você também pode usar especificadores de formato na janela Immediate , na janela Comando , em tracepoints e até mesmo em janelas de origem. Se você pausar em uma expressão nessas janelas, o resultado aparecerá em uma Dica de Dados. A exibição DataTip reflete o especificador de formato.
Observação
Quando o depurador nativo do Visual Studio mudou para um novo mecanismo de depuração, alguns novos especificadores de formato foram adicionados e alguns antigos foram removidos. O depurador mais antigo ainda é usado quando se realiza depuração de interop (mista de código nativo e gerido) com C++/CLI.
Definir especificadores de formato
Usaremos o seguinte código de exemplo:
int main() {
int my_var1 = 0x0065;
int my_var2 = 0x0066;
int my_var3 = 0x0067;
}
Adicione a my_var1 variável à janela Watch durante a depuração, Debug>Windows>Watch>Watch Watch 1. Em seguida, clique com o botão direito do mouse na variável e selecione Exibição hexadecimal. Agora, a janela Watch mostra o valor 0x0065. Para ver esse valor expresso como um caractere em vez de um inteiro, primeiro clique com o botão direito do mouse e desmarque Exibição hexadecimal. Em seguida, adicione o especificador de formato de caractere , c na coluna Nome após o nome da variável. A coluna Valor agora mostra 101 'e'.
Você pode visualizar e selecionar de uma lista de especificadores de formato disponíveis, anexando uma vírgula (,) ao valor na janela Watch.
Especificadores de formato
As tabelas a seguir descrevem os especificadores de formato que você pode usar no Visual Studio. Os especificadores em negrito são suportados apenas para o novo depurador, e não para depuração de interoperabilidade com C++/CLI.
| Especificador | Formato | Valor original do relógio | Valor Apresentado |
|---|---|---|---|
| d | inteiro decimal | 0x00000066 | 102 |
| o | inteiro octal não assinado | 0x00000066 | 000000000146 |
| x h |
inteiro hexadecimal | 102 | 0xcccccccc |
| X H |
inteiro hexadecimal | 102 | 0xCCCCCCCC |
| xb HB |
inteiro hexadecimal (sem o prefixo 0x) | 102 | cccccccc |
| Xb Hb |
inteiro hexadecimal (sem o prefixo 0x) | 102 | CCCCCCCC |
| b | inteiro binário não assinado | 25 | 0b00000000000000000000000000011001 |
| Bb | inteiro binário não assinado (sem entrelinha 0b) | 25 | 00000000000000000000000000011001 |
| e | notação científica | 25000000 | 2,500000E+07 |
| g | menor de ponto científico ou flutuante | 25000000 | 2,5E+07 |
| c | Caractere único | 0x0065 | 101 «e» |
| s | const char* string (com aspas) | <Localização> "Hello World" | "Olá Mundo" |
| SB | const char* string (sem aspas) | <Localização> "Hello World" | Olá, mundo |
| s8 | String UTF-8 | <localização> "Esta é uma xícara de café UTF-8 â ̃•" | "Esta é uma xícara ☕ de café UTF-8" |
| s8b | UTF-8 string (sem aspas) | <Localização> "Hello World" | Olá, mundo |
| SU | String Unicode (codificação UTF-16) (com aspas) | <localização> L"hello world" | L"Olá mundo" u"Olá Mundo" |
| submarino | Unicode (codificação UTF-16) string (sem aspas) | <localização> L"olá mundo" | Olá, mundo |
| Bstr | String binária BSTR (com aspas) | <localização> L"hello world" | L"Olá mundo" |
| env | Bloco de ambiente (cadeia de caracteres terminada duplamente nula) | <localização> L"=::=::\\" | L"=::=::\\\0=C:=C:\\windows\\system32\0ALLUSERSPROFILE=... |
| s32 | UTF-32 string (com aspas) | <localização> U"hello world" | U"olá mundo" |
| S32B | UTF-32 string (sem aspas) | <localização> U"hello world" | Olá, mundo |
| pt | enumeração | Sábado(6) | Sábado |
| HV | Tipo de ponteiro - indica que o valor do ponteiro que está a ser inspecionado é o resultado da alocação no heap de um array, por exemplo, new int[3]. |
<localização>{<primeiro membro>} | <location>{<primeiro membro>, <segundo membro>, ...} |
| na | Suprime o endereço de memória de um ponteiro para um objeto. | <localização>, {member=value...} | {membro=valor...} |
| ª | Exibe apenas as informações da classe base, ignorando as classes derivadas |
(Shape*) square Inclui informações sobre a classe base e a classe derivada |
Exibe apenas informações de classe base |
| hr | Código de erro HRESULT ou Win32. Este especificador não é mais necessário para HRESULTs, pois o depurador os decodifica automaticamente. | S_OK | S_OK |
| wc | Sinalizador de classe de janela | 0x0010 | WC_DEFAULTCHAR |
| WM | Números de mensagem do Windows | 16 | WM_CLOSE |
| Nr | Suprimir o item "Raw View" | ||
| NVO | Mostrar o item "Raw View" apenas para valores numéricos | ||
| ! | formato bruto, ignorando qualquer tipo de dados exibe personalizações | <representação personalizada> | 4 |
| alça | Exibe informações sobre o identificador win32 | 0x000000000000009c | Exibe informações úteis sobre o manipulador, como ID de thread, etc. |
Observação
Quando o especificador de formato hv está presente, o depurador tenta determinar o comprimento do buffer e exibir esse número de elementos. Como nem sempre é possível para o depurador encontrar o tamanho exato do buffer de uma matriz, você deve usar um especificador (pBuffer,[bufferSize]) de tamanho sempre que possível. O especificador de formato hv é útil quando o tamanho do buffer não está prontamente disponível.
Especificadores de tamanho para ponteiros como matrizes
Se você tiver um ponteiro para um objeto que deseja exibir como uma matriz, poderá usar um inteiro ou uma expressão para especificar o número de elementos da matriz.
| Especificador | Formato | Valor original do relógio | Valor Apresentado |
|---|---|---|---|
| n | Inteiro decimal ou hexadecimal | pBuffer,[32] pBuffer,[0x20] |
Exibe pBuffer como uma matriz de 32 elementos. |
| [EXP] | Uma expressão C++ válida que é avaliada como um inteiro. | pBuffer,[bufferSize] | Exibe pBuffer como uma matriz de bufferSize elementos. |
| expandir(n) | Uma expressão C++ válida que é avaliada como um inteiro | pBuffer, expand(2) | Exibe o terceiro elemento de pBuffer |
Especificadores de formato para depuração de interoperabilidade com C++/CLI
| Especificador | Formato | Valor original do relógio | Valor Apresentado |
|---|---|---|---|
| o | inteiro octal não assinado | 0xF065 | 0170145 |
| x X |
Inteiro hexadecimal | 61541 | 0x0000f065 |
| c | Caractere único | <Localização> | 101 «e» |
| s | const char* (com aspas) | <Localização> | "Olá Mundo" |
| SU | const wchar_t* const char16_t* (entre aspas) |
<Localização> | L"Olá mundo" |
| submarino | const wchar_t* const char16_t* |
<Localização> | Olá, mundo |
| s8 | const char* (com aspas) | <Localização> | "Olá Mundo" |
| hr | Código de erro HRESULT ou Win32. Este especificador não é mais necessário para HRESULTs, pois o depurador os decodifica automaticamente. |
S_OK | S_OK |
| wc | Sinalizador de classe de janela | 0x00000040, | WC_DEFAULTCHAR |
| WM | Números de mensagem do Windows | 0x0010 | WM_CLOSE |
| ! | formato bruto, ignorando quaisquer personalizações de exibição de tipo de dados | <representação personalizada> | 4 |
Os especificadores d, e, f, g, h, i, l, m, ma, mb, md, mq, mu, mw e u para código nativo e C++/CLI exigiam o depurador herdado, que não é suportado no Visual Studio 2022 ou versões posteriores.
Os especificadores em negrito são suportados apenas para depuração de código nativo e C++/CLI. Esses especificadores exigem o depurador herdado, especificado usando o Modo de Compatibilidade Gerenciado.
| Especificador | Formato | Valor original do relógio | Valor Apresentado |
|---|---|---|---|
|
d eu |
inteiro decimal assinado | 0xF000F065 | -268373915 |
| u | inteiro decimal não assinado | 0x0065 | 101 |
| o | inteiro octal não assinado | 0xF065 | 0170145 |
| x X |
Inteiro hexadecimal | 61541 | 0x0000f065 |
|
l h |
prefixo longo ou curto para: d, i, u, o, x, X | 00406042 | 0x0c22 |
| f | Ponto flutuante assinado | (3./2.), f | 1.500000 |
| e | notação científica assinada | (3.0/2.0) | 1,500000E+000 |
| g | ponto flutuante assinado ou notação científica assinada, consoante o que for mais curto |
(3.0/2.0) | 1.5 |
| c | Caractere único | <Localização> | 101 «e» |
| s | const char* (com aspas) | <Localização> | "Olá Mundo" |
| SU | const wchar_t* const char16_t* (entre aspas) |
<Localização> | L"Olá mundo" |
| submarino | const wchar_t* const char16_t* |
<Localização> | Olá, mundo |
| s8 | const char* (com aspas de citação) | <Localização> | "Olá Mundo" |
| hr | Código de erro HRESULT ou Win32. Este especificador não é mais necessário para HRESULTs, pois o depurador os decodifica automaticamente. |
S_OK | S_OK |
| wc | Sinalizador de classe de janela | 0x00000040, | WC_DEFAULTCHAR |
| WM | Números de mensagem do Windows | 0x0010 | WM_CLOSE |
| ! | formato bruto, ignorando quaisquer personalizações de exibição de tipo de dados | <representação personalizada> | 4 |
Especificadores de formato para locais de memória na depuração de interoperabilidade com C++/CLI
A tabela a seguir descreve os símbolos de formatação usados para locais de memória. Você pode usar um especificador de local de memória com qualquer valor ou expressão que resulte em um local.
Os especificadores em negrito são suportados apenas para depuração de código nativo e C++/CLI. Isso requer o depurador herdado, especificado usando o Modo de Compatibilidade Gerenciado.
| Symbol | Formato | Valor original do relógio | Valor Apresentado |
|---|---|---|---|
| ma | 64 caracteres ASCII | 0x0012ffac | 0x0012ffac .4...0...". 0W&....... 1W&.0.:W.. 1....".. 1.JO&.1.2..".. 1...0y.... 1 |
| m | 16 bytes em hexadecimal, seguidos por 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 em hexadecimal, seguidos por 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 palavras | 0x0012ffac | 0x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 0000 |
| md | 4 palavras duplas | 0x0012ffac | 0x0012ffac 00CB34B3 80943084 308A22FF 00002657 |
| mq | 2 palavras quádruplas | 0x0012ffac | 0x0012ffac 7ffdf00000000000 5f441a790012fdd4 |
| μ | Caracteres de 2 bytes (Unicode) | 0x0012ffac | 0x0012ffac 8478 77f4 ffff ffff 0000 0000 0000 0000 |
Especificador de tamanho para ponteiros como matrizes na depuração de interoperabilidade com C++/CLI
Se você tiver um ponteiro para um objeto que deseja exibir como uma matriz, poderá usar um inteiro para especificar o número de elementos da matriz.
| Especificador | Formato | Expression | Valor Apresentado |
|---|---|---|---|
| n | Inteiro decimal | pBuffer[32] | Exibe pBuffer como uma matriz de 32 elementos. |