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 .o
vallen. 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:
- Zorg ervoor dat het optimalisatieniveau
-O0
- Voeg de vlag
-ggdb
toe bij het compileren van uw programma
is
Veel succes!
Antwoord 4
Telkens wanneer gcc
op de compilatiemachine en gdb
op 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 gdb
met de gcc
die 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 test
op mijn Mac (10.15.2) , ik heb gdb
uitgevoerd met het uitvoerbare bestand in Ubuntu (16.04) in mijn VirtualBox.
Oplossing: hercompileer met hetzelfde commando onder Ubuntu, dan zou het goed moeten zijn.