gdb:“未加载符号表”

问题描述 投票:0回答:6

尝试在 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.
c gdb
6个回答
166
投票

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

gcc -g prog.c

之后就可以正常使用gdb了。


77
投票

首先,您拥有的是一个完全编译的程序,而不是目标文件,因此请删除

.o
扩展名。现在,请注意错误消息的内容,它准确地告诉您如何解决问题:“未加载符号表。使用“文件”命令。” (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)



10
投票
帖子

,它解决了我的问题。 请执行以下 2 个步骤:

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


2
投票
gcc

和测试机上的

gdb
不同的版本
时,您可能会面临debuginfo格式不兼容 要解决此问题,请尝试降级 debuginfo 格式:

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

或将 
gdb

与您正在使用的

gcc
匹配。
    


1
投票
gcc -ggdb -Wall test.c -o test

编译我的程序后,我在 VirtualBox 中使用 Ubuntu(16.04) 中的可执行文件运行

gdb
.

修复:在Ubuntu下使用相同的命令重新编译,然后你应该就好了。


0
投票

(gdb) symbol-file myapp.exe (gdb) target exec myapp.exe (gdb) run

	
© www.soinside.com 2019 - 2024. All rights reserved.