144 votes

Comment afficher un tableau alloué dynamiquement dans le débogueur de Visual Studio ?

Si vous avez un tableau alloué statiquement, le débogueur de Visual Studio peut facilement afficher tous les éléments du tableau. Cependant, si vous avez un tableau alloué dynamiquement et pointé par un pointeur, il n'affichera que le premier élément du tableau lorsque vous cliquez sur le + pour le développer. Existe-t-il un moyen simple de dire au débogueur : "Montre-moi ces données sous la forme d'un tableau de type Foo et de taille X" ?

191voto

shoosh Points 34322

Oui, c'est simple. dire que vous avez

char *a = new char[10];

l'écriture dans le débogueur :

a,10

vous montrerait le contenu comme s'il s'agissait d'un tableau.

21voto

Drealmer Points 2284

Dans une fenêtre de veille, ajoutez une virgule après le nom du tableau et le nombre d'éléments que vous souhaitez afficher.

10voto

Gengpu Liu Points 32

Une revisite :

supposons que vous ayez un pointeur ci-dessous :

double ** a; // assume 5*10

vous pouvez alors écrire ce qui suit dans la fenêtre de débogage de Visual Studio :

(double(*)[10]) a[0],5

ce qui le transformera en un tableau comme ci-dessous, et vous pourrez voir tout le contenu en une seule fois.

double[5][10] a;

1voto

dabinsi Points 11

Pour les tableaux MFC (CArray, CStringArray, ...) en suivant le lien suivant dans son Astuce #4

http://www.codeproject.com/Articles/469416/10-More-Visual-Studio-Debugging-Tips-for-Native-De

Par exemple, pour "CArray pArray", ajoutez dans la fenêtre Watch

     pArray.m_pData,5 

pour voir les 5 premiers éléments .

Si pArray est un CArray à deux dimensions, vous pouvez consulter n'importe quel élément de la deuxième dimension à l'aide de la syntaxe suivante :

     pArray.m_pData[x].m_pData,y

0voto

wog Points 70

Je n'ai pas trouvé de moyen de l'utiliser avec un tableau multidimensionnel. Mais vous pouvez au moins (si vous connaissez l'index de l'entrée souhaitée) ajouter une montre à une valeur spécifique. Il suffit d'utiliser l'opérateur d'indexation.

Pour un tableau nommé current, qui a un tableau nommé Attribs à l'intérieur, qui a un tableau nommé Attrib à l'intérieur, il devrait ressembler à ceci si vous voulez avoir à positionner 26 :

((*((*current).Attribs)).Attrib)[26]

Vous pouvez également utiliser un décalage

((*((*current).Attribs)).Attrib)+25

affichera les 25 éléments suivants. (J'utilise VS2008, cela n'affiche que 25 éléments au maximum).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X