|
Publicité ' | ||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() pfxxx Inscription : novembre 2009 Messages : 45 ![]() |
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 ...) ? |
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() Inscription : mars 2005 Messages : 860 ![]() |
Il n'y a pas un for ou un while qui traînerait à la ligne 120 ou 121 ?
|
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() pfxxx Inscription : novembre 2009 Messages : 45 ![]() |
ben non
tout le code est affiché, il n'y a pas de ligne cachée |
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() Inscription : octobre 2009 Messages : 671 ![]() |
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. |
|
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() pfxxx Inscription : novembre 2009 Messages : 45 ![]() |
???
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 |
|
|
00
|
|
|
#6 |
|
Membre émérite
![]() Inscription : mars 2005 Messages : 860 ![]() |
Envoie ton programme.
On n'y voit rien comme ça. |
|
|
00
|
|
|
#7 |
|
Membre expérimenté
![]() Inscription : octobre 2009 Messages : 560 ![]() |
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.
|
|
|
00
|
|
|
#8 |
|
Nouveau Membre du Club
![]() pfxxx Inscription : novembre 2009 Messages : 45 ![]() |
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 |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com