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


93

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

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

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

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

В gdb:


О, я имел в виду 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, тогда все будет хорошо.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.