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 :

Prob : Segmentation Fault


Sujet :

C++

  1. #1
    Membre confirmé
    Avatar de Kalite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Points : 553
    Points
    553
    Par défaut Prob : Segmentation Fault
    Bonjour,

    je réalise un programme C++ qui est sur un linux embarqué. Lorsque que je le lance j'ai un beau "Segmentation Fault".

    Je n'arrive pas à trouver avec de simple trâce. Quand je pense avoir trouver cela se produit plus loin dans le code. (En ce moment cela se produit sur le ligne accept() sauf que tout est correcte.)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	struct sockaddr_in sinClientInfo = {0};
    	socklen_t SockLen = sizeof (struct sockaddr_in);
    	SocketId CreatedSocketId = accept(m_SocketId, (struct sockaddr*) &sinClientInfo, &SockLen);
    Donc, je me lance pour utilisé le débugger gdb en remote avec mon appli compilée en debug. J'arrive à charger mon code source sauf que j'ai pas tous. Faut que je mette les break point dans le fichier pour que ddd affiche le code (mon code est dans des sous-répertoire en grande majorité).
    Sinon, ca plante bien plutôt que l'accept sur un ifstream::seekg(). J'obtient une addresse de code 0x401f48fc et j'ai un peut plus d'info sur la machine distante qui indique :
    DUMA Aborting: ptr=4030bfc1: detected overwrite of ptrs no mans land below userSpace, size=63 alloced from UNKNOWN (use #include "dumapp.h")(0)

    Et à partir de là je sais plus quoi faire ?
    J'arrive pas à afficher le code générant l'erreur.
    J'ai essayer de mettre #incluse <dumapp.h> mais j'ai rien plus.
    J'ai essayer d'utiliser duma mais j'ai pas plus d'info (Peut-ête mal utilisé d'ailleur car je ne connai pas)

    Avez-vous une idée ?

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Si vous voulez vous faciliter la vie, vous pouvez tenter d'utilisation votre code embarqué, sur un GNU/Linux normal. Normalement, il ne devrait pas avoir de grande différence dans le code source et malheureusement toujours un peu sur le comportement.
    Mais, si vous ajoutez l'utilisation de :
    - valgrind (Surveillance de la mémoire)
    - strace (Analyse des appels systèmes)
    vous allez réussir à trouver le bug (enfin je pense). Peut être qu'il vous sera possible de les utiliser sur la machine embarquée.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre confirmé
    Avatar de Kalite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Points : 553
    Points
    553
    Par défaut
    Merci pour la réponse.

    Donc j'ai réussit à passer le problème avec DUMA. Le code suivant ne marchait pas correctement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    	bool bKeyFound = false;
    	m_ifsFile.seekg(0, std::ios_base::beg);
    	unsigned int uiNbLine = 0;
    	while ((false == m_ifsFile.eof()) && (false == bKeyFound))
    	{
    		std::string strCurrentLine;
    		getline(m_ifsFile, strCurrentLine);
    		uiNbLine++;
    		// La ligne ne peut être vide.
    		if (false == strCurrentLine.empty())
    		{
    			// Si la ligne commence par le caractère '#' c'est un commentaire.
    			if (m_cCommentChar != strCurrentLine[0])
    			{
    				...
    			}
    		}
    	}
    Il y avait un problème dans la destruction de la chaine. J'ai donc sortie la déclaration de la chaine et sa marche normalement. (La je suis pas expert mais bon sa ne devrait pas arrivé)

    Bon maintenant j'attaque mon segmentation fault.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Petit prob de date et Segmentation Fault
    Par neopirat dans le forum Débuter
    Réponses: 7
    Dernier message: 03/04/2010, 15h24
  2. [SDL_Image] Img_Load : segmentation fault ....
    Par Mathieu.J dans le forum OpenGL
    Réponses: 6
    Dernier message: 19/10/2004, 23h52
  3. [REDHAT] Segmentation fault systematique
    Par mela dans le forum RedHat / CentOS / Fedora
    Réponses: 2
    Dernier message: 21/09/2004, 06h05
  4. Réponses: 13
    Dernier message: 13/07/2004, 15h41
  5. Comment contrer la "segmentation fault" ?
    Par guillaume_pfr dans le forum C
    Réponses: 15
    Dernier message: 08/08/2003, 13h43

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