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 :

programme qui plante


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2013
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 14
    Points : 10
    Points
    10
    Par défaut programme qui plante
    salut tout le monde, j'ai devant moi le code suivant:
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    //dans le fichier .h
    typedef struct H2
    {
        NODE_ADDR previoussource;
        struct H2 *nexth2;
    } NTH2;
     
    typedef struct H1
    {
        NODE_ADDR source;
        struct H1 *nexth1;
        NTH2 *nexth2;
    } MAC_ASYN_NT_Node;
     
    typedef struct
    {
        MAC_ASYN_NT_Node *head;
     
    } MAC_ASYN_NT;
     
    ypedef struct glomo_mac_mac_async_str 
    {
        GlomoMac* myGlomoMac;
    	MAC_ASYN_NT nbrTable;
    }GlomoMac_async;
    //dans le fichier.c
    static
    BOOL MAC_ASYN_CheckNbrExist(NODE_ADDR source, NODE_ADDR previoussource, MAC_ASYN_NT* nbrTable)
    {/*traitement*/}
    static 
    void MAC_ASYN_InsertNbrTable(NODE_ADDR source, NODE_ADDR previoussource, MAC_ASYN_NT* nbrTable)
    {/*traitements*/}
     
    static 
    void mac_asyncReTransmit_table_voisinage(GlomoNode *node,GlomoMac_async* M802,Message* msg){/*traitements*/}
     
     
    void mac_asyncReceivePacketFromRadio(GlomoNode* node, GlomoMac_async* M802, Message* msg)
    {   mac_asyncShortControlFrame* hdr = (mac_asyncShortControlFrame*)msg->packet;
       if (hdr->destAddr == ANY_DEST)
       { switch (hdr->frameType) {
    	  //quand le noeud reçoit un paquet de construction de la table de voisinage
    	   case mac_async_table:
    	   printf("je suis le noeud %d qui a recu le paquet du noeud %d \n",node->nodeAddr,hdr->sourceAddr);
    	  if( MAC_ASYN_CheckNbrExist(hdr->sourceAddr,hdr->previous, &(M802->nbrTable) ) == FALSE )
    	  {  
    	   printf("le paquet que je viens de recevoir n'existe pas, je vais l'inserer\n");
    	   MAC_ASYN_InsertNbrTable(hdr->sourceAddr,hdr->previous,&(M802->nbrTable));
    	    mac_asyncReTransmit_table_voisinage(node,M802,msg);	
    	  }
     
    	  break;
    //suites des cases
    }
    donc voila une partie de mon code, tout d'abord est ce que l'appel des fonctions dans la fonction "mac_asyncReceivePacketFromRadio" est correct?
    après j'ai un problèmes lors de l'exécution, à un moment donné l'exécution s'arrête et il m'affiche la fenêtre de Windows qui me propose de chercher de l'aide ou de fermer ou de déboguer, pourtant j'ai l'affichage des printfs pour quelques nœuds, je ne comprends pas ce qui se passe , aidez moi svp j'en ai vraiment besoin, je vous remercie d'avance.

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Bonjour,

    Essaye de lancer ton code dans un débogueur pour avoir plus d'idée quand à l'erreur rencontrée.

  3. #3
    Membre actif
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    70
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 70
    Points : 204
    Points
    204
    Par défaut
    Il serait interessant de vérifier l'état de tes pointeurs car tu y accède sans AUCUNE vérification
    et il y a de nombreux endroit qui pourrait créer un segmentation fault (je suppose que ça plante à cause e ça n'est-ce pas ? )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void mac_asyncReceivePacketFromRadio(GlomoNode* node, GlomoMac_async* M802, Message* msg)
    {
    mac_asyncShortControlFrame* hdr = (mac_asyncShortControlFrame*)msg->packet;//erreur si msg est NULL
       if (hdr->destAddr == ANY_DEST)//erreur si hdr ( msg->packet ) est nul
       { switch (hdr->frameType)//erruer si hdr est nul (msg->packet)
        {
    	  //quand le noeud reçoit un paquet de construction de la table de voisinage
    	   case mac_async_table:
    	   printf("je suis le noeud %d qui a recu le paquet du noeud %d \n",node->nodeAddr,hdr->sourceAddr);//printf plante si node est null
    //etc etc etc...
    //...
    }

Discussions similaires

  1. programme qui plante
    Par warubi dans le forum C++
    Réponses: 35
    Dernier message: 04/02/2007, 10h57
  2. Programme qui plante : seg fault
    Par Premium dans le forum C
    Réponses: 10
    Dernier message: 01/12/2006, 15h12
  3. programme qui plante. chercher/remplacer dans des fichiers.
    Par [Hugo] dans le forum Général Python
    Réponses: 2
    Dernier message: 31/10/2006, 17h10
  4. Faire un programme qui plante et noter le plantage
    Par cedricgirard dans le forum Langage
    Réponses: 9
    Dernier message: 22/03/2006, 16h36
  5. Programme qui plante
    Par harris_macken dans le forum C++
    Réponses: 1
    Dernier message: 22/05/2005, 23h50

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