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

Visual C++ Discussion :

Erreur de débogage


Sujet :

Visual C++

  1. #1
    Membre du Club
    Inscrit en
    mai 2006
    Messages
    212
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 212
    Points : 68
    Points
    68
    Par défaut Erreur de débogage
    Salut,

    Que ce soit en mode debug ou en exécution directe, j'ai une erreur bizarre dans mon programme du genre:

    Debug Error!

    Program:..............

    Damage after normal block (#92456) at 0x0D09B651

    Press Retry to debug the application.

    Quelqu'un aurait une idée sur l'origine du problème?

    Merci d'avance.
    Images attachées Images attachées  

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2003
    Messages : 9 055
    Points : 17 328
    Points
    17 328
    Par défaut
    salut,
    ça peut etre un banal debordement memoire sur une zone allouée .
    en debug ça devrait etre facile a trouver.
    fait retry et remonte dans la pile des appels jusqu'a ton code ...

  3. #3
    Membre du Club
    Inscrit en
    mai 2006
    Messages
    212
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 212
    Points : 68
    Points
    68
    Par défaut
    Je crois que ça plante au niveau du destructeur d'une classe.
    Cette classe contient 2 variables de type string. Que faire pour désallouer ces 2 variables?

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2003
    Messages : 9 055
    Points : 17 328
    Points
    17 328
    Par défaut
    l'erreur est avant ,ce plantage est la consequence de l'utilisation de cet objet..
    que vaut l'adresse de l'objet (this) dans le destructeur?
    cet objet est alloué ?
    etc..

  5. #5
    Membre du Club
    Inscrit en
    mai 2006
    Messages
    212
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 212
    Points : 68
    Points
    68
    Par défaut
    En fait, j'ai rien du tout dans le destructeur.

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2003
    Messages : 9 055
    Points : 17 328
    Points
    17 328
    Par défaut
    ce n'est pas ça que je demande ..
    l'adresse de l'objet detruit ? (dans le debuger c'est this).
    etc ..

  7. #7
    Membre du Club
    Inscrit en
    mai 2006
    Messages
    212
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 212
    Points : 68
    Points
    68
    Par défaut
    l'adresse dans le debuger est bien "this", alloué, la première variable string est nulle mais la seconde contient une valeur pas logique, mais alors pas du tout.

    Est ce que ça peut être l'origine du problème?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2005
    Messages : 464
    Points : 542
    Points
    542
    Par défaut
    oui
    "La forme même des Pyramides prouve que de tous temps, les ouvriers n'ont jamais pensé qu'à en faire de moins en moins."

    G. CLEMENCEAU

  9. #9
    Membre du Club
    Inscrit en
    mai 2006
    Messages
    212
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 212
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par mambo
    l'adresse dans le debuger est bien "this", alloué, la première variable string est nulle mais la seconde contient une valeur pas logique, mais alors pas du tout.

    Est ce que ça peut être l'origine du problème?
    Je viens de résoudre ce problème mais j'ai toujours le même message d'erreur .

  10. #10
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2003
    Messages : 9 055
    Points : 17 328
    Points
    17 328
    Par défaut
    Précisions :
    Si je simule le bug suivant.
    Dans une classe fenêtre je déclare un pointeur sur CString.
    Je ne l'initialise pas.
    Dans le destructeur de la fenêtre je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      CSampleSDIView::~CSampleSDIView()
      {
               delete m_pString;
      }
    le debugger va s'arrêter :
    Dans le code lié au destructeur de la CString ...
    mais le problème n'est pas la ,c'est l'utilisation de la CString qui est erronée.
    Ici le pointeur n'est pas initialisé.
    Donc comme je te l'ai dit il faut que tu remontes d'un cran et que tu regardes comment est utilisé initialisé etc l'objet contenant le problème...

  11. #11
    Membre du Club
    Inscrit en
    mai 2006
    Messages
    212
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 212
    Points : 68
    Points
    68
    Par défaut
    Voilà ce que j'ai dans le call stack, le pointeur étant sur la première ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    MSVCRTD! 10213b5f()
    MSVCRTD! 10213931()
    MSVCRTD! 102138be()
    operator delete(void * 0x00d499b8) line 7 + 10 bytes
    std::allocator<char>::deallocate(void * 0x00d499b8, unsigned int 0x00000021) line 64 + 16 bytes
    std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Tidy(unsigned char 0x01) line 592
    std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >() line 59 + 17 bytes
    Dans la fonction en question, j'ai ce genre d'itérateurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    map <Server, int>::iterator serverit;
    avec Server la classe suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class Server
    {
    public:
    	Server()
    	{		
    	}
    	~Server()
    	{
    	}
    public:
    	string node;
    	string servername;
    	bool operator<(const Server &S) const;
    };
    Je pense avoir un problème dans la désallocation des itérateurs. Qu'est ce qu'il faut que je rajoute dans le destructeur pour que ça marche?

  12. #12
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2003
    Messages : 9 055
    Points : 17 328
    Points
    17 328
    Par défaut
    dans le code que tu postes ,je ne vois rien à liberer .
    la map fait son boulot tout seul (dans ton cas).
    je pense qu'il faudrait plutot regarder l'objet qui contient l'iterateur serverit.

Discussions similaires

  1. Erreur de Débogage [visual basic]
    Par frogi dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 05/06/2014, 21h44
  2. Erreur : R débogage
    Par AJ_ing dans le forum R
    Réponses: 1
    Dernier message: 17/07/2013, 15h46
  3. [Débutant] Erreur de débogage
    Par Lealeal dans le forum VB.NET
    Réponses: 13
    Dernier message: 21/06/2012, 02h01
  4. code erreur et débogage
    Par tanaka59 dans le forum VBA Access
    Réponses: 10
    Dernier message: 21/05/2012, 19h58
  5. Réponses: 11
    Dernier message: 18/12/2010, 18h30

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