gdb: «Таблица символов не загружена»

93

Я продолжаю получать это сообщение об ошибке при попытке добавить точку останова в gdb.

Я использовал эти команды для компиляции:

Я также пробовал «-ggdb» вместо «-g», но все равно получаю это сообщение об ошибке.

Затем я выполняю gdb:

В gdb:

user994165
источник
О, я имел в виду main.o. Я его обновил. Я также пробовал использовать «-ggdb», но проблема все еще возникает.
user994165
Покажите нам, как именно вы вызываете gcc и gdb. Копипаст, чтобы избежать ошибок.
Петр Прасмо
1
Я обновил свои команды. Это действительно странно. Это только начало работать. Я знаю, что раньше я обращался к gdb с помощью «gdb a.out» и получал сообщение об ошибке о том, что a.out не существует или что-то в этом роде. Потом перешел на "exec-файл". Теперь я попробовал с a.out, и он говорит: «Этот GDB был настроен как« i486-linux-gnu »», и можно установить точки останова.
user994165
о да, я указывал не тот файл a.out. Я следил за учебником по gdb, не думая изменить имя файла на свое.
user994165

Ответы:

61

Во-первых, у вас есть полностью скомпилированная программа, а не объектный файл, поэтому откажитесь от .oрасширения. Теперь обратите внимание на то, что говорится в сообщении об ошибке, в нем указано, как именно решить вашу проблему: «Таблица символов не загружена. Используйте команду« файл » ».

Или просто передайте программу в командной строке.

Кевин
источник
Извините, я новичок в gdb. Это решение (и ни одно из других решений по этому вопросу) работает с gdb на WSL в Windows, есть ли у вас какие-либо предложения для меня?
Aderchox
142

Вам необходимо добавить дополнительный параметр -g, который генерирует отладочную информацию на уровне исходного кода. Это будет выглядеть так:

После этого вы можете использовать gdb обычным образом.

Кралекс
источник
27
В моем случае этот ответ решил проблему для меня, тогда как принятый ответ не имел никакого значения.
Frankster 03
8

У меня такая же проблема, и я подписался на этот пост , он решил мою проблему.

Выполните следующие 2 шага:

  1. Убедитесь, что уровень оптимизации -O0
  2. Добавить -ggdbфлаг при компиляции вашей программы

Удачи!

Чарльз Чоу
источник
0

Если gccна машине компиляции и gdb на машине тестирования есть разные версии , вы можете столкнуться с несовместимостью формата debuginfo .

Чтобы исправить это, попробуйте понизить формат debuginfo:

Или сопоставьте gdbс тем, gccчто вы используете.

Улидтко
источник
0

Я столкнулся с этой проблемой сегодня утром, потому что я использовал тот же исполняемый файл в РАЗНЫХ ОС: после компиляции моей программы gcc -ggdb -Wall test.c -o testна моем Mac (10.15.2) я запустил gdbисполняемый файл в Ubuntu (16.04) в моем VirtualBox.

Исправление: перекомпилируйте с той же командой под Ubuntu, тогда все будет хорошо.

Вэньхэ Ци
источник