web-dev-qa-db-fra.com

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

Je continue à recevoir ce message d'erreur en essayant 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 aussi essayé "-ggdb" au lieu de "-g" et j'obtiens toujours ce message d'erreur.

J'exécute alors gdb:

$gdb

En gdb:

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

Tout d’abord, vous disposez d’un programme entièrement compilé, et non d’un fichier objet; supprimez donc le fichier .o _ extension. Maintenant, faites attention à ce que le message d'erreur dit, il vous dit 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 en 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) 
51
Kevin

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

gcc -g prog.c

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

122
kralex

J'ai le même problème et j'ai suivi ceci Post , 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 flag lorsque vous compilez votre programme

Bonne chance!

8
Charles Chow

Chaque fois que gcc sur la machine de compilation et gdb sur la machine de test ont versions différentes, vous pouvez être confronté à incompatibilité du format debuginfo.

Pour résoudre ce problème, essayez de rétrograder le format debuginfo:

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

Ou associez gdb au gcc que vous utilisez.

0
ulidtko