Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
È possibile modificare il formato in cui viene visualizzato un valore nelle finestre Espressioni di controllo, Auto e Variabili locali usando identificatori di formato.
È anche possibile usare gli identificatori di formato nella finestra Immediata , nella finestra Comando , nei punti di traccia e anche nelle finestre di origine. Se si sospende su un'espressione in tali finestre, il risultato viene visualizzato in un DataTip. La visualizzazione del DataTip riflette il specificatore di formato.
Annotazioni
Quando il debugger nativo di Visual Studio è stato modificato in un nuovo motore di debug, sono stati aggiunti alcuni nuovi identificatori di formato e alcuni vecchi sono stati rimossi. Il debugger precedente viene ancora usato quando si esegue il debug dell'interoperabilità (nativa mista e gestita) con C++/CLI.
Impostare gli identificatori di formato
Verrà usato il codice di esempio seguente:
int main() {
int my_var1 = 0x0065;
int my_var2 = 0x0066;
int my_var3 = 0x0067;
}
Aggiungere la variabile my_var1 alla finestra Osservazione durante il debug, Debug>Windows>Osservazione>1. Fare quindi clic con il pulsante destro del mouse sulla variabile e selezionare Visualizzazione esadecimale. La finestra Espressione di controllo mostra ora il valore 0x0065. Per visualizzare questo valore espresso come carattere anziché come intero, fare clic con il pulsante destro del mouse e deselezionare Visualizzazione esadecimale. Aggiungere quindi l'identificatore di formato carattere , c nella colonna Nome dopo il nome della variabile. La colonna Valore mostra ora 101 'e'.
È possibile visualizzare e selezionare da un elenco di identificatori di formato disponibili aggiungendo una virgola (,) al valore nella finestra Watch.
Identificatori di formato
Le tabelle seguenti descrivono gli identificatori di formato che è possibile usare in Visual Studio. Gli identificatori in grassetto sono supportati solo per il nuovo debugger e non per il debug di interoperabilità con C++/CLI.
| Identificatore | Formato | Valore di osservazione originale | Valore visualizzato |
|---|---|---|---|
| d | numero intero in notazione decimale | 0x00000066 | 102 |
| o | intero ottale senza segno | 0x00000066 | 000000000146 |
| x h |
Intero esadecimale | 102 | 0xcccccccc |
| X H |
Intero esadecimale | 102 | 0xCCCCCCCC |
| Xb Hb |
intero esadecimale (senza 0x iniziale) | 102 | cccccccc |
| Xb Hb |
intero esadecimale (senza 0x iniziale) | 102 | CCCCCCCC |
| b | intero binario senza segno | 25 | 0b00000000000000000000000000011001 |
| Bb | intero binario senza segno (senza 0b iniziale) | 25 | 00000000000000000000000000011001 |
| e | notazione scientifica | 25000000 | 2.500000e+07 |
| g | più breve di scientifico o a virgola mobile | 25000000 | 2.5e+07 |
| c | carattere singolo | 0x0065 | 101 'e' |
| s | const char* string (con virgolette) | <location> "hello world" | ciao mondo |
| Sb | const char* string (senza virgolette) | <location> "ciao mondo" | Salve, mondo |
| s8 | Stringa UTF-8 | <location> "Questa è una tazza di caffè UTF-8 ☕" | "Questa è una tazza ☕ di caffè UTF-8 " |
| s8b | Stringa UTF-8 (senza virgolette) | <location> "hello world" | Salve, mondo |
| su | Stringa Unicode (codifica UTF-16) (tra virgolette) | <location> L"hello world" | L"ciao mondo" ciao mondo |
| sostituto | Stringa Unicode (codifica UTF-16) (senza virgolette) | <location> L"ciao mondo" | Salve, mondo |
| bstr | Stringa binaria BSTR (tra virgolette) | <location> L"hello world" | L"ciao mondo" |
| Env | Blocco di ambiente (stringa con terminazione double-null) | <posizione> L"=::=::\\" | L"=::=::\\\0=C:=C:\\windows\\system32\0ALLUSERSPROFILE=... |
| s32 | Stringa UTF-32 (con virgolette) | <location> U"hello world" | U"ciao mondo" |
| s32b | Stringa UTF-32 (senza virgolette) | <location> U"ciao mondo" | Salve, mondo |
| en | enum | Sabato(6) | Sabato |
| Hv | Tipo di puntatore: indica che il valore del puntatore esaminato è il risultato dell'allocazione dell'heap di una matrice, ad esempio, new int[3]. |
<posizione>{<primo membro>} | <location>{<primo membro>, <secondo membro>, ...} |
| Na | Elimina l'indirizzo di memoria di un puntatore a un oggetto . | <location>, {member=value...} | {member=value...} |
| Nd | Visualizza solo le informazioni sulla classe di base, ignorando le classi derivate |
(Shape*) square include informazioni sulla classe base e sulle classi derivate |
Visualizza solo le informazioni sulla classe di base |
| hr | Codice di errore HRESULT o Win32. Questo identificatore non è più necessario per gli HRESULT perché il debugger li decodifica automaticamente. | S_OK | S_OK |
| wc | Flag della classe Window | 0x0010 | WC_DEFAULTCHAR |
| Wm | Numeri di messaggio di Windows | 16 | WM_CLOSE |
| Nr | Elimina l'elemento "Visualizzazione non elaborata" | ||
| nvo | Mostra l'elemento "Visualizzazione non elaborata" solo per i valori numerici | ||
| ! | formato non elaborato, ignorando le personalizzazioni delle visualizzazioni dei tipi di dati | <rappresentazione personalizzata> | 4 |
| maneggiare | Visualizza informazioni sull'handle win32 | 0x000000000000009c | Visualizza informazioni utili sull'handle, ad esempio l'ID del thread e così via. |
Annotazioni
Quando l'identificatore di formato hv è presente, il debugger tenta di determinare la lunghezza del buffer e di visualizzare tale numero di elementi. Poiché non è sempre possibile che il debugger trovi la dimensione esatta del buffer di una matrice, è consigliabile usare un identificatore (pBuffer,[bufferSize]) di dimensioni quando possibile. L'identificatore di formato hv è utile quando la dimensione del buffer non è prontamente disponibile.
Specificatori di dimensioni per i puntatori come matrici
Se si dispone di un puntatore a un oggetto che si desidera visualizzare come matrice, è possibile usare un numero intero o un'espressione per specificare il numero di elementi della matrice.
| Identificatore | Formato | Valore di osservazione originale | Valore visualizzato |
|---|---|---|---|
| n | Intero decimale o esadecimale | pBuffer,[32] pBuffer,[0x20] |
Visualizza pBuffer come matrice di 32 elementi. |
| [exp] | Espressione C++ valida che restituisce un numero intero. | pBuffer,[bufferSize] | Visualizza pBuffer come matrice di bufferSize elementi. |
| expand(n) | Espressione C++ valida che restituisce un numero intero | pBuffer, expand(2) | Visualizza il terzo elemento di pBuffer |
Identificatori di formato per il debug di interoperabilità con C++/CLI
| Identificatore | Formato | Valore di osservazione originale | Valore visualizzato |
|---|---|---|---|
| o | intero ottale senza segno | 0xF065 | 0170145 |
| x X |
Intero esadecimale | 61541 | 0x0000f065 |
| c | carattere singolo | <ubicazione> | 101 'e' |
| s | const char* (con virgolette) | <ubicazione> | ciao mondo |
| su | const wchar_t* const char16_t* (con virgolette) |
<ubicazione> | L"ciao mondo" |
| sostituto | const wchar_t* const char16_t* |
<ubicazione> | Salve, mondo |
| s8 | const char* (con virgolette) | <ubicazione> | ciao mondo |
| hr | Codice di errore HRESULT o Win32. Questo identificatore non è più necessario per gli HRESULT perché il debugger li decodifica automaticamente. |
S_OK | S_OK |
| wc | Flag della classe Window | 0x00000040, | WC_DEFAULTCHAR |
| Wm | Numeri di messaggio di Windows | 0x0010 | WM_CLOSE |
| ! | formato non elaborato, ignorando eventuali personalizzazioni della visualizzazione dei tipi di dati | <rappresentazione personalizzata> | 4 |
I specificatori d, e, f, g, h, i, l, m, ma, mb, md, mq, mu, mw e u per il codice nativo e C++/CLI richiedevano il debugger legacy, che non è più supportato in Visual Studio 2022 o versioni successive.
Gli identificatori in grassetto sono supportati solo per il debug di codice nativo e C++/CLI. Questi identificatori richiedono il debugger legacy, specificato usando la modalità di compatibilità gestita.
| Identificatore | Formato | Valore di osservazione originale | Valore visualizzato |
|---|---|---|---|
|
d io |
intero decimale con segno | 0xF000F065 | -268373915 |
| u | intero decimale senza segno | 0x0065 | 101 |
| o | intero ottale senza segno | 0xF065 | 0170145 |
| x X |
Intero esadecimale | 61541 | 0x0000f065 |
|
l h |
prefisso lungo o corto per: d, i, u, o, x, X | 00406042 | 0x0c22 |
| f | virgola mobile con segno | (3./2.), f | 1.500000 |
| e | notazione scientifica firmata | (3.0/2.0) | 1,500000e+000 |
| g | notazione scientifica con segno a virgola mobile o firmata, qualunque sia il più breve |
(3.0/2.0) | 1,5 |
| c | carattere singolo | <ubicazione> | 101 'e' |
| s | const char* (con virgolette) | <ubicazione> | ciao mondo |
| su | const wchar_t* const char16_t* (con virgolette) |
<ubicazione> | L"ciao mondo" |
| sostituto | const wchar_t* const char16_t* |
<ubicazione> | Salve, mondo |
| s8 | const char* (con virgolette) | <ubicazione> | ciao mondo |
| hr | Codice di errore HRESULT o Win32. Questo identificatore non è più necessario per gli HRESULT perché il debugger li decodifica automaticamente. |
S_OK | S_OK |
| wc | Flag della classe Window | 0x00000040, | WC_DEFAULTCHAR |
| Wm | Numeri di messaggio di Windows | 0x0010 | WM_CLOSE |
| ! | formato non elaborato, ignorando eventuali personalizzazioni della visualizzazione dei tipi di dati | <rappresentazione personalizzata> | 4 |
Identificatori di formato per i percorsi di memoria nel debug di interoperabilità con C++/CLI
Nella tabella seguente vengono descritti i simboli di formattazione usati per i percorsi di memoria. È possibile usare un identificatore di posizione della memoria con qualsiasi valore o espressione che restituisce una posizione.
Gli identificatori in grassetto sono supportati solo per il debug di codice nativo e C++/CLI. Questo richiede il debugger legacy, specificato usando la modalità di compatibilità gestita.
| Symbol | Formato | Valore di osservazione originale | Valore visualizzato |
|---|---|---|---|
| mamma | 64 caratteri ASCII | 0x0012ffac | 0x0012ffac .4...0...". 0W&....... 1W&.0.:W.. 1....".. 1.JO&.1.2..".. 1...0y. 1 |
| m | 16 byte in esadecimale, seguito da 16 caratteri ASCII | 0x0012ffac | 0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&.. |
| MB | 16 byte in esadecimale, seguito da 16 caratteri ASCII | 0x0012ffac | 0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&.. |
| mw | 8 parole | 0x0012ffac | 0x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 0000 |
| md | 4 parole doppie | 0x0012ffac | 0x0012ffac 00CB34B3 80943084 308A22FF 00002657 |
| mq | 2 quadword | 0x0012ffac | 0x0012ffac 7ffdf00000000000 5f441a790012fdd4 |
| Mu | Caratteri a 2-byte (Unicode) | 0x0012ffac | 0x0012ffac 8478 77f4 ffff ffff 0000 0000 0000 0000 |
Identificatore di dimensioni per i puntatori come matrici nel debug di interoperabilità con C++/CLI
Se si dispone di un puntatore a un oggetto che si desidera visualizzare come matrice, è possibile usare un numero intero per specificare il numero di elementi della matrice.
| Identificatore | Formato | Expression | Valore visualizzato |
|---|---|---|---|
| n | Numero intero decimale | pBuffer[32] | Visualizza pBuffer come matrice di 32 elementi. |