2009-06-09 9 views
196

¿Es posible ver una matriz en el depurador de Visual Studio? QuickWatch solo muestra el primer elemento de la matriz.¿Ver matriz en el depurador de Visual Studio?

+2

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

+0

Si es un CArray, al escribir array.m_pData [pos] o array-> m_pData [pos] (según el caso) en la ventana Watch le permite ver los contenidos de la matriz en la posición ¡posición! – sergiol

Respuesta

475

Puede probar este pequeño truco para C++. Tome la expresión que le da la matriz y luego agregue una coma y la cantidad de elementos que desea ver. Expandir ese valor le mostrará elementos 0- (N-1) donde N es el número que agrega después de la coma.

Por ejemplo, si pArray es la matriz, escriba pArray,10 en la ventana del reloj.

+8

Increíble hallazgo. Sin embargo, solo funciona con valores inmediatos, no se permite el acceso aritmético o dinámico a miembros. –

+17

Tenga en cuenta que también puede usar un molde en la vista de depuración. Si 'pArray' es de tipo' void * ', puede escribir' (char *) pArray, 10' que mostrará el contenido de la matriz interpretada como char. – Machtl

+0

No se puede hacer esto en Visual Studio 2008 Express. Si agrego una expresión "a + 1,2" en la ventana Inspección, se producirá el siguiente error: "error: + no puede realizarse en 'pArray' y '1'". ¿Qué versión de VS estás usando? –

1

Coloque el cursor del mouse sobre el nombre de la matriz y luego desplace el cursor sobre el pequeño icono (+) que aparece.

+14

Para C++ esto solo le mostrará el primer elemento – JaredPar

13

¿Está tratando de ver una matriz con memoria asignada dinámicamente? De lo contrario, puede ver una matriz para C++ y C# colocándola en la ventana de observación del depurador, con su contenido visible cuando expande la matriz en el pequeño (+) en la ventana de observación haciendo clic con el botón izquierdo del ratón.

Si se trata de un puntero a una matriz asignada dinámicamente, para ver N contenidos del puntero, escriba "puntero, N" en la ventana de observación del depurador. Tenga en cuenta que N debe ser un número entero o el depurador le dará un error al decir que no puede acceder a los contenidos. A continuación, haga clic con el botón izquierdo sobre el pequeño icono (+) que aparece para ver los contenidos.

18

Uso el complemento ArrayDebugView para Visual Studio (http://arraydebugview.sourceforge.net/).

Parece ser un proyecto largo muerto (pero uno que estoy buscando continuar yo mismo) pero el complemento todavía funciona muy bien para mí en VS2010 para C++ y C#.

Tiene algunos caprichos (orden de tabulación, diálogo modal, sin botón de cierre) pero la capacidad de trazar el contenido de una matriz en un gráfico lo compensa con creces.

Edición de julio de 2014: finalmente he creado una nueva extensión de Visual Studio para reemplazar la funcionalidad de ArrayebugView. Está disponible en VIsual Studio Gallery, busque ArrayPlotter o vaya a http://visualstudiogallery.msdn.microsoft.com/2fde2c3c-5b83-4d2a-a71e-5fdd83ce6b96?SRC=Home

+0

¿Parece genial pero no es compatible con VS2013? VSIXInstaller.NoApplicableSKUsException: esta extensión no se puede instalar en ningún producto instalado actualmente. Productos compatibles: Microsoft.VisualStudio.Pro versión: [10.0] versión: [11.0] versión: [12.0] versión: [14.0] – Gregory

+2

Se debe hacer! ¡Lo desarrollé en VS2013! ¿Qué versión de VS2013 (service pack/edition) está ejecutando? Si busca ArrayPlotter en Extension Manager (en la sección en línea) ¿lo ve disponible allí? –

+0

Hermosa herramienta, funciona bien para mí en VS2013. –

61

Si tiene una matriz grande y solo desea ver una subsección de la matriz, puede escribirla en la ventana de observación;

ptr+100,10 

para mostrar una lista de los 10 elementos que comienzan en ptr [100]. Tenga en cuenta que los subíndices de matriz visualizados comenzarán en [0], por lo que deberá recordar que ptr [0] es realmente ptr [100] y ptr [1] es ptr [101] etc.

Cuestiones relacionadas