【问题标题】:C++ app on Ubuntu. After installing gcc 4.8.1 the gdb does not workUbuntu 上的 C++ 应用程序。安装 gcc 4.8.1 后 gdb 不起作用
【发布时间】:2013-10-02 03:51:44
【问题描述】:

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

【问题讨论】:

  • 或者,您可以将-gdwarf-2 传递给编译器以生成与 GDB 7.4 兼容的调试符号。

标签: gcc gdb


【解决方案1】:

我也遇到了同样的问题,并且能够解决。

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

【讨论】:

  • 你知道如何将它安装在常规的 /usr/bin 中吗?
  • 安装在 /usr 而不是 /usr/local: ./configure --prefix=/usr
【解决方案2】:

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

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

  which gdb

发现您正在使用的 gdb。

要调试使用新编译器编译的程序,您必须使用新的 gdb,无论它是什么。

【讨论】:

    猜你喜欢
    • 2016-11-19
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多