Identificatori di formato in C++
Quando si esegue il debug di codice nativo nella finestra Espressioni di controllo o nella finestra di dialogo Controllo immediato, è possibile modificare il formato di visualizzazione di un valore tramite gli identificatori di formato.
(La maggior parte degli identificatori di formato sono destinati solo al codice nativo, benché Visual C# ne fornisca un set limitato. Vedere Identificatori di formato in C#).
Gli identificatori di formato possono anche essere utilizzati nella finestra Controllo immediato, nella finestra Comando e persino nelle finestre di origine. Se in queste finestre ci si posiziona su un'espressione, il risultato verrà visualizzato in un suggerimento dati. I suggerimenti dati riflettono l'identificatore di formato nella visualizzazione Suggerimento dati.
Nota
Il debugger nativo di Visual Studio ha eseguito la transizione a un nuovo motore di debug.In questa modifica sono incluse l'aggiunta di nuovi identificatori di formato e la rimozione dei precedenti.La transizione non è completa e il debugger precedente viene ancora utilizzato per il debug di interoperabilità (nativo e gestito combinati) con C++/CLI e per il debug con la funzionalità Modifica e continuazione di C++.Nelle sezioni contenute in questo argomento vengono illustrati gli identificatori di formato per ogni motore di debug.
-
In Identificatori di formato di Visual Studio 2012 vengono descritti gli identificatori di formato nel nuovo motore di debug.
-
Nella pagina relativa agli identificatori di formato per il debug di interoperabilità e la funzionalità Modifica e continuazione di C++ vengono descritti gli identificatori di formato del motore di debug precedente.
Contenuto
Esempio
Identificatori di formato di Visual Studio 2012
- Identificatori di dimensioni per puntatori quali matrici in Visual Studio 2012
Identificatori di formato per il debug di interoperabilità e la funzionalità Modifica e continuazione di C++
Posizioni di memoria degli identificatori di formato per il debug di interoperabilità e la funzionalità Modifica e continuazione di C++
Identificatore di dimensioni per puntatori quali matrici per il debug di interoperabilità e la funzionalità Modifica e continuazione di C++
Esempio
Si supponga che nVar sia una variabile Integer e che nella finestra Espressioni di controllo sia indicato che contiene il valore 0x0065. Per visualizzare il valore espresso come carattere anziché come Integer, nella colonna Nome, dopo il nome della variabile, aggiungere l'identificatore del formato di carattere c:
Nella colonna Valore verrà visualizzato il valore di carattere 101 'e', anziché l'Integer 0x0065.
Per applicare un identificatore di formato agli elementi di una matrice o ai membri di un oggetto, è necessario applicarlo direttamente a ciascun elemento o membro. Non è possibile applicarlo alla matrice o all'oggetto nel suo complesso. Si supponga, ad esempio, di disporre di una matrice nArray e di voler visualizzare i primi quattro elementi nel formato di carattere. Immettere queste espressioni nella finestra Espressioni di controllo:
nArray[0],c
nArray[1],c
nArray[2],c
nArray[3],c
Identificatori di formato di Visual Studio 2012
Nelle tabelle seguenti sono indicati gli identificatori di formato che è possibile utilizzare in Visual Studio 2012 quando non si esegue il codice di interoperabilità (nativo e gestito) con C++/CLI o si utilizza la funzionalità Modifica e continuazione di C++.
Gli identificatori in grassetto non sono supportati per il debug di interoperabilità con C++/CLI o il debug con la funzionalità Modifica e continuazione di C++.
Identificatore |
Formato |
Espressione |
Valore visualizzato |
---|---|---|---|
d |
Integer decimale |
0xF000F065, d |
-268373915 |
o |
Unsigned Integer ottale |
0xF065, o |
0170145 |
x h |
Integer esadecimale |
61546, x 61541, h |
0x0000f06a |
X H |
Integer esadecimale |
61541, X 61546, H |
0x0000F06A |
c |
Carattere singolo |
0x0065, c |
101 'e' |
s |
Stringa ASCII |
0x0012fde8, s |
"Hello world" |
sb |
Stringa ASCII |
0x0012fde8, sb |
Hello world |
su |
Stringa Unicode |
0x0012fde8, su |
L"Hello world" |
sub |
Stringa Unicode |
0x0012fde8, sub |
Hello world |
s8 |
stringa UTF-8 |
0x0012fde8, s8 |
"Hello world" |
s8b |
stringa UTF-8 |
0x0012fde8, s8b |
Hello world |
bstr |
stringa BSTR |
0x0032fe8, bstr |
Hi there |
, na |
&myGlobal, n winmain, na |
L'indirizzo del puntatore non viene visualizzato. |
|
nd |
pb,nd |
Visualizza solo le informazioni sulla classe base di pb, ignorando le classi derivate |
|
hr |
HRESULT o codice di errore Win32. Poiché ora il debugger decodifica gli HRESULT automaticamente, l'identificatore non è necessario. |
0x00000000L, hr |
S_OK |
wc |
Flag della classe Window. |
0x00000040, wc |
WC_DEFAULTCHAR |
wm |
Numeri di messaggio Windows |
0x0010, wm |
WM_CLOSE |
! |
formato non elaborato in cui vengono ignorate le personalizzazioni delle visualizzazioni del tipo di dati |
i ! |
4 |
Identificatori di dimensioni per puntatori quali matrici in Visual Studio 2012
Se è presente un puntatore a un oggetto che si desidera visualizzare come matrice, è possibile utilizzare un Integer o un'espressione per specificare il numero di elementi di matrice:
Identificatore |
Formato |
Espressione |
Valore visualizzato |
---|---|---|---|
n |
Integer decimale o esadecimale |
pBuffer,[32] pBuffer,[0x20] |
Visualizza pBuffer come matrice di 32 elementi. |
[exp] |
Espressione C++ valida che restituisce un Integer. |
pBuffer,[bufferSize] |
Valuta bufferSize e visualizza pBuffer come matrice del numero valutato di elementi. |
expand(n) |
pBuffer, expand(1,2) |
Visualizza il terzo elemento figlio del secondo elemento figlio di pBuffer |
Identificatori di formato per il debug di interoperabilità con C++/CLI o con la funzionalità Modifica e continuazione di C++
Gli identificatori in grassetto sono supportati solo per il debug di codice C++/CLI nativo o il debug con la funzionalità Modifica e continuazione di C++.
Identificatore |
Formato |
Espressione |
Valore visualizzato |
---|---|---|---|
d,i |
Signed Integer decimale |
0xF000F065, d |
-268373915 |
u |
Unsigned Integer decimale |
0x0065, u |
101 |
o |
Unsigned Integer ottale |
0xF065, o |
0170145 |
x,X |
Integer esadecimale |
61541, x |
0x0000f065 |
l,h |
prefisso lungo o breve per: d, i, u, o, x, X |
00406042,hx |
0x0c22 |
f |
virgola mobile signed |
(3./2.), f |
1.500000 |
e |
notazione scientifica signed |
(3./2.), e |
1.500000e+000 |
g |
virgola mobile signed o notazione scientifica signed (a seconda di quale sia più breve) |
(3./2.), g |
1.5 |
c |
Carattere singolo |
0x0065, c |
101 'e' |
s |
String |
0x0012fde8, s |
"Hello world" |
su |
Stringa Unicode |
0x0012fde8, su |
L"Hello world" |
sub |
Stringa Unicode |
0x0012fde8, sub |
Hello world |
s8 |
stringa UTF-8 |
0x0012fde8, s8 |
"Hello world" |
hr |
HRESULT o codice di errore Win32. Poiché ora il debugger decodifica gli HRESULT automaticamente, l'identificatore non è necessario. |
0x00000000L, hr |
S_OK |
wc |
Flag della classe Window. |
0x00000040, wc |
WC_DEFAULTCHAR |
wm |
Numeri di messaggio Windows |
0x0010, wm |
WM_CLOSE |
! |
formato non elaborato in cui vengono ignorate le personalizzazioni delle visualizzazioni del tipo di dati |
i ! |
4 |
Posizioni di memoria degli identificatori di formato per il debug di interoperabilità con C++/CLI o la funzionalità Modifica e continuazione di C++
Nella tabella seguente sono elencati i simboli di formattazione utilizzati per le posizioni di memoria. Gli identificatori della posizione di memoria possono essere utilizzati con qualsiasi valore o espressione che restituisce una posizione.
Simbolo |
Formato |
Espressione |
Valore visualizzato |
---|---|---|---|
ma |
64 caratteri ASCII |
ptr, ma |
0x0012ffac .4...0...".0W&.......1W&.0.:W..1...."..1.JO&.1.2.."..1...0y....1 |
m |
16 byte in formato esadecimale, seguiti da 16 caratteri ASCII |
ptr, m |
0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&.. |
mb |
16 byte in formato esadecimale, seguiti da 16 caratteri ASCII |
ptr, mb |
0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&.. |
mw |
8 parole |
ptr, mw |
0x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 0000 |
md |
4 parole doppie |
ptr, md |
0x0012ffac 00CB34B3 80943084 308A22FF 00002657 |
mq |
2 parole quadruple |
ptr, mq |
0x0012ffac 7ffdf00000000000 5f441a790012fdd4 |
mu |
caratteri da 2 byte (Unicode) |
ptr, mu |
0x0012fc60 8478 77f4 ffff ffff 0000 0000 0000 0000 |
Identificatore di dimensioni per puntatori quali matrici nel debug di interoperabilità con C++/CLI o la funzionalità Modifica e continuazione di C++
Se è presente un puntatore a un oggetto che si desidera visualizzare come matrice, è possibile utilizzare un Integer per specificare il numero di elementi di matrice:
Identificatore |
Formato |
Espressione |
Valore visualizzato |
---|---|---|---|
n |
Integer decimale |
pBuffer[32] |
Visualizza pBuffer come matrice di 32 elementi. |