gdb, c++ et difficultés d'utilisation

gdb, c++ et difficultés d'utilisation - C++ - Programmation

Marsh Posté le 21-07-2004 à 10:35:47    

je rencontre quelques difficultés à utiliser gdb avec le c++ ( je suis en phase d'apprentissage, il est probable que certaines méthodes m'échappent )
 
==> comment placer un breakpoint sur une méthode de la classe mère pour un objet dérivé ?
 
Par exemple, Qt est fortement orienté objet, et un QPushButton hérite de sa classe mère QWidget la méthode resize
 
comment pouvoir dire à gdb de poser un breakpoint sur
 
QPushButton::resize ?
 
(sans dire de faire un breakpoint sur QWidget::resize ? qui inclurait des objets ne m'intéressant pas )
 
====> préciser un breakpoint par un numéro de ligne ne semble pas toujours marcher
 
j'ai peut etre oublié de faire une manipulation, mais par exemple, pour stopper dans une méthode de classe, je précise un numéro de ligne, mais le programme ne se stoppe pas sur le breakpoint
  :heink:  
 
des idées de solutions à mes problèmes
 
par avance, merci


---------------
Bitcoin, Magical Thinking, and Political Ideology
Reply

Marsh Posté le 21-07-2004 à 10:35:47   

Reply

Marsh Posté le 21-07-2004 à 10:39:20    

utiliser une surcouche au lieu de se la péter avec un truc inutilisable ?


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 21-07-2004 à 11:33:33    

c'est à dire ?
 
si c'est une surcouche à GDB dont tu parles, j'ai bien essayé avec kdevelop, mais sans succès, donc je suis repassé sur le gdb en ligne de commande pour tenter de voir ce qui ne marchait pas
 


---------------
Bitcoin, Magical Thinking, and Political Ideology
Reply

Marsh Posté le 21-07-2004 à 18:50:42    

j'ai testé en utilisant ddd, ça me fait exactement les mêmes problèmes


---------------
Bitcoin, Magical Thinking, and Political Ideology
Reply

Marsh Posté le 21-07-2004 à 18:53:59    

Tu compiles avec -ggdb3 ou au moins -g ?


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Marsh Posté le 21-07-2004 à 19:15:41    

-g, mais je vais ressayer avec ggdb3
 
les résutats sont variables en fait, par exemple, ça s'arrete bien sur les breakpoints du main sans broncher


---------------
Bitcoin, Magical Thinking, and Political Ideology
Reply

Marsh Posté le 21-07-2004 à 20:10:07    

Tu es sûr que le source est bien en accord avec l'exécutable ?  Il arrive souvent que tes sources soient plus récents que tes binaires, et ça fout la merde, mais gdb te l'indique normalement. Mais quand même, je conseillerais une recompilation complète.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Marsh Posté le 21-07-2004 à 20:23:11    

oui, ça je suis sûr, vu que j'ai recompilé 500 fois les choses


---------------
Bitcoin, Magical Thinking, and Political Ideology
Reply

Marsh Posté le 22-07-2004 à 10:48:12    

il te faut une version de Qt avec des symboles de débuggages également.

Reply

Marsh Posté le 22-07-2004 à 12:21:39    

Taz a écrit :

il te faut une version de Qt avec des symboles de débuggages également.


 
hum oui et non
 
sur mes fonctions internes, quand je définis un constructeur de classe dérivée, y'a tout les symboles qu'il faut pour s'arreter à la bonne ligne


---------------
Bitcoin, Magical Thinking, and Political Ideology
Reply

Marsh Posté le 22-07-2004 à 12:21:39   

Reply

Marsh Posté le 22-07-2004 à 12:22:39    

toutes façons, tu mets un break point avec le numéro de la ligne (ou tu cliques carrément dessus) et voilà ... je comprends pas ou est ton problème

Reply

Marsh Posté le 22-07-2004 à 13:19:44    

il me semble que tu peux aussi specifier le breakpoint par la methode:
b
QPushButton::resize  
c
 

Reply

Marsh Posté le 22-07-2004 à 14:34:21    

Taz a écrit :

toutes façons, tu mets un break point avec le numéro de la ligne (ou tu cliques carrément dessus) et voilà ... je comprends pas ou est ton problème


 
j'essaye de te dire que tout simplement : " ça marche pas "
 
le programme ne s'arrete pas sur le breakpoint, bien que je voit le débogueur qui dit l'avoir mis.
 
c'est ce que j'essaye de dire depuis le 1er post...


---------------
Bitcoin, Magical Thinking, and Political Ideology
Reply

Marsh Posté le 22-07-2004 à 14:43:50    

c'est pas possible. soit tu as mal compilé, soit tu as mal mis ton break point. est-ce que tu arrives à breaker ou que ce soit ?

Reply

Marsh Posté le 22-07-2004 à 15:24:12    

bein écoute, je sais pas quoi te dire moi non plus...
 
par exemple, sur les fonctions, ça breake bien sur le constructeur de ma classe
 
breakpoint que j'ai setté avec: b 'toto::toto'
 
en laissant gdb déterminer l'endroit, il le règle bien
 
par contre, le breakpoint setté par numéro de ligne dans ce même constructeur, lui il est pas respecté...


Message édité par farib le 22-07-2004 à 15:24:54

---------------
Bitcoin, Magical Thinking, and Political Ideology
Reply

Marsh Posté le 22-07-2004 à 15:47:20    

t es bien sur que les fichiers que tu vois sont bien ceux de la version du programme que tu debug?
 t as jamais remarquerun decalage dans les numero de ligne par exemple?
 
et tu utilisa la bonne syntaxe pour spevifier un point d'arret connaissant le numero de ligne?
 
 
 
 

Reply

Marsh Posté le 22-07-2004 à 15:54:10    

normalement, j'en suis sûr et certain, je suis plus à ça près, une fois de plus, je reprendrais depuis le début en nettoyant toutes les sources des lignes identations superflues, et make cleanant en profondeur...


---------------
Bitcoin, Magical Thinking, and Political Ideology
Reply

Marsh Posté le 23-07-2004 à 09:12:45    

Tu évites de mettre plusieurs instructions par ligne, hein ?
(genre tu passes une copie de ton code à l'indenteur artistic style)
Tu évites les macros aussi (à remplacer par des fonctions inline) ?
Tu as suffisamment de mémoire pour faire tourner en debug ?
Tu utilises bcp de templates ?
Si tu réponds oui aux 3 premières questions et non à la 3e, je ne vois pas de raison pour que gdb perde les pédales. Jette un oeil aux bugs répertoriés.


Message édité par el muchacho le 23-07-2004 à 09:17:16

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Marsh Posté le 23-07-2004 à 10:36:30    

el muchacho a écrit :

Tu évites de mettre plusieurs instructions par ligne, hein ?


 
Il y a peut être un ou deux endroits ou y'a 2 instructions ( faut que je vérifie), mais c'est pas là que je mets mes breakpoits).

el muchacho a écrit :


Tu évites les macros aussi (à remplacer par des fonctions inline) ?
 

Zéro macro perso, homi celles qui sont inhérentes à Qt

el muchacho a écrit :


Tu as suffisamment de mémoire pour faire tourner en debug ?


512 Mo, donc ça va

el muchacho a écrit :

Tu utilises bcp de templates ?  


 
Juste un type de template, fourni par Qt.
 
 
En fait, par exemple, si je lui dit de breaker à la l'implémentation d'un constructeur de classe, en donnant le nom de la fonction, ça breake  bien.
 
Si je lui donnne la ligne correspondante, ça marche bien.
 
Ce qui est étrange, c'est que j'ai testé sur un sample de code et que ça marche nickel, mais pour l'appli Qt, ça veut plus marcher. Donc je continue de chercher ce qui pourrait merder.


Message édité par farib le 23-07-2004 à 10:39:30

---------------
Bitcoin, Magical Thinking, and Political Ideology
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed