IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Probleme lors de la première utilisation du prog


Sujet :

C

  1. #1
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut Probleme lors de la première utilisation du prog
    Bon je travaille toujours sur le même projet (pour ceux qui suivent ^^) et j'ai un autre problème qui à peut être (ou pas ) un rapport avec mon depassement de memoire ...

    Le fait est que je fais du traitement d'image qui donne un magnifique graphique. Le problème c'est que lorsque j'analyse des images pour la première fois (le pire c'est que ca le fait pas à tous les coups) hé bien figurez vous que le graphe obtenu n'est pas le bon, tandis que lorsque je relance le programme, sans rien changer entre temps, il me donne le bon graph.

    De même, il lui arrive de bloquer juste aprés le traitement d'image (et donc juste avant l'apparition de l'interface graphique du logiciel), et pareil, si je le relance, 10, 100 ou 1000 fois de suite aprés ca ne plantera plus ...

    Alors là c'est une demo donc ya 25 images à traiter ca passe ; mais quand je serais sur le terrain à vouloir traiter 90 000 images .... Je te dis pas le bordel si au bout de 5 heures de traitement ca plante et je dois relancer, ca fait pas super serieux mdr

    EDIT : à noter pour ceux qui n'ont pas suivi mes peripeties, que la phase de traitement d'image de mon log se fait sous Allegro et que mon IHM est developpée sous Gtk. C'est donc la transition entre les deux qui pose problème dans le 2° cas évoqué precedemment.

  2. #2
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Comme cela au flair sans code, mauvaise initialisation mémoire, débordement de buffer, libération de mémoire avant utilisation...

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Ca sent le comportement indéterminé
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  4. #4
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut
    Citation Envoyé par Ti-R
    Comme cela au flair sans code, mauvaise initialisation mémoire, débordement de buffer, libération de mémoire avant utilisation...
    Bah c'est probable que ca soit le même problème que pour l'autre (cf topic pointeur non portable ? incomprehensible)

    Mais le fait est que je ne COMPRENDS pas pourquoi un debordement memoire donnerait lieu à un mauvais graph lors de la première utilisation mais pas lors des suivantes ??? C'est illogique, mais mon problème de portage est tout à fait illogique aussi donc aprés vous avoir soutiré quelques infos complémentaires je vais essayer de trouver dou pourrait venir un eventuel debordement, bien que j'ai deja fait le tour un certain nombre de fois

  5. #5
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut
    Citation Envoyé par Franck.H
    Ca sent le comportement indéterminé
    Une seule question :
    "Qu'est ce ???"


  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par skip78
    Une seule question :
    "Qu'est ce ???"

    Bin apparement ton cas ici présent ... c'est lorsqu'un programme ne se déroule pas comme prévu, qu'il te sort des résultat incohérent, etc... Cela est souvent dû à une mauvaise utilisation des pointeurs, d'allocation mal faites, etc...

    Si tu est sous Linux je te conseil d'exécuter ton programme avec Valgrind histoire de voir, ou bien gdb (il faut compiler avec les infos de debug par contre) !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  7. #7
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut
    Erf je voulais deja utiliser Valgrind pour mon probleme de portage mais je suis malheureusement sur Windows. Si tu connais un equivalent win je veux bien

  8. #8
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par skip78
    Erf je voulais deja utiliser Valgrind pour mon probleme de portage mais je suis malheureusement sur Windows. Si tu connais un equivalent win je veux bien
    Non je ne connais pas d'équivalent sous Windows mais suivant l'EDI que tu utilises il se peut que tu en ai un de fournit.
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  9. #9
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Bon 2 techniques "bourrins".

    Première technique, enlever des bouts de ton code.
    Tester par partie ton code.

    Ensuite, lancer un mode debug et faire du pas à pas partout, pour voir si tout s'initialise, et que tout est bien initialisé.

    2eme technique faire une macro personnel, qui permet de voir tout les malloc/calloc/free de ton programme, et annoter ce qui se créer/libère pour voir si le programme ne fait pas n’importe quoi.

    Au final, partie logique, si tout est bien créé/détruit au bon endroit… il y a-t-il des débordements… mode debug pas à pas.

  10. #10
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    J'ai créé y'a pas si longtemps pour un projet perso un petit module pour justement éviter les fuites mémoires lors de la fin d'un programme et il y'a possibilité de générer un log des allocations et libérations ... si ca peut t'aider

    Tu aura juste à changer tes appels à malloc/free en les remplacants par mes wrappers, c'est fait en quelques secondes avec la méthode rechercher/remplacer
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  11. #11
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par Franck.H
    J'ai créé y'a pas si longtemps pour un projet perso un petit module pour justement éviter les fuites mémoires lors de la fin d'un programme et il y'a possibilité de générer un log des allocations et libérations ... si ca peut t'aider

    Tu aura juste à changer tes appels à malloc/free en les remplacants par mes wrappers, c'est fait en quelques secondes avec la méthode rechercher/remplacer
    Encore plus vite avec un #define, genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #define malloc(t) mon_malloc(t)
    #define free(t) mon_free(t)
    Eventuellement un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define malloc(t)  mon_malloc(t, __FILE__, __LINE__)
    Si le malloc à toi prend en paramètre le nom du fichier et le numéro de ligne ou ya l'allocation.
    Je ne répondrai à aucune question technique en privé

  12. #12
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par millie
    Encore plus vite avec un #define, genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #define malloc(t) mon_malloc(t)
    #define free(t) mon_free(t)
    Eventuellement un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define malloc(t)  mon_malloc(t, __FILE__, __LINE__)
    Si le malloc à toi prend en paramètre le nom du fichier et le numéro de ligne ou ya l'allocation.
    http://emmanuel-delahaye.developpez.com/clib.htm
    Module SYSALLOC

    http://emmanuel-delahaye.developpez.com/sysalloc_um.htm
    Pas de Wi-Fi à la maison : CPL

  13. #13
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut
    Pour surveiller les allocations/libérations sou Windows, on peut aussi utiliser un truc du genre API Monitor.

    1) Recompiler le programme avec une bibliothèque dédiée à cet usage (comme celle d'Emmanuel) est probablement plus "propre".

    2) Ce genre de programme peut parfois être utile pour détecter des problèmes dans une bibliothèque externe dont on n'a pas le code source (ex. : une DLL de Windows ).

    3) J'ai bien écrit "du genre". Je n'ai pas dit que c'était LE programme parfait pour ça (d'ailleurs, je ne l'ai même pas essayé, celui-là). Il y a des chances que le résultat produit soit un peu trop "brut" pour être analysé facilement (ce qui pourrait impliquer d'écrire un outil pour ça...beaucoup de travail pour pas grand chose si la solution d'Emmanuel te convient).
    Un problème bien exposé
    est, pour moitié, solutionné. / La connaissance s'accroît quand on la partage, pas quand on l'impose. / La violence est le langage des faibles.

Discussions similaires

  1. Réponses: 9
    Dernier message: 18/08/2008, 17h19
  2. Réponses: 5
    Dernier message: 11/04/2008, 12h53
  3. Réponses: 10
    Dernier message: 03/01/2008, 17h09
  4. Init lors de la première utilisation
    Par Mister Nono dans le forum Struts 1
    Réponses: 16
    Dernier message: 22/11/2007, 12h06
  5. Probleme lors de l'utilisation statspack
    Par magboom dans le forum Administration
    Réponses: 6
    Dernier message: 14/08/2007, 17h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo