Wciąż otrzymuję ten komunikat o błędzie podczas próby dodania punktu przerwania w gdb.
Użyłem tych poleceń do kompilacji:
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
Próbowałem też „-ggdb” zamiast „-g” i nadal otrzymuję ten komunikat o błędzie.
Następnie wykonuję gdb:
$gdb
W gdb:
(gdb)exec-file main.o
(gdb)break 59
No symbol table is loaded. Use the "file" command.
Odpowiedzi:
Przede wszystkim masz w pełni skompilowany program, a nie plik obiektowy, więc usuń
.o
rozszerzenie. Teraz zwróć uwagę na to, co mówi komunikat o błędzie, który dokładnie informuje , jak rozwiązać problem: „Nie załadowano żadnej tablicy symboli. Użyj polecenia„ plik ” .”(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)
Lub po prostu przekaż program w wierszu poleceń.
$ 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)
źródło
Musisz dodać dodatkowy parametr -g, który generuje informacje debugowania na poziomie źródła. Będzie wyglądać następująco:
Następnie możesz używać gdb w zwykły sposób.
źródło
Mam ten sam problem i śledziłem ten post , rozwiązałem mój problem.
Wykonaj następujące 2 kroki:
-O0
-ggdb
flagę podczas kompilacji programuPowodzenia!
źródło
Za każdym razem, gdy
gcc
na maszynie kompilującej igdb
na maszynie testującej mają różne wersje , możesz napotkać niezgodność formatu debuginfo .Aby to naprawić, spróbuj obniżyć format informacji o debugowaniu:
gcc -gdwarf-3 ... gcc -gdwarf-2 ... gcc -gstabs ... gcc -gstabs+ ... gcc -gcoff ... gcc -gxcoff ... gcc -gxcoff+ ...
Lub dopasuj
gdb
do tegogcc
, którego używasz.źródło
Spotkałem się z tym problemem dziś rano, ponieważ korzystałem z tego samego pliku wykonywalnego w RÓŻNYCH systemach operacyjnych: po skompilowaniu programu
gcc -ggdb -Wall test.c -o test
na komputerze Mac (10.15.2) uruchomiłemgdb
plik wykonywalny w Ubuntu (16.04) w moim VirtualBox.Poprawka: skompiluj ponownie za pomocą tego samego polecenia pod Ubuntu, wtedy powinieneś być dobry.
źródło