如何使用GDB跟踪C++库?

如何使用GDB跟踪C++库?

最近想用 GDB 调试我的 C++ 程序。但是我发现当我使用 CTRL+X+A 查看程序源代码时,它无法显示 C++ 的库代码。例如,当我想跟踪“cout”时,它不会显示类代码,只是跳过“cout”这一行,那么,我应该怎么做才能跟踪 C++ 库?我应该像安装源 eglibc 一样安装 libstdc++ 的源代码包吗?

这是示例 C++ 程序的代码:

    #include <iostream>
    int main(void)
    {
        std::cout << "Hello World!" << std::endl;
        return 0;
    }

遵守:

g++ test.cpp -g

更新

好的,我已经安装了 gcc 源文件。但是当我运行 gdb 时,它会在 /build/buildd/gcc-4.8-4.8.2/ 中搜索符号……这与默认的 gcc 源文件名不匹配。并且 gdb 的默认路径与 gcc 的目录不同。例如,当 gdb 加载 'cout' 时,它会在 中搜索/build/buildd/gcc-4.8-4.8.2/build/x86_64-linux-gnu/libstdc++-v3/include。但默认值是/build/buildd/gcc-4.8.2/libstdc++-v3/include/std,如何解决这个问题?

GCC 源文件安装如下:

sudo apt-get install gcc-4.8-source

(当我运行时sudo apt-get source libstdc++,它会建议这样)然后:

sudo tar -C /build/buildd -xf /usr/src/gcc-4.8/gcc-4.8.2.tar.xz

顺便说一句,似乎有一个相同的错误https://bugs.launchpad.net/ubuntu/+source/gdb/+bug/921839

答案1

您需要debugging files使用的 stdlibc++ 软件包,以及可选的源文件。它们可通过软件包管理器或 获取apt-get

相关内容