# [XCODE] Visualiser le contenu d'un tableau en deboggage



## Didier Guillion (8 Mars 2007)

Bonjour,

En C, sous XCode. J'ai une zone mémoire allouée, cette zone est un tableau de structures.
En deboggage je peut voir le premier element du tableau, mais comment visualiser l'ensemble du tableau correctement formaté ?

Cordialement


----------



## claw59 (8 Mars 2007)

Moi aussi j'étudie progressivement la manière dont fonctionne Xcode, et voici un détail intéressant :

Lorsque je rentre des informations à l'intérieur d'un CFDictionaryRef, au débogage il me répond : 10 entries. Clique sur cette ligne pour la mettre en évidence, ensuite tu fais un clique droit et tu sélectionne l'option 'Print description to Console' : sur la console de débogage, il affichera le contenu inscrit dans le dictionnaire !!

Si c'est un tableau conventionnel du style :   int tab[10]; il suffit au débogage de cliquer sur la petite flèche devans la variable locale 'tab' pour obtenir tout son contenu.

même si cela ne correspond pas tout à fait à ton attente, j'espère que cela aura au moins le mérite de t'avoir aidé un petit peu.


----------



## Didier Guillion (8 Mars 2007)

claw59 a dit:


> Moi aussi j'étudie progressivement la manière dont fonctionne Xcode, et voici un détail intéressant :
> 
> Lorsque je rentre des informations à l'intérieur d'un CFDictionaryRef, au débogage il me répond : 10 entries. Clique sur cette ligne pour la mettre en évidence, ensuite tu fais un clique droit et tu sélectionne l'option 'Print description to Console' : sur la console de débogage, il affichera le contenu inscrit dans le dictionnaire !!
> 
> ...




Merci de ta réponse. En fait, le probleme est que la zone memoire est dynamique et non de taille fixe. Sur Codewarrior c'est simplissime, "view>As array" et on donne le nombre d'elements à visualiser.
J'ai trouvé une question similaire sur la mailing-list d'Apple et apparemment, ce n'est pas possible. Cela va etre tres difficile de se passer de cela.

Cordialement


----------



## claw59 (9 Mars 2007)

Apparemment sous Xcode, c'est presque la même option... sauf que :

au même endroit que je t'ai déjà décrit, il y a une option 'View value as ....' : en fait, il suffit de rentrer le type du pointeur de structure pour qu'il en affiche le contenu.


----------



## Didier Guillion (9 Mars 2007)

claw59 a dit:


> Apparemment sous Xcode, c'est presque la même option... sauf que :
> 
> au même endroit que je t'ai déjà décrit, il y a une option 'View value as ....' : en fait, il suffit de rentrer le type du pointeur de structure pour qu'il en affiche le contenu.




Non désolé, je n'y arrive pas, cela me donne la premiere entree du tableau et non le tableau complet. Comment t'y prends tu ?

Cordialement


----------



## Zeusviper (10 Mars 2007)

printf ?  ;-)


plus s&#233;rieusement il y a les performances tools (pr&#233;sent ds Developer/Applications) qui peuvent probablement t'aider.


----------



## Didier Guillion (10 Mars 2007)

Zeusviper a dit:


> printf ?  ;-)
> 
> 
> plus sérieusement il y a les performances tools (présent ds Developer/Applications) qui peuvent probablement t'aider.



Non, je ne vois pas. Quel rapport ?

Cordialement


----------



## Zeusviper (10 Mars 2007)

Didier Guillion a dit:


> Non, je ne vois pas. Quel rapport ?



oups dsl. en fait j'ai installé ds ce dossier valgrind et ddd auquel je pensais.

mais en fait je ne vois pas ce qui te pose pb ds le visualiseur xcode..

tu as un ex de ton code dynamique problématique?


----------



## Didier Guillion (11 Mars 2007)

Zeusviper a dit:


> oups dsl. en fait j'ai installé ds ce dossier valgrind et ddd auquel je pensais.
> 
> mais en fait je ne vois pas ce qui te pose pb ds le visualiseur xcode..
> 
> tu as un ex de ton code dynamique problématique?



Bon, imagine que tu declare une structure.

typedef struct
{
short a;
short b;
} MyData;

Et un pointeur local

MyData * p=(MyData *)NewPtr(sizeof(MyData)*100);

Maintenant comment fais tu pour visualiser "p" sous la forme d'un tableau de 100 elements ?

Cordialement


----------



## Zeusviper (12 Mars 2007)

effectivement.. c'est probl&#233;matique! 

et je n'ai rien trouv&#233; non plus..
&#224; part utiliser la console gdb bien sur..

il y a bien aussi la colonne summary qui te permet d'acc&#233;der &#224; la variable 
	
	



```
{$VAR[1].a} {$VAR[1].b}
```
 qui te renvoie le second &#233;l&#233;ment et ainsi de suite.
tu peux ainsi naviguer et afficher plusieurs variables du tableau mais c sur que si tu t'int&#233;resses vraiment aux 100 &#233;l&#233;ments c'est un peu lourd...

sinon &#224; tt hasard, via gdb, tu peux appeler n'importe quelle fonction de ton code dc pourquoi pas une fonction qui g&#233;n&#232;re l'affichage du tableau en question.

et dc sinon, ddd! interface X11 pas terrible certes mais outil tr&#232;s efficace!

bon courage en tt cas!


----------



## Didier Guillion (12 Mars 2007)

Zeusviper a dit:


> effectivement.. c'est problématique!
> 
> et je n'ai rien trouvé non plus..
> à part utiliser la console gdb bien sur..
> ...




Hmmm... Cela me semble difficile a utiliser, mes structures sont completement arborescentes et naviguer dans ce genre de données via une ligne de commande ne se fait plus depuis les années '80. La derniere fois que j'ai fait cela, ce devait etre sous CPC 128...
Esperons qu'XCode v3.0 fera évoluer ce probleme vers une solution satisfaisante car le deboggeur est quasiment inutilisable pour moi.

Cordialement


----------



## hopkins (12 Mars 2007)

j'ai le même type de problème avec Xcode. Impossible de visualiser les valeurs dans des tableaux (y compris ceux déclarés dans la pile) pendant le debugging... grrr Xcode, c'est beau mais c'est pas très professionnel


----------



## hopkins (12 Mars 2007)

je me suis aperçu que je ne peux consulter le contenu d'un tableau déclaré dans la pile uniquement si celui a une taille fixée par une constante (et pas par une variable)

ainsi 

int distrib (int C)
{
    int nsta = 500;  /* nb max d'etats observes de la file */
    double 
    p[500], /* probas des etats 0 a nsta-1 */
    u[nsta]; /* debit de sortie de la file pour l'etat n */
....
....
}

dans ces conditions-là, je peux visualiser le contenu de p mais pas de u (qui n'apparait pas dans les variables)... apparement c'est lié à gdb, car celui-ci ne "reconnait pas" u comme variable !


----------



## Didier Guillion (13 Mars 2007)

Bonjour,

Certains savent que j'ai souvent la dent dure contre Apple... 

Mais la je dois dire, chapeau !

A tout hasard, j'ai rempli un "bug report" sur leur site. Sans trop d'espoir. J'en ai qui sont l&#224; depuis 2004...
Et dans les 24 h, une r&#233;ponse. J'y croyait pas ! Depuis 6 ans que je poste des rapports de problemes, une r&#233;ponse, une vraie... Je me pince tres fort, je lit et je vous traduit :

Pour visualiser un pointeur comme un tableau il suffit d'ouvrir la fenetre des expressions :
"Debug>Tools>Expression"
Et dans le champ tout en bas d'entrer variable@# o&#249; variable est le nom de la variable et # le nombre d'elements du tableau. Par exemple pour mon exemple plus haut :

p@100

Cordialement


----------



## sam75018 (19 Mars 2007)

> Et dans le champ tout en bas d'entrer variable@# où variable est le nom de la variable et # le nombre d'elements du tableau.



Sniff... on pleure quand même face à des outils de dev comme visual...

A quand...


----------



## Céroce (20 Mars 2007)

sam75018 a dit:


> Sniff... on pleure quand même face à des outils de dev comme visual...
> 
> A quand...



Bof... C'est sûr si tu aimes les outils qui te pondent des tonnes de code que tu ne maîtrises pas, tu préfères Visual.


----------



## sam75018 (27 Mars 2007)

C&#233;roce;4209859 a dit:
			
		

> Bof... C'est s&#251;r si tu aimes les outils qui te pondent des tonnes de code que tu ne ma&#238;trises pas, tu pr&#233;f&#232;res Visual.



Pr&#233;cision : je ne parle pas du compilateur, en ce qui concerne ma remarque pr&#233;c&#233;dente, mais plut&#244;t de l'environnement de d&#233;veloppement.
L'interfa&#231;age de gdb dans XCode a encore beaucoup &#224; progresser, me semble-t-il...
Visual reste un outil des plus abouti et d'une efficacit&#233; remarquable dans son usage quand on code. Apr&#232;s le compilateur... c'est une autre histoire !


----------



## Céroce (2 Avril 2007)

sam75018 a dit:


> L'interfaçage de gdb dans XCode a encore beaucoup à progresser, me semble-t-il...



On est bien tous d'accord là-dessus...


----------

