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?
Juste deviner, mais _DictionaryTree_getNodeList est-il dans un autre fichier qui n'a pas été compilé avec -g?
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.
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é.
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
).
J'ai eu le même problème bien que je compile déjà avec -g2
. Le changer en -g3
a fait l'affaire.
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.
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