+ Répondre à la discussion
Affichage des résultats 1 à 8 sur 8
  1. #1
    Nouveau Membre du Club
    Profil pro pfxxx
    Inscrit en
    novembre 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Nom : pfxxx

    Informations forums :
    Inscription : novembre 2009
    Messages : 47
    Points : 38
    Points
    38

    Par défaut la commande "next" semble bégailler

    bonjour,

    en traçant un prog en mode pas à pas avec la commande next, j'ai l'impression que gdb se mélange les pinceaux au niveau des lignes

    par exemple :

    (gdb) n
    105 int acceptClient(int family,int listener, char **from) {
    (gdb)
    109 if( family == AF_INET ) {
    (gdb)
    119 } else if( family == AF_UNIX ) {
    (gdb)
    133 return -1;
    (gdb)
    119 } else if( family == AF_UNIX ) {
    (gdb)
    123 fd = accept(listener, (struct sockaddr*)&unaddr, &len);
    (gdb)
    122 len = sizeof(unaddr);
    (gdb)
    123 fd = accept(listener, (struct sockaddr*)&unaddr, &len);
    (gdb)
    122 len = sizeof(unaddr);
    (gdb)
    123 fd = accept(listener, (struct sockaddr*)&unaddr, &len);
    (gdb)
    124 if( len > sizeof(sa_family_t) ) {

    la 1° commande visible est 'n' (next) suivi de <RETURN> pour répéter la dernière commande, c'est à dire 'next'
    GDB semble "hésiter" entre les lignes 123 et 122
    Il semble passer sur les lignes 123, 122, 123, 122, 123, 124, ...

    Mais pourquoi ces aller retours entre les lignes 122 et 123 ?

    J'avais supposé que les optimisations de gcc ne plaisaient peut être pas à GDB, aussi le prog est compilé avec "-g3 -Od" => mais ça ne change rien.

    Quelqu'un pourrait m'expliquer ce phénomène (qui est un peu pénible ...) ?

  2. #2
    Membre Expert
    Inscrit en
    mars 2005
    Messages
    865
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 865
    Points : 1 060
    Points
    1 060

    Par défaut

    Il n'y a pas un for ou un while qui traînerait à la ligne 120 ou 121 ?

  3. #3
    Nouveau Membre du Club
    Profil pro pfxxx
    Inscrit en
    novembre 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Nom : pfxxx

    Informations forums :
    Inscription : novembre 2009
    Messages : 47
    Points : 38
    Points
    38

    Par défaut

    ben non
    tout le code est affiché, il n'y a pas de ligne cachée

  4. #4
    Membre émérite
    Avatar de Pouet_forever
    Inscrit en
    octobre 2009
    Messages
    671
    Détails du profil
    Informations forums :
    Inscription : octobre 2009
    Messages : 671
    Points : 811
    Points
    811

    Par défaut

    A vue de nez comme ça tu appelles plusieurs fois ta fonction (récursive ?) et donc tu appelles plusieurs fois tes lignes (pas seulement 122 et 123 si tu regardes bien)
    Plus tu pédales moins fort, moins t'avances plus vite.

  5. #5
    Nouveau Membre du Club
    Profil pro pfxxx
    Inscrit en
    novembre 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Nom : pfxxx

    Informations forums :
    Inscription : novembre 2009
    Messages : 47
    Points : 38
    Points
    38

    Par défaut

    ???
    acceptClient() : c'est la fonction dans laquelle je suis
    accept() : c'est les sockets
    donc 2 fonctions qui n'ont rien à voir entre elles et il n'y a pas de récursivité ici

  6. #6
    Membre Expert
    Inscrit en
    mars 2005
    Messages
    865
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 865
    Points : 1 060
    Points
    1 060

    Par défaut

    Envoie ton programme.

    On n'y voit rien comme ça.

  7. #7
    Membre expérimenté Avatar de Lavock
    Inscrit en
    octobre 2009
    Messages
    560
    Détails du profil
    Informations forums :
    Inscription : octobre 2009
    Messages : 560
    Points : 595
    Points
    595

    Par défaut

    Si tu es en optimisé (-Ox), ce genre de comportement est courant... Essaye avec step pour voir si tu as le même genre de problème.

  8. #8
    Nouveau Membre du Club
    Profil pro pfxxx
    Inscrit en
    novembre 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Nom : pfxxx

    Informations forums :
    Inscription : novembre 2009
    Messages : 47
    Points : 38
    Points
    38

    Par défaut

    j'ai essayé en optimisation off => "-O0"
    c'est pareil

    je vais essayer de regarder le code généré par gcc et voir comment il place les n° de ligne pour le debugger

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •