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 :

Trouver l'instruction qui fait planter le programme


Sujet :

C

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Points : 240
    Points
    240
    Par défaut Trouver l'instruction qui fait planter le programme
    Bonjour,

    Quand je quitte mon programme (avec Ctrl+C car je n'ai pas encore prévu de commande pour quitter) j'ai le droit au message:

    L'instruction à "0x77c0ee58" emploie l'adresse mémoire "0x0000000f". La mémoire ne peut pas être "read"
    J'en déduit une erreur de pointeur évidente.
    Comment retrouver à quelle instruction de mon programme correspond l'adresse "0x77c0ee58" ?

    Note: j'utilise Code::Blocks mais je ne maitrise pas trop son débuggeur.

    Merci !

  2. #2
    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 FabaCoeur Voir le message
    Quand je quitte mon programme (avec Ctrl+C car je n'ai pas encore prévu de commande pour quitter) j'ai le droit au message:
    Montre ton code. C'est pas très normal de quitter un programme avec Ctrl-C...
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Points : 240
    Points
    240
    Par défaut
    En fait je quitte avec Ctrl+C car je n'ai pas encore introduit dans la routine l'action pour quitter, pour le moment on utilise le client indéfiniment.

    Il s'agit d'un client de jeu. Une fois connecté, on boucle en réception de message du serveur et on les traite en fonction de leur typologie.

    Il y a beaucoup de fichiers et de ligne de code alors je met seulement les sources concernant le client, les autres fichiers sont principalement des structures et outils qui ne posent aucun problème sur le serveur et qui sont partagés entre les deux builds.

    Petite piste pour trouver le problème:
    Le client peut être lancé en mode joueur, ou alors en mon intelligence artificielle (ia). Dans le cas d'une IA, je n'ai pas le problème.
    Les deux fichiers qui diffèrent sont client_traitements.c qui devient client_ia.c. Si on lance en mode IA ce n'est pas routine_client() de client.c qui est appelé mais routine_client_ia() de client_ia.c.

    Voila les sources:
    http://ressources.fabparadise.com/fi...memoireclient/

    Si besoin d'explication sur le code, je reste à disposition.
    Merci de mettre le nez dedans !
    Je sais que ça ne doit pas être super beau à voir, mais j'ai essayé de coder ça assez propre

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 372
    Points : 23 628
    Points
    23 628
    Par défaut
    Citation Envoyé par FabaCoeur Voir le message
    Comment retrouver à quelle instruction de mon programme correspond l'adresse "0x77c0ee58" ? Note: j'utilise Code::Blocks mais je ne maitrise pas trop son débuggeur. Merci !
    Je ne connais pas du tout Code::Blocks, mais en général, pour débuguer un programme, il faut que celui-ci embarque sa table des symboles. Ça se fait avec -g avec GCC, sous les IDE comme Visual Studio ou autres, il y a un mode Debug et un mode Release qui servent à ça. Jette un œil pour voir s'il n'y aurait pas une option similaire ...

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

Discussions similaires

  1. fonction dans dll qui fait planter programme
    Par chris069 dans le forum C++
    Réponses: 22
    Dernier message: 28/04/2009, 16h19
  2. comment trouver ce qui fait planter mon VS ?
    Par gorgonite dans le forum Visual Studio Team System
    Réponses: 3
    Dernier message: 03/06/2008, 23h40
  3. Réponses: 1
    Dernier message: 07/02/2008, 02h54
  4. probleme de requette qui fait planter powergres
    Par fehmitn dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 15/09/2004, 18h48
  5. Réponses: 12
    Dernier message: 16/03/2004, 14h21

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