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 ensuite gdb:
$gdb
Dans gdb:
(gdb)exec-file main.o
(gdb)break 59
No symbol table is loaded. Use the "file" command.
Réponses:
Tout d'abord, ce que vous avez est un programme entièrement compilé, pas un fichier objet, alors supprimez l'
.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 " ."Ou passez simplement le programme sur la ligne de commande.
la source
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 à:
Après cela, vous pouvez utiliser gdb de manière courante.
la source
J'ai le même problème et j'ai suivi ce post , cela a résolu mon problème.
Suivez les 2 étapes suivantes:
-O0
-ggdb
indicateur lors de la compilation de votre programmeBonne chance!
la source
Chaque fois que
gcc
la machine de compilation etgdb
la machine de test ont des versions différentes , vous pouvez être confronté à une incompatibilité de format debuginfo .Pour résoudre ce problème, essayez de rétrograder le format debuginfo:
Ou correspondre
gdb
à celuigcc
que vous utilisez.la source
J'ai rencontré ce problème ce matin car j'ai utilisé le même exécutable dans DIFFÉRENTS OS: après avoir compilé mon programme avec
gcc -ggdb -Wall test.c -o test
dans mon Mac (10.15.2), j'ai courugdb
avec l'exécutable d'Ubuntu (16.04) dans ma VirtualBox.Correction: recompilez avec la même commande sous Ubuntu, alors vous devriez être bon.
la source