gdb: Er is geen symbooltabel geladen

Ik krijg steeds deze foutmelding wanneer ik probeer een onderbrekingspunt toe te voegen in gdb.

Ik heb deze commando’s gebruikt om te compileren:

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

Ik heb ook “-ggdb” geprobeerd in plaats van “-g” en ik krijg nog steeds die foutmelding.

Ik voer dan gdb uit:

$gdb

In gdb:

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

Antwoord 1, autoriteit 100%

Allereerst heb je een volledig gecompileerd programma, geen objectbestand, dus laat de extensie .ovallen. Let nu op wat de foutmelding zegt, het vertelt u precieshoe u uw probleem kunt oplossen: “Er is geen symbooltabel geladen. Gebruik de opdracht “file”.”

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

Of geef het programma gewoon door op de opdrachtregel.

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

Antwoord 2, autoriteit 99%

Je moet een extra parameter -g toevoegen, die foutopsporingsinformatie op bronniveau genereert. Het ziet er als volgt uit:

gcc -g prog.c

Daarna kunt u gdb op de gewone manier gebruiken.


Antwoord 3, autoriteit 14%

Ik heb hetzelfde probleem en ik heb deze Postgevolgd, het loste mijn probleem op.

Volg de volgende 2 stappen:

  1. Zorg ervoor dat het optimalisatieniveau -O0
  2. is

  3. Voeg de vlag -ggdbtoe bij het compileren van uw programma

Veel succes!


Antwoord 4

Telkens wanneer gccop de compilatiemachine en gdbop de testmachine verschillende versieshebben, kan het zijn dat u te maken krijgt met debuginfo-indelingsincompatibiliteit .

Probeer het debuginfo-formaat te downgraden om dat op te lossen:

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

Of vergelijk gdbmet de gccdie u gebruikt.


Antwoord 5

Ik kwam dit probleem vanmorgen tegen omdat ik hetzelfde uitvoerbare bestand in VERSCHILLENDE besturingssystemen gebruikte: na het compileren van mijn programma met gcc -ggdb -Wall test.c -o testop mijn Mac (10.15.2) , ik heb gdbuitgevoerd met het uitvoerbare bestand in Ubuntu (16.04) in mijn VirtualBox.

Oplossing: hercompileer met hetzelfde commando onder Ubuntu, dan zou het goed moeten zijn.

Other episodes