119 votes

gdb : "Aucune table de symboles n'est chargée"

Je continue à obtenir ce message d'erreur lorsque j'essaie d'ajouter un point d'arrêt dans gdb.

J'ai utilisé ces commandes pour compiler :

gcc -g main.c utmpib2.c -o main.o
and:
cc -g main.c utmpib2.c -o main.o
and also:
g++ -g main.c utmpib2.c -o main.o

J'ai également essayé "-ggdb" au lieu de "-g" et j'obtiens toujours ce message d'erreur.

J'exécute ensuite gdb :

$gdb

Dans gdb :

(gdb)exec-file main.o
(gdb)break 59
No symbol table is loaded. Use the "file" command.

0 votes

Oh je voulais dire main.o. Je l'ai mis à jour. J'ai aussi essayé d'utiliser "-ggdb" et cela me donne toujours le même problème.

0 votes

Montrez-nous exactement comment vous invoquez gcc et gdb. Copier-coller pour éviter toute erreur.

1 votes

J'ai mis à jour mes commandes. C'est vraiment bizarre. Cela vient juste de commencer à fonctionner. Je sais qu'auparavant j'accédais à gdb en utilisant "gdb a.out" et je recevais un message d'erreur disant que a.out n'existait pas ou quelque chose comme ça. Puis je suis passé au "exec-file". Maintenant, j'ai essayé avec a.out et il est dit "This GDB was configured as "i486-linux-gnu"" et les points d'arrêt peuvent être définis.

168voto

kralex Points 390

Vous devez ajouter le paramètre supplémentaire -g, qui génère des informations de débogage au niveau de la source. Cela ressemblera à :

gcc -g prog.c

Après cela, vous pouvez utiliser gdb de la manière habituelle.

31 votes

Dans mon cas, cette réponse a résolu le problème pour moi, alors que la réponse acceptée n'a fait aucune différence.

0 votes

Ça a marché ! Ce devrait être la réponse acceptée.

78voto

Kevin Points 23308

Tout d'abord, vous disposez d'un programme entièrement compilé, et non d'un fichier objet. .o extension. Maintenant, faites attention à ce que dit le message d'erreur, il vous indique exactement comment résoudre votre problème : "Aucune table de symboles n'est chargée. Utilisez la commande "fichier". ."

(gdb) exec-file test
(gdb) b 2
No symbol table is loaded.  Use the "file" command.
(gdb) file test
Reading symbols from /home/user/test/test...done.
(gdb) b 2
Breakpoint 1 at 0x80483ea: file test.c, line 2.
(gdb) 

Ou passez simplement le programme sur la ligne de commande.

$ gdb test
GNU gdb (GDB) 7.4
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
[...]
Reading symbols from /home/user/test/test...done.
(gdb) b 2
Breakpoint 1 at 0x80483ea: file test.c, line 2.
(gdb)

0 votes

Désolé, je suis un noob gdb. Cette solution (et aucune des autres solutions de cette question) fonctionne avec gdb sur WSL sous Windows, avez-vous une suggestion à me faire ?

10voto

Charles Chow Points 67

J'ai le même problème et j'ai suivi ceci Poste cela a résolu mon problème.

Suivez les 2 étapes suivantes :

  1. Assurez-vous que le niveau d'optimisation est -O0
  2. Ajouter -ggdb lors de la compilation de votre programme

Bonne chance !

2voto

ulidtko Points 3834

Chaque fois que gcc sur la machine de compilation et gdb sur la machine d'essai ont différentes versions vous êtes peut-être confronté à incompatibilité du format des debuginfo .

Pour corriger cela, essayez de mettre à jour le format du debuginfo :

gcc -gdwarf-3 ...
gcc -gdwarf-2 ...
gcc -gstabs ...
gcc -gstabs+ ...
gcc -gcoff ...
gcc -gxcoff ...
gcc -gxcoff+ ...

Ou correspondre gdb à la gcc que vous utilisez.

1voto

Wenhe Qi Points 956

J'ai rencontré ce problème ce matin parce que j'ai utilisé le même exécutable dans DIFFERENTS OS : après avoir compilé mon programme avec gcc -ggdb -Wall test.c -o test sur mon Mac(10.15.2), j'ai exécuté gdb avec l'exécutable dans Ubuntu(16.04) dans ma VirtualBox.

Correction : recompilez avec la même commande sous Ubuntu, puis vous devriez être bon.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X