GDB警告:在0x7ffff7ffd000处添加的符号文件系统提供的DSO中找不到可加载部分

时间:2013-08-31 06:29:06

标签: linux gcc gdb

abijith bufferOverFlow $ gdb a.out
GNU gdb (GDB) 7.6
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/abijith/Project/Security/bufferOverFlow/a.out...done
(gdb) r
Starting program: /home/abijith/Projec2qt/Security/bufferOverFlow/a.out 
warning: no loadable sections found in added symbol-file system-supplied 
SO at 0x7ffff7ffd000

我写了一个打印字符串并返回的简单程序。我可以通过输入“ ./ a.out ”直接执行它。但是当我在gdb中运行它时,会发生上述错误。我尝试使用“ -g ”标志编译代码而不使用它。两次都给出了相同的结果。任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

那条消息,

warning: no loadable sections found in added symbol-file system-supplied 

所以在0x7ffff7ffd000

是一个警告,不会阻止GCC运行a.out;至少,它不应该。

据说a.out使用的动态加载对象缺少符号。关于a.out本身没什么。

您可以尝试将a.out构建为静态可执行文件;像这样:

gcc -static a.c

显然,添加所需的任何其他编译器参数。

作为静态可执行文件,您不会从GCC收到警告。这些符号可能仍然缺失,但不应影响程序的执行。

答案 1 :(得分:2)

看来这是glibc或gdb中的一个错误(取决于你想要指责的地方)。它显然是无害的 - gdb可以正常工作。

它是由Linux内核在其运行的二进制文件上执行的一些魔力引起的。有关详细信息,请参阅Debian bug report 738702和原始gdb bug report 13097

Debian最近应用了一个补丁来解决这个问题,因此Debian上的GDB 7.7.1不再出现这个问题。