9

我在 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/

但是我仍然不明白该怎么做。有人可以帮忙吗。谢谢!

4

2 回答 2

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中的二进制文件。

于 2013-10-03T02:52:52.220 回答
2

Gdb 通常随工具链一起提供。

您可能正在使用先前工具链附带的 gdb。采用

  which gdb

发现您正在使用哪个 gdb。

要调试使用新编译器编译的程序,您必须使用新的 gdb,无论它在哪里。

于 2013-10-02T10:38:31.657 回答