尝试在 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.
您必须添加额外的参数-g,它会生成源代码级别的调试信息。它看起来像:
gcc -g prog.c
之后就可以正常使用gdb了。
首先,您拥有的是一个完全编译的程序,而不是目标文件,因此请删除
.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)
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
编译我的程序后,我在 VirtualBox 中使用 Ubuntu(16.04) 中的可执行文件运行
gdb
.修复:在Ubuntu下使用相同的命令重新编译,然后你应该就好了。
(gdb) symbol-file myapp.exe
(gdb) target exec myapp.exe
(gdb) run