GDB: "Таблица символов не загружена"
Я продолжаю получать это сообщение об ошибке при попытке добавить точку останова в 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 ответа
Прежде всего, у вас есть полностью скомпилированная программа, а не объектный файл, поэтому отбросьте .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)
Вы должны добавить дополнительный параметр -g, который генерирует отладочную информацию на уровне источника. Это будет выглядеть так:
gcc -g prog.c
После этого вы можете использовать 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, тогда все будет хорошо.