web-dev-qa-db-fra.com

Pourquoi ai-je le message "Pas à pas jusqu'à la sortie... Qui ne contient pas de numéro de ligne" dans GDB?

J'ai compilé mon programme C avec gcc 4.4.1 en utilisant le drapeau -g, mais lorsque j'essaie de parcourir l'une de mes fonctions dans gdb version 7.0 , le message suivant s'affiche: 

"Single stepping until exit from function _DictionaryTree_getNodeList, 
which has no line number information."

Quelqu'un peut-il me dire pourquoi cela se passe?

37
Steven Oxley

Juste deviner, mais _DictionaryTree_getNodeList est-il dans un autre fichier qui n'a pas été compilé avec -g?

30
Arthur Kalliokoski

J'ai eu le même problème mais dans mon cas, ajouter -g au compilateur n'était pas suffisant, alors j'ai utilisé -ggdb comme suggéré par Manav.

9
Arild

Dans mon cas, le problème était la version asymétrique entre gcc et gdb.

Après avoir atterri ici après une recherche et aucune de ces réponses ne correspondait à ma situation, j’ai compris que (à cause des alias/liens symboliques/Makefile/variables d’environnement) j’utilisais accidentellement un nouveau GCC (4.8.x) et un ancien GDB (7.2). Le passage à une version plus récente de GDB (7.8) a résolu le problème. Pour une raison quelconque, utiliser un nouveau GCC et un ancien GDB n'a pas fonctionné.

6
hoc_age

J'ai eu ce message d'erreur aussi mais la source de mon problème était différente. Si quelqu'un a toujours des problèmes, assurez-vous que vous avez #include <stdio.h> dans votre fichier, avec les crochets appropriés autour de stdio.h (le message texte ne s'afficherait pas si je l'avais autour de stdio.h).

1
user3916997

J'ai eu le même problème bien que je compile déjà avec -g2. Le changer en -g3 a fait l'affaire.

0
richar8086

J'ai eu le même problème lorsque j'ai compilé un fichier à l'aide de l'option -g et sans l'option -g . Pour l'un des fichiers, le gdb a montré le numéro de ligne sans aucun problème (même s'il a été compilé sans l'option -g). . Et pour l'autre fichier, je devais mentionner explicitement -g flag ...

Toutes les idées quant à savoir si le fichier source peut être chargé au moment de l'exécution dans GDB avec références croisées serait une bonne solution ... en mappant le fichier lignes aux adresses: D.

0
ravi.zombie

J'ai eu ce problème parce que je déboguais une bibliothèque partagée sans indiquer à LD_LIBRARY_PATH de corriger l'emplacement avec les états finaux de débogage. 

vous pouvez utiliser

export LD_LIBRARY_PATH=<location of the debug build of the .so file>:$LD_LIBRARY_PATH

Espérons que cela soit utile à quelqu'un

0
Hans