Я продолжаю получать это сообщение об ошибке при попытке добавить точку останова в gdb.
Я использовал эти команды для компиляции:
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
Я также пробовал «-ggdb» вместо «-g», но все равно получаю это сообщение об ошибке.
Затем я выполняю gdb:
$gdb
В gdb:
(gdb)exec-file main.o
(gdb)break 59
No symbol table is loaded. Use the "file" command.
Ответы:
Во-первых, у вас есть полностью скомпилированная программа, а не объектный файл, поэтому откажитесь от
.o
расширения. Теперь обратите внимание на то, что говорится в сообщении об ошибке, в нем указано, как именно решить вашу проблему: «Таблица символов не загружена. Используйте команду« файл » ».(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)
Или просто передайте программу в командной строке.
$ 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)
источник
Вам необходимо добавить дополнительный параметр -g, который генерирует отладочную информацию на уровне исходного кода. Это будет выглядеть так:
После этого вы можете использовать gdb обычным образом.
источник
У меня такая же проблема, и я подписался на этот пост , он решил мою проблему.
Выполните следующие 2 шага:
-O0
-ggdb
флаг при компиляции вашей программыУдачи!
источник
Если
gcc
на машине компиляции иgdb
на машине тестирования есть разные версии , вы можете столкнуться с несовместимостью формата debuginfo .Чтобы исправить это, попробуйте понизить формат debuginfo:
gcc -gdwarf-3 ... gcc -gdwarf-2 ... gcc -gstabs ... gcc -gstabs+ ... gcc -gcoff ... gcc -gxcoff ... gcc -gxcoff+ ...
Или сопоставьте
gdb
с тем,gcc
что вы используете.источник
Я столкнулся с этой проблемой сегодня утром, потому что я использовал тот же исполняемый файл в РАЗНЫХ ОС: после компиляции моей программы
gcc -ggdb -Wall test.c -o test
на моем Mac (10.15.2) я запустилgdb
исполняемый файл в Ubuntu (16.04) в моем VirtualBox.Исправление: перекомпилируйте с той же командой под Ubuntu, тогда все будет хорошо.
источник