gdb:“没有加载符号表”

时间:2012-02-12 01:38:04

标签: c 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中:

(gdb)exec-file main.o
(gdb)break 59
No symbol table is loaded. Use the "file" command.

5 个答案:

答案 0 :(得分:118)

您必须添加额外的参数-g,它会生成源级调试信息。它看起来像:

gcc -g prog.c

之后你可以用普通的方式使用gdb。

答案 1 :(得分:50)

首先,您所拥有的是完全编译的程序,而不是目标文件,因此请删除.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) 

答案 2 :(得分:8)

我遇到了同样的问题,我按照Post进行了操作,它解决了我的问题。

遵循以下两个步骤:

  1. 确保优化级别为-O0
  2. 编译程序时添加-ggdb标志
  3. 祝你好运!

答案 3 :(得分:0)

每当编译机上的gcc和测试计算机上的gdb具有不同版本时,您可能面临 debuginfo格式不兼容。< / p>

要解决此问题,请尝试降级debuginfo格式:

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

或者将gdb与您正在使用的gcc相匹配。

答案 4 :(得分:0)

今天早上我遇到了这个问题,因为我在不同的操作系统中使用了相同的可执行文件:在Mac(10.15.2)中使用gcc -ggdb -Wall test.c -o test编译程序后,我在Ubuntu中使用了可执行文件gdb (16.04)在我的VirtualBox中。

修复:在Ubuntu下使用相同的命令重新编译,那么你应该很好。