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 :

problème de débogage


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Septembre 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut problème de débogage
    Bonjours je boss actuellement sur un compteur de passage utilisant une camera ip grâce a la bibliothèque OpenCv je travaille sur visual studio 2013.
    Je rencontre un probleme le programme ce lance bien via visual studio mais lorsque j'essaye de le lancer manuellement windows me propose immédiatement de débogé.
    voici la pile et le message.

    Nom : retour debog.png
Affichages : 287
Taille : 28,8 Ko

    et voici l'exception généré sur la fenetre de sortie :

    'CompteurDePassage.exe' (Win32)*: Chargé 'C:\Windows\SysWOW64\rasadhlp.dll'. Les symboles ont été chargés.
    Le thread 0x5ec s'est arrêté avec le code 0 (0x0).
    Exception non gérée à 0x77E0F636 (ntdll.dll) dans CompteurDePassage.exe*: 0xC0000374: Un segment de mémoire a été endommagé (paramètres*: 0x77E2D338).

    lorsque j'appuis sur continuer l'application ce lance et marche.
    j'ai fais des recherche pour découvrir que l'exception et lié a une fuite mémoire il y en a bien une que je n'arrive pas a réglé d'ailleurs mais ceci et un autre problème, et l'application ce lancer précédemment avec cette même fuite mémoire.
    l’exception est active depuis que j'implémente le module mysql.

    svp besoin d'aide.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Ce n'est pas une fuite mémoire, mais un débordement de buffer sur le tas.

    Pour déboguer plus facilement où il se trouve, appelle _CrtSetDbgFlag() ainsi:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void EnableSystematicHeapCheck()
    {
    	// Get the current bits
    	int tmp = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
     
    	// Clear the upper 16 bits and OR in the desired freqency
    	tmp |= _CRTDBG_CHECK_ALWAYS_DF;
     
    	// Set the new bits
    	_CrtSetDbgFlag(tmp);
    }
    Tu peux aussi appeler _CrtCheckMemory() (dans des assertions) à des endroits stratégiques de ton code.

    Avec tout ça, tu auras la même erreur "plus près" de la source du débordement.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Septembre 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci tes un magicien j'ai juste a copier coller la méthode et a l'appeler dans le main et ça marche je peut lancer l’exécutable sans exception .
    ne serai tu pas familier avec opencv pour voir au sujet de ma fuite mémoire ?

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Septembre 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    parcontre en laissant tourner le programme il me léve une autre exception

    'CompteurDePassage.exe' (Win32)*: Chargé 'C:\Windows\SysWOW64\FWPUCLNT.DLL'. Les symboles ont été chargés.
    HEAP[CompteurDePassage.exe]: Heap block at 009F86B8 modified at 009F8A94 past requested size of 3d4
    CompteurDePassage.exe a déclenché un point d'arrêt.

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    3d4, c'est 980.
    Tu as donc quelque part une allocation de 980 octets, et tu écris hors de ce bloc.

    Profite du point d'arrêt pour examiner toutes les écritures que tu fais depuis la dernière allocation/libération ou le dernier assert( _CrtCheckMemory() ).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Septembre 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    J'ai trouver ou sa plante c'est la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            mysql_init(&mysql);
            mysql_options(&mysql, MYSQL_READ_DEFAULT_GROUP, "option");
    	cout << "ICI" << endl;
    	if (mysql_real_connect(&mysql, host.c_str(), user.c_str(), pass.c_str(), "compteur", 0, NULL, 0))
    	{
    		cout << "connection mysql reussi" << endl;
    	}
    	else
    	{
    		cout << "Une erreur s'est produite lors de la connexion à la BDD! " << mysql_error(&mysql) << endl;
    	}
    	cout << "ICI fin" << endl;
    entre ICI et ICI fin a ton avis comment je règle le problème, parcque je crois pas que j'alloue quoi que ce soit

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 345
    Points : 1 211
    Points
    1 211
    Par défaut
    MYSQL *mysql_init(MYSQL *mysql)

    Allocates or initializes a MYSQL object suitable for mysql_real_connect(). If mysql is a NULL pointer, the function allocates, initializes, and returns a new object. Otherwise, the object is initialized and the address of the object is returned. If mysql_init() allocates a new object, it is freed when mysql_close() is called to close the connection.
    Tu as vérifié le retour de mysql_init() ?

Discussions similaires

  1. [SDL] problème de débogage sdl_ttf
    Par mouteb dans le forum SDL
    Réponses: 4
    Dernier message: 08/09/2006, 17h06
  2. Problème de débogage
    Par mambo dans le forum Visual C++
    Réponses: 2
    Dernier message: 26/07/2006, 17h14
  3. [SQL] Probléme de débogage
    Par dimkha1 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 19/07/2006, 12h41
  4. [SQL] Probléme de débogage
    Par dimkha1 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 19/07/2006, 11h57
  5. [SQL] Probléme de débogage
    Par dimkha1 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 19/07/2006, 11h57

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