Gambas France BETA


Pas de compte ? Incription

[Résolu]Déboguer...

Ce sujet est résolu.

1
AuteurMessages
Foromus#1 Posté le 9/1/2010 à 17:37:00
Bonjour,

Voilà, j'ai un ennui dans mon programme - des variables qui changent de valeur, mais je ne sais ni où, ni quand, ni pourquoi, et j'ai du mal à les traquer.
J'ai remarqué plusieurs outils mais je ne sais pas les utiliser.
Pur les points d'arrêt, le pas-à-pas, ça va, j'ai vu, Par contre, si je m'arrête à une ligne précise, comment connaitre la valeur d'une variable qui est dans cette ligne ?
J'ai bien essayé "Print Variable" en console, ça ne marche pas... Le seul truc que j'ai trouvé, c'est de mettre, dans mon code, la formule précédente, là où je pense que ça doit coincer : naturellement, ça marche, mais ce n'est pas très pratique. Et la fenêtre console est vite remplie, ce n'est pas clair.
J'ai bien trouvé un outil de surveillance (les lunettes), je ne vois pas comment l'utiliser. Quand le programme s'exécute, il y a bien les onglets en bas, dont un avec les lunettes, avec une textbox de saisie, j'ai beau écrire quelque chose dedans, rien ne se passe.
Donc, ma première question est simple : comment je fais pour surveiller la valeur d'une variable ?

Quand j'aurai assimilé le procédé, je pourrai voir plus loin....

Merci !
manu#2 Posté le 9/1/2010 à 22:40:00
Avec Gambas ca roule !C'est sans doute pas très Académique mais moi j'insère dans mon code :

1
Message.info(Valeur de la variable par exemple)
.

L'avantage par rapport à un print c'est que tu as un message d'info qui apparait pendant l'execution et ca stop l'execution jusqu'a ce que tu cliques sur OK.

C'est pas toujours eviedent mais moi ca me va pour ce que je fais.... :)
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
gambix#3 Posté le 9/1/2010 à 23:56:00
Faire simple !L'ide de Gambas est certainement une des plus fournie dans le domaine du débogage.

donc en pas a pas tu as plusieur solution.

1: tu selection la variable et la valeur en cour apparait soit sous forme d'un tooltip sois d'une fenêtre s'il s'agit d'un tableau ou d'un objet.

2: une foit sélectionné tu peut clické sur les lunette pour ajouter cette valeur a celle espionnée.

3: tu peut utilisé des entrée de déboguage comme indiqué par manu
Moins de texte dans une signature c'est agrandir son espace.
Foromus#4 Posté le 10/1/2010 à 09:27:00
Bonjour,

Merci pour ces renseignements. Je vais essayer de voir ça dans les prochaines heures. Mais peut-être qu'il me faudra un café supplémentaire.
Je viens d'essayer rapidement, j'ai mis une variable en surbrillance - donc sélectionnée, et je n'ai vu aucune infobulle apparaitre. J'ai ensuite cliqué sur les "lunettes", le nom de la variable a bien été inscrit dans la txtbox de l'onglet "surveillance", en bas, dans la console, mais sans autre information, pas la moindre valeur du moment d'affichée... Je dois certainement oublier quelque chose.
manu#5 Posté le 10/1/2010 à 09:41:00
Avec Gambas ca roule !Quand tu exécutes ton code, et que tu as une erreur d'exécution, par exemple une valeur non attendue dans une variable ou une donnée d'un mauvais type.... Ton exécution se met en "pause" et là, si tu sélectionne avec ta souris une variable, l'IDE te renseigne d'avantage sur le type d'erreur.

Pour ensuite modifier cette ligne de code, tu dois ensuite arrêter vraiment l'exécution avec le bouton"Stop". Si c'est pas claire je te mettrais un screenshots :)
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
Foromus#6 Posté le 10/1/2010 à 10:25:00
Oui, ça, je pense que j'ai déjà vu quelque part.
Que le programme s'arrête quand il y a souci, c'est OK (mauvais type de variable, mauvais code, etc) et généralement, j'ai un message d'erreur.
Moi, ce que je cherche, c'est quand le résultat souhaité n'est pas au rendez-vous. Je m'explique :
Dans ce que je suis en train de faire, j'ai des variables que je lis dans un fichier au démarrage de l'appli, ensuite, ces variables sont modifiées ou non, et ensuite, elles sont ré-enregistrés dans le fichier (par écrasement donc, puisque c'est ainsi que fonctionne "Create"). Donc tout simple. Mais plusieurs fois, j'ai eu des variables de modifiées au cours du traitement, et sans que je sache pourquoi. C'est pourquoi je cherche le moyen de suivre l'évolution d'une variable au cours du déroulement de l'appli.
Bon, là et concrètement, j'ai trouvé assez vite, car mon programme n'est pas encore très long, et j'ai quand même un peu de pratique en VB, cela dit, il faut bien que je m'attende à avoir des cas nettement plus ardus, d'où mon souhait de maîtriser au plus vite les outils de débogage. Il est possible que l'aide de Gambas en explicite plusieurs, je n'ai pas TOUT lu sur Gambas, j'essaie de me renseigner au fur et à mesure que les besoins apparaissent. Je pourrais, certes, commencer par tout lire, et par ordre alphabétique, qu'on me pardonne mon manque de persévérance, mais ça me paraît tout de même un peu fastidieux.
Pour revenir à VB, puisque je connais un peu, j'ai apprécié la facilité de mettre des points d'arrêt, et surtout, de laisser la souris au-dessus de n'importe quelle variable, et d'en obtenir immédiatement la valeur dans une info-bulle. J'ai apprécié aussi le fait d'écrire, dans la console ""? variable"", et d'avoir instantanément la valeur de ladite d'affichée (il semble que Gambas fasse une chose similaire mais uniquement pour les "expressions"). Mieux encore en VB, le fait d'écrire en console "Variable = 3" affectait la valeur 3 à la variable, ce qui pouvait permettre de poursuivre l'exécution jusqu'au problème suivant. Il y a là des outils que je regrette, cela dit et redit, Gambas n'est pas VB, et je ne le connais pas encore assez pour oser me permettre des comparaisons !

Merci pour les conseils !
gambix#7 Posté le 10/1/2010 à 11:21:00
Faire simple !
Oui, ça, je pense que j'ai déjà vu quelque part.
Que le programme s'arrête quand il y a souci, c'est OK (mauvais type de variable, mauvais code, etc) et généralement, j'ai un message d'erreur.
Moi, ce que je cherche, c'est quand le résultat souhaité n'est pas au rendez-vous. Je m'explique :
Dans ce que je suis en train de faire, j'ai des variables que je lis dans un fichier au démarrage de l'appli, ensuite, ces variables sont modifiées ou non, et ensuite, elles sont ré-enregistrés dans le fichier (par écrasement donc, puisque c'est ainsi que fonctionne "Create"). Donc tout simple. Mais plusieurs fois, j'ai eu des variables de modifiées au cours du traitement, et sans que je sache pourquoi. C'est pourquoi je cherche le moyen de suivre l'évolution d'une variable au cours du déroulement de l'appli.




Bon, là et concrètement, j'ai trouvé assez vite, car mon programme n'est pas encore très long, et j'ai quand même un peu de pratique en VB, cela dit, il faut bien que je m'attende à avoir des cas nettement plus ardus, d'où mon souhait de maîtriser au plus vite les outils de débogage. Il est possible que l'aide de Gambas en explicite plusieurs, je n'ai pas TOUT lu sur Gambas, j'essaie de me renseigner au fur et à mesure que les besoins apparaissent. Je pourrais, certes, commencer par tout lire, et par ordre alphabétique, qu'on me pardonne mon manque de persévérance, mais ça me paraît tout de même un peu fastidieux.


Pourtant il faut bien le faire ... l'avantage que j'ai eu c'est de commencer quant il n'y avait que 10 pages

Pour revenir à VB, puisque je connais un peu, j'ai apprécié la facilité de mettre des points d'arrêt,

Ben en gambas c'est aussi simple !... F9 ou un click sur le bouton Flag, ou un doubleclick sur la colonne des numéro de ligne

et surtout, de laisser la souris au-dessus de n'importe quelle variable, et d'en obtenir immédiatement la valeur dans une info-bulle.

C'est un peu diférent la car tu doit selectionner le mot.


J'ai apprécié aussi le fait d'écrire, dans la console ""? variable"",

même chose en gambas
et d'avoir instantanément la valeur de ladite d'affichée (il semble que Gambas fasse une chose similaire mais uniquement pour les "expressions").

Ben non :) ça marche aussi pour les variable locale chez moi

Mieux encore en VB, le fait d'écrire en console "Variable = 3" affectait la valeur 3 à la variable, ce qui pouvait permettre de poursuivre l'exécution jusqu'au problème suivant. I

ça c'est vrai qu'on ne le fait pas encore ... mais ça va venir !

On ne peut pas comparer gambas et vb ... Gambas c'est 2,5 personne au développement et dans leur heures creuses de surcroit , VB c'est 40 personnes payé pour cela ! et a plein temps.

Donc oui parfois on a des choses qui ne sont pas encores en place comme on le voudrait ... mais je peut t'assurer que nos outils de débogage n'ont pas a palir devant vb et ceux depuis la V1 et encore moins devant les 3/4 des ide du monde linux.

Tien ya aussi un bouton exécuter jusqu'a ligne courante aussi

Pur revenir a nos moutons,

Une fois au point d'arr tu a accès :

A la valeur des variables locales
A la valeur des variables Privée de la classe en cour
A toutes les valeurs Public des classes relatives

Gambas t'y donne accès via la console, via le panneau de débogage, via les fenêtre popup d'exploration d'objet. Tu a aussi un backtrace de la pile d'appel.

Sur tout ce que tu m'a cité le seul truc qu'il nous manque effectivement c'est la modification des variable en cour d'éxécution ... mais je croit que la ou nous en somme nous pouvons déja être fiers enfin un peu du moin de ce que nous avons accomplit.

La preuve en est que beaucoup de personne rale ... et que peu s'en vont :)... il est vrai que la première approche, de gambas est parfois rédibitoire et les habitude a la noix prise sous vb difficile a changer. Mais Imagine un peu quand je suis arrivé ya 10 ans sous linux ... Les seules options était C,c++ ou tcl/tk. La j'ai eu le mal du VB6.

En 2000 on comptait plusieur Basics... mais il était vraiement Basics !!

Gambas a réussit le parit d'être encore la ... C'est pas un langage très connu certe il est boudé par la communauté Linux car c'est du basic et c'est pas geek et boudé par la communauté windows car ben il ne tourne pas sous windows. Mais dans ce contexte on arrive a trouver des utilisateur passionné, des gens intéressé et interressant . Ce qu'il faut savoir c'est que gambas est développé pour nos besoin propres a tous et que quand on rajoute quelque chose c'est qu'on trouve l'idée utile soit que l'on a besoin de cette option. Ensuite les utilisateur qui veule ajouter quelque chose en fonction de leur besoin sont bien sur libres de le faire et de nous en envoyer les sources pour que si cette option fait plaisir a plusieur on l'ajoute !

C'est tout le principe du logiciel libre.
Moins de texte dans une signature c'est agrandir son espace.
Foromus#8 Posté le 11/1/2010 à 19:53:00
Bonjour,

Donc, j'ai suivi les conseils, je pense maintenant pouvoir me servir assez bien des outils de débogage. J'ai expérimenté - c'est indispensable, je remarque effectivement que je peux trouver une valeur de variable en la sélectionnant. Par contre, la formule "? variable" dans la console ne fonctionne pas. (Il est possible que ma version actuelle ne le permette pas, il faudra que je me décide à faire une mise à jour).
Le point d'arrêt est facile à mettre en place, aussi facile à retirer. J'ai tenté d'en mettre un quand le programme tournait, c'est refusé. Par contre, et je ne sais plus dans quelle circonstance, j'ai réussi à en effacer un alors que le programme tournait ! J'ai bien repéré les 4 flèches de déplacement donc, je devrais pouvoir travailler avec ça.
Pour la surveillance d'une variable (les lunettes), je n'ai pas regardé de ce côté, cela pourrait quand même être intéressant.

Gambas est peu connu...
Je dois dire que quand j'ai découvert Linux, tout a été nouveau, et j'ai quand même été agréablement surpris. J'ai découvert des logiciels de musique par exemple, que je pensais devoir regretter de feu Windows. Aucun regret avec celui que j'ai trouvé, après avoir eu maintes difficultés à y mettre le son, il fonctionne bien, et même plutôt mieux que ce que j'avais avant.
Quand j'ai découvert Gambas, là, j'ai vraiment été surpris : pouvoir programmer en Linux, franchement, je n'en revenais pas ! Bon, je suppose, vu le nombre d'applications qui existent, que nous programmons pour nous faire plaisir, histoire de se faire son truc à soi, même si la pratique n'est pas prioritaire... En effet, quel intérêt de prendre un ordinateur, même portable, pour aller se faire cuire un oeuf alors que toute cuisine même mal équipée possède au moins un sablier ou un minuteur ?... Mais bon, moi j'étais content de mon carnet d'adresses et de mon visualisateur de photos, c'étaient "les miens"...

Bien pur l'heure, je vais mettre [Résolu], pour les lunettes, on verra plus tard, pour l'instant, j'ai encore des choses à apprendre...

Merci à tous pour toute cette aide !
spheris#9 Posté le 16/1/2010 à 22:20:00
Foromus,
un autre solution toute simple est derajouter dans ton code :

PRINT mavariable

cela enverra la valeur de mavariable dans la console, que tu pourras aisément consulter dans la boite terminal en bas de ton ide lors de l'excution.
Ainsi,pas de point d'arret, pas de pas à pas, et tu as une idée précise de ce qui transite dans tes variables.
Je m'en sers pas mal et j'ai réussi à débugguer pas mal de programme comme cela car la solution "Afficher des boites Message.info" posait souvent des problèmes.
;)
gambix#10 Posté le 16/1/2010 à 23:08:00
Faire simple !t'en est vraiement ncore au déboguage a la vb4 voir qbasic la ... :/ ya des outils bien plus interressant !... je ferait un tuto plus tard !
Moins de texte dans une signature c'est agrandir son espace.
spheris#11 Posté le 16/1/2010 à 23:29:00
ben pour repondre a ton affirmation, tu as bien raison !
Apres VB4, j'ai utilisé.....GAMBAS !
VB6 a parcouru mon disque dur que très très peu de temps.
Win$ aussi d'ailleurs cela fait maintenant 10 ans.
;)
1