2009-06-09 7 views
196

È possibile visualizzare una matrice nel debugger di Visual Studio? QuickWatch mostra solo il primo elemento dell'array.Visualizza array nel debugger di Visual Studio?

+2

http: // support .microsoft.com/kb/198953 – becko

+0

Se è un CArray, la scrittura di array.m_pData [pos] o array-> m_pData [pos] (a seconda dei casi) nella finestra di controllo consente di vedere il contenuto dell'array nella posizione posizione! – sergiol

risposta

475

Puoi provare questo piccolo trucco per C++. Prendi l'espressione che ti dà l'array e poi aggiungi una virgola e il numero di elementi che vuoi vedere. Espandendo quel valore mostrerai gli elementi 0- (N-1) dove N è il numero che aggiungi dopo la virgola.

Ad esempio se pArray è la matrice, digitare pArray,10 nella finestra di controllo.

+8

Scoperta incredibile. Funziona comunque solo con valori immediati, non è consentito l'accesso di membri aritmetici o dinamici. –

+17

Si noti che è anche possibile utilizzare un cast nella vista di debug. Se 'pArray' è di tipo' void * 'puoi digitare' (char *) pArray, 10' che visualizzerà il contenuto dell'array interpretato come char. – Machtl

+0

Impossibile farlo in Visual Studio 2008 Express. Se aggiungo un'espressione "a + 1,2" nella Watch Window, si verificherà l'errore di correzione: "errore: + non può essere eseguito su 'pArray' e '1'". Quale versione di VS stai usando? –

1

Posiziona il puntatore del mouse sul nome dell'array, quindi passa il mouse sopra l'icona (+) visualizzata.

+14

Per C++ questo ti mostrerà solo il primo elemento – JaredPar

13

Stai cercando di visualizzare un array con memoria allocata in modo dinamico? In caso contrario, è possibile visualizzare un array per C++ e C# inserendolo nella finestra di controllo nel debugger, con i relativi contenuti visibili quando si espande l'array sul piccolo (+) nella finestra di controllo facendo clic con il pulsante sinistro del mouse.

Se si tratta di un puntatore a un array assegnato dinamicamente, per visualizzare N contenuto del puntatore, digitare "puntatore, N" nella finestra di controllo del debugger. Nota, N deve essere un numero intero o il debugger ti darà un errore che dice che non può accedere ai contenuti. Quindi, fare clic con il tasto sinistro sulla piccola icona (+) che appare per visualizzare il contenuto.

18

Uso il componente aggiuntivo ArrayDebugView per Visual Studio (http://arraydebugview.sourceforge.net/).

Sembra un progetto a lungo morto (ma uno sto cercando di continuare me stesso) ma l'add-in funziona ancora perfettamente per me in VS2010 sia per C++ che per C#.

Ha alcune stranezze (ordine di tabulazione, finestra di dialogo modale, nessun pulsante di chiusura) ma la capacità di tracciare il contenuto di un array in un grafico ha più che compensato.

Modifica luglio 2014: ho finalmente creato una nuova estensione di Visual Studio per sostituire le funzionalità di ArrayebugView. È disponibile nella Galleria di Studio VIsual, cerca ArrayPlotter o vai a http://visualstudiogallery.msdn.microsoft.com/2fde2c3c-5b83-4d2a-a71e-5fdd83ce6b96?SRC=Home

+0

Sembra ottimo ma non supporta VS2013 ?? VSIXInstaller.NoApplicableSKUsException: questa estensione non è installabile su alcun prodotto attualmente installato. Prodotti supportati: Microsoft.VisualStudio.Pro Versione: [10.0] Versione: [11.0] Versione: [12.0] Versione: [14.0] – Gregory

+2

Dovrebbe fare! L'ho sviluppato in VS2013! Quale versione di VS2013 (service pack/edizione) stai utilizzando? Se si cerca ArrayPlotter in Extension Manager (nella sezione Online) lo si vede disponibile lì? –

+0

Bellissimo strumento, funziona bene per me in VS2013. –

61

Se si dispone di un array di grandi dimensioni e si desidera visualizzare solo una sottosezione dell'array, è possibile digitare questo nella finestra di controllo;

ptr+100,10 

per visualizzare un elenco di 10 elementi che iniziano con ptr [100]. Attenzione che gli indici di array visualizzati inizieranno a [0], quindi dovrete ricordare che ptr [0] è realmente ptr [100] e ptr [1] è ptr [101] ecc.