我在Ubuntu 12.04上安装了gcc 4.8.1(我必须添加ppa才能这样做)现在gdb显示以下消息:
无法找到动态链接断点功能。 GDB将无法调试共享库初始化程序 并跟踪显式加载的动态代码。不能加载5个库的共享库符号,例如/usr/lib/x86_64-linux-gnu/libstdc++.so.6。 使用“info sharedlibrary”命令查看完整列表。 你需要“set solib-search-path”或“set sysroot”吗?
我做谷歌,我发现这篇文章最能回答我的问题: http://www.fayewilliams.com/2013/01/31/gdb-unable-to-find-dynamic-linker-breakpoint-function/
然而,我仍然不明白该怎么做。有人可以帮忙吗THX!答案 0 :(得分:13)
我也有同样的问题,并且能够解决它。
我从这个PPA(https://launchpad.net/~ubuntu-toolchain-r/+archive/test)安装了最后一个“稳定”版本的GCC(4.8.1),一切都很完美,直到我不得不处理调试问题。您可以注意到,在此PPA中,工具链未提供用于处理编译器升级的GDB的更新版本。事实上,我没有发现任何PPA提供更新版本的GDB。
在我的情况下,我解决了从其网站(http://www.sourceware.org/gdb/)下载并安装最新稳定版GDB(7.6)的情况。这个版本的GDB能够解析这些符号,并为我提供使用Gcc 4.8.1生成的二进制文件的所有必要信息,即使我使用新的c ++ 11标准(使用-std = c ++编译的代码) 11旗)。
考虑到默认情况下手动安装此新版本的GDB将在 / usr / local / bin / gdb 中安装二进制文件。
答案 1 :(得分:2)
Gdb通常随工具链一起提供。
您可能正在使用之前工具链附带的gdb。使用
which gdb
发现您正在使用的gdb。
要调试使用新编译器编译的程序,必须使用新的gdb,无论它是什么。