GDB: "Таблица символов не загружена" - PullRequest
79 голосов
/ 12 февраля 2012

Я получаю сообщение об ошибке при попытке добавить точку останова в 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)exec-file main.o
(gdb)break 59
No symbol table is loaded. Use the "file" command.

Ответы [ 4 ]

120 голосов
/ 09 октября 2012

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

gcc -g prog.c

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

51 голосов
/ 12 февраля 2012

Прежде всего, у вас есть полностью скомпилированная программа, а не объектный файл, поэтому удалите расширение .o.Теперь обратите внимание на то, что в сообщении об ошибке сообщается, точно , как решить вашу проблему: «Таблица символов не загружена. Используйте команду« 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) 

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

$ 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) 
8 голосов
/ 23 августа 2014

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

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

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

Удачи!

0 голосов
/ 13 марта 2018

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

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

gcc -gdwarf-3 ...
gcc -gdwarf-2 ...
gcc -gstabs ...
gcc -gstabs+ ...
gcc -gcoff ...
gcc -gxcoff ...
gcc -gxcoff+ ...

Или сопоставьте gdb с gcc, который вы используете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...