OVH Cloud OVH Cloud

debug de fuites memoire

64 réponses
Avatar
3dsman
salut!
je suis a la recherche d'un outil efficace et pas trop compliquer pour
detecter les fuites memoires dans mes softs.
quelqu'un en aurais il un bien a me conseiller?
merci

10 réponses

Avatar
Jean-Marc Desperrier
Michel Michaud wrote:
[...]
Detected memory leaks!
Dumping objects ->

La mémoire non initialisée est indiquée par des CD; les lignes
Data montrent le contenu en texte si possible (entre <>) et en
hexa; les {nn} sont les numéros de blocs alloués si je me souviens
bien. [...]


Le leakfinder de code project que j'ai indiqué avant est très rapide à
intégrer et est *autrement* plus convivial.
Même sur une seule utilisation le temps gagné sur la recherche de fuite
compense celui pour télécharger les fichiers et les ajouter à son projet
par rapport à cette solution intégrée.

Avatar
Michel Michaud
Dans le message dbijeq$f7b$,
Michel Michaud wrote:
[...]
Detected memory leaks!
Dumping objects ->

La mémoire non initialisée est indiquée par des CD; les lignes
Data montrent le contenu en texte si possible (entre <>) et en
hexa; les {nn} sont les numéros de blocs alloués si je me souviens
bien. [...]


Le leakfinder de code project que j'ai indiqué avant est très
rapide à intégrer et est *autrement* plus convivial.


C'est sûr qu'il est possible d'avoir mieux... Ceci dit, rien
n'empêche d'utiliser deux outils (ou plus) si les problèmes sont
majeurs (mais voir plus bas).

Même sur une seule utilisation le temps gagné sur la recherche de
fuite compense celui pour télécharger les fichiers et les ajouter à
son projet par rapport à cette solution intégrée.


J'en doute pour moi... Je n'ai jamais de fuite :-)

Plus sérieusement, même si c'est très proche de la vérité en fait,
même mes élèves n'ont pas de problèmes majeurs avec les fuites et
cet outil semble leur suffire. Je ne sais pas vraiment comment
faire pour programmer assez mal pour réaliser qu'il y a des fuites
très complexes à trouver. Les tests unitaires dès le départ
devraient permettre d'éviter les problèmes majeurs non ? Si la
structure du programme (au niveau de la gestion mémoire) est très
complexe, il faut dès le départ s'appuyer sur des outils et
techniques prévus pour éviter les problèmes...

Je dois manquer d'imagination pour comprendre comment on peut avoir
une fuite et ne pas facilement savoir d'où elle vient...

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/


Avatar
Loïc Joly

Je dois manquer d'imagination pour comprendre comment on peut avoir
une fuite et ne pas facilement savoir d'où elle vient...


La méthode la plus simple, c'est quand on te dis, voilà 5000 fichiers de
code source, le développeur initial est parti aux bahamas, rien ne
marche, tu as 3 jours avant qu'on livre au client.

--
Loïc

Avatar
Michel Michaud
Dans le message 42dd0c3e$0$2520$,

Je dois manquer d'imagination pour comprendre comment on peut avoir
une fuite et ne pas facilement savoir d'où elle vient...


La méthode la plus simple, c'est quand on te dis, voilà 5000
fichiers de code source, le développeur initial est parti aux
bahamas, rien ne marche, tu as 3 jours avant qu'on livre au client.


S'il y a des fuites importantes et difficiles à détecter, je crois
que tout le reste du programme ne doit pas être bien meilleur. Alors
je ne fais pas ce travail en trois jours. Il faut tout revoir et,
à chaque étape, tout tester et s'occuper, entre autres, des fuites.
Pas très difficile, mais ça prendra le temps qu'il faut. Qu'un outil
me donne plus facilement la source des fuites globalement ne m'aidera
pas à vérifier que le reste du programme fonctionne correctement.

Je considère donc ton exemple comme non pertinent et je continue à
manquer d'imagination :-)

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/


Avatar
Matthieu Moy
"Michel Michaud" writes:

S'il y a des fuites importantes et difficiles à détecter, je crois
que tout le reste du programme ne doit pas être bien meilleur. Alors
je ne fais pas ce travail en trois jours.


Tu as déjà approché un industriel de près ? ;-)

--
Matthieu

Avatar
Loïc Joly
Dans le message 42dd0c3e$0$2520$,


Je dois manquer d'imagination pour comprendre comment on peut avoir
une fuite et ne pas facilement savoir d'où elle vient...



La méthode la plus simple, c'est quand on te dis, voilà 5000
fichiers de code source, le développeur initial est parti aux
bahamas, rien ne marche, tu as 3 jours avant qu'on livre au client.



S'il y a des fuites importantes et difficiles à détecter, je crois
que tout le reste du programme ne doit pas être bien meilleur. Alors
je ne fais pas ce travail en trois jours.


Tu es viré.

;)

--
Loïc



Avatar
Jean-Marc Bourguet
"Michel Michaud" writes:

Dans le message 42dd0c3e$0$2520$,

Je dois manquer d'imagination pour comprendre comment on peut avoir
une fuite et ne pas facilement savoir d'où elle vient...


La méthode la plus simple, c'est quand on te dis, voilà 5000
fichiers de code source, le développeur initial est parti aux
bahamas, rien ne marche, tu as 3 jours avant qu'on livre au client.


S'il y a des fuites importantes et difficiles à détecter,
je crois que tout le reste du programme ne doit pas être
bien meilleur. Alors je ne fais pas ce travail en trois
jours. Il faut tout revoir et, à chaque étape, tout tester
et s'occuper, entre autres, des fuites. Pas très
difficile, mais ça prendra le temps qu'il faut.


Il y a un problème que tu oublies: garder la boîte en vie
pendant ce temps. Il faut donc fournir des choses et c'est
justement ce dont tu es chargé.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org



Avatar
Arnaud Meurgues
Michel Michaud wrote:

S'il y a des fuites importantes et difficiles à détecter, je crois
que tout le reste du programme ne doit pas être bien meilleur. Alors
je ne fais pas ce travail en trois jours. Il faut tout revoir et,
à chaque étape, tout tester et s'occuper, entre autres, des fuites.
Pas très difficile, mais ça prendra le temps qu'il faut. Qu'un outil
me donne plus facilement la source des fuites globalement ne m'aidera
pas à vérifier que le reste du programme fonctionne correctement.

Je considère donc ton exemple comme non pertinent et je continue à
manquer d'imagination :-)


Il y a des cas où la durée de vie des objets est difficile à déterminer.
Et il peut arriver, lorsqu'on étend du code, d'oublier de gérer la durée
de vie d'objets dont il fallait s'occuper.

Par ailleurs, dans ma boîte, on fait des bibliothèques et non des
produits finaux. Et là, la palette possible d'utilisations est beaucoup
plus grande que dans une application compilée une bonne fois pour toute.
Tester tous les cas peut devenir particulièrement délicat.

En plus de ça, il n'est pas rare que la conception d'un logiciel ne soit
pas parfaite au départ. Ensuite, il faut faire avec car il est très
rarement possible de dire « on doit tout refaire parce que c'est sale ».

Arnaud

Avatar
Michel Michaud
Dans le message 42dd1846$0$2521$,
S'il y a des fuites importantes et difficiles à détecter, je crois
que tout le reste du programme ne doit pas être bien meilleur.
Alors je ne fais pas ce travail en trois jours.


Tu es viré.


Ma première version du message disait : s'il me demande ça, je
change d'employeur.

Je suis assez reconnu comme faiseur de miracle. Quand je crois
que ce n'est pas possible, je n'essaie pas de faire semblant.

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/


Avatar
Michel Michaud
Dans le message ,
"Michel Michaud" writes:
S'il y a des fuites importantes et difficiles à détecter,
je crois que tout le reste du programme ne doit pas être
bien meilleur. Alors je ne fais pas ce travail en trois
jours. Il faut tout revoir et, à chaque étape, tout tester
et s'occuper, entre autres, des fuites. Pas très
difficile, mais ça prendra le temps qu'il faut.


Il y a un problème que tu oublies: garder la boîte en vie
pendant ce temps. Il faut donc fournir des choses et c'est
justement ce dont tu es chargé.


S'il n'y a que des fuites, alors on peut fournir le produit tel
quel...

S'il y autre chose, il faut prendre le temps. Il n'y a pas
d'alternative.

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/