gdb: “Keine Symboltabelle geladen”

Lesezeit: 3 Minuten

Benutzeravatar von user994165
Benutzer994165

Ich erhalte immer 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 bekomme immer noch diese Fehlermeldung.

Ich führe dann gdb aus:

$gdb

Im gdb:

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

  • Oh, ich meinte main.o. Ich habe es aktualisiert. Ich habe auch versucht, “-ggdb” zu verwenden, und es gibt mir immer noch das gleiche Problem.

    – Benutzer994165

    12. Februar 2012 um 1:51 Uhr

  • Zeigen Sie uns genau, wie Sie gcc und gdb aufrufen. Kopieren und einfügen, um Fehler zu vermeiden.

    – Piotr Praszmo

    12. Februar 2012 um 1:53 Uhr

  • Ich habe meine Befehle aktualisiert. Das ist wirklich seltsam. Es hat gerade angefangen zu arbeiten. Ich weiß, dass ich zuvor mit “gdb a.out” auf gdb zugegriffen habe und eine Fehlermeldung erhalten habe, dass a.out nicht existiert oder so. Dann bin ich in die “exec-Datei” gewechselt. Jetzt habe ich es mit a.out versucht und es heißt “Diese GDB wurde als “i486-linux-gnu” konfiguriert und Haltepunkte können gesetzt werden.

    – Benutzer994165

    12. Februar 2012 um 2:08 Uhr

  • Oh duh, ich habe die falsche Datei a.out angegeben. Ich habe ein gdb-Tutorial befolgt, ohne daran zu denken, den Dateinamen in meinen eigenen zu ändern.

    – Benutzer994165

    12. Februar 2012 um 2:12 Uhr

Benutzeravatar von alxndr
Alxndr

Sie müssen den zusätzlichen Parameter -g hinzufügen, der Debug-Informationen auf Quellebene generiert. Es wird so aussehen:

gcc -g prog.c

Danach können Sie gdb auf die übliche Weise verwenden.

Kevins Benutzeravatar
Kevin

Zunächst einmal haben Sie ein vollständig kompiliertes Programm, keine Objektdatei, also löschen Sie die .o Verlängerung. Achten Sie nun darauf, was die Fehlermeldung sagt, sagt sie Ihnen exakt So beheben Sie Ihr Problem: “Keine Symboltabelle geladen. Verwenden Sie den Befehl “Datei”..”

(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) 

Oder übergeben Sie das Programm einfach auf der Befehlszeile.

$ 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) 

Ich habe das gleiche Problem und bin dem gefolgt Postes hat mein Problem gelöst.

Befolgen Sie die folgenden 2 Schritte:

  1. Stellen Sie sicher, dass die Optimierungsstufe ist -O0
  2. Hinzufügen -ggdb Flag beim Kompilieren Ihres Programms

Viel Glück!

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 In meinem Mac (10.15.2) lief ich gdb mit der ausführbaren Datei in Ubuntu (16.04) in meiner VirtualBox.

Fix: mit demselben Befehl unter Ubuntu neu kompilieren, dann sollte es gut sein.

Wann auch immer gcc auf der Kompilierungsmaschine und gdb auf der Prüfmaschine haben unterschiedliche Versionenstehen Sie möglicherweise vor Inkompatibilität des Debuginfo-Formats.

Um das zu beheben, versuchen Sie, das Debuginfo-Format herunterzustufen:

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

Oder passen gdb zum gcc Sie verwenden.

1421510cookie-checkgdb: “Keine Symboltabelle geladen”

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy