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" ?
Réponses
Trop de publicités?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;
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
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).