Condividi tramite


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.