Ich erhalte immer wieder diese Fehlermeldung, wenn ich versuche, einen Haltepunkt in gdb hinzuzufügen.
Ich habe diese Befehle zum Kompilieren verwendet:
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
Ich habe auch "-ggdb" anstelle von "-g" versucht und erhalte immer noch diese Fehlermeldung.
Ich führe dann gdb aus:
$gdb
In gdb:
(gdb)exec-file main.o
(gdb)break 59
No symbol table is loaded. Use the "file" command.
Antworten:
Zunächst einmal haben Sie ein vollständig kompiliertes Programm, keine Objektdatei. Löschen Sie also die
.o
Erweiterung. Achten Sie nun darauf, was in der Fehlermeldung steht. Dort erfahren Sie genau, wie Sie Ihr Problem beheben können: "Es wird keine Symboltabelle geladen. Verwenden Sie den Befehl" Datei " ."Oder übergeben Sie das Programm einfach über die Befehlszeile.
quelle
Sie müssen den zusätzlichen Parameter -g hinzufügen, der Debug-Informationen auf Quellenebene generiert. Es wird so aussehen:
Danach können Sie gdb auf übliche Weise verwenden.
quelle
Ich habe das gleiche Problem und bin diesem Beitrag gefolgt . Er hat mein Problem gelöst.
Befolgen Sie die folgenden 2 Schritte:
-O0
-ggdb
beim Kompilieren Ihres Programms ein Flag hinzuViel Glück!
quelle
Wenn
gcc
auf dem Kompilierungscomputer undgdb
auf dem Testcomputer unterschiedliche Versionen vorhanden sind , kann es zu Inkompatibilitäten im Debuginfo-Format kommen .Versuchen Sie, das Debuginfo-Format herunterzustufen, um dies zu beheben:
Oder passen Sie
gdb
zu dem, dengcc
Sie verwenden.quelle
Ich bin heute Morgen auf dieses Problem gestoßen, weil ich dieselbe ausführbare Datei in VERSCHIEDENEN Betriebssystemen verwendet habe: nach dem Kompilieren meines Programms mit
gcc -ggdb -Wall test.c -o test
gestoßen, auf meinem Mac (10.15.2) kompiliert hatte, lief ichgdb
mit der ausführbaren Datei in Ubuntu (16.04) in meiner VirtualBox.Fix: Mit dem gleichen Befehl unter Ubuntu neu kompilieren, dann solltest du gut sein.
quelle