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

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 

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

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

那个消息,

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

SO在0x7ffff7ffd000

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

这是说,有一个动态加载的对象使用a.out缺少符号。 没有关于a.out本身。

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

 gcc -static ac 

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

作为一个静态的可执行文件,你不会从GCC得到这个警告。 这些符号可能仍然会丢失,但不应该影响程序的执行。

看来这是glibc或gdb中的一个错误(取决于你想把责任放在哪里)。 这显然是无害的 – gdb会正常工作。

这是由Linux内核在运行的二进制文件上执行的一些魔法造成的。 有关详细信息,请参阅Debian错误报告738702和原始gdb错误报告13097 。

有一个补丁可以解决这个问题,Debian最近应用了这个补丁,所以Debian上的GDB 7.7.1不再出现这个问题。