首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过libstdc++调试

通过libstdc++调试
EN

Stack Overflow用户
提问于 2013-04-15 20:11:53
回答 1查看 6.6K关注 0票数 12

我在GNU/Linux上使用gcc,安装了libc和libstd++的调试文件和头文件。但我不知道如何告诉gdb使用它们的源代码,特别是调试到libstd++中。libstdc++本身的源代码似乎是以一个复杂的结构提供的。我认为目录命令是正确的选择。我在这里使用Debian/Ubuntu,并将带有apt源libstdc++6的源代码下载到我的主目录中。

我非常肯定,我不需要采取特殊的步骤,这与Fedora (几年前)。也许Fedora是以一种特殊的方式为这个做准备的。因此,我将很高兴得到一般的指示,适合每一次分发。

谢谢

更新

我发现,除了-D_GLIBCXX_DEBUG之外,我还需要使用-g进行编译,所以编译命令看起来像$ g++ -o test test.cpp -g -D_GLIBCXX_DEBUG

此外,我还收到了关于丢失漂亮打印机的警告,我解决了这个问题,如下所述:http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug.html#debug.gdb

现在我可以调试到libstdc++了,但是我总是收到这样的消息:

代码语言:javascript
复制
Breakpoint 1, main () at test.cpp:9
9       string str = "str";
(gdb) s
std::allocator<char>::allocator (this=0x7fffffffe1e0)
    at /build/buildd/gcc-4.7-4.7.2/build/x86_64-linux-gnu/libstdc++-v3/include/bits/allocator.h:104
104 /build/buildd/gcc-4.7-4.7.2/build/x86_64-linux-gnu/libstdc++-v3/include/bits/allocator.h: No such file or directory.
(gdb) s
std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string (
    this=0x7fffffffe1c0, __s=0x402930 "str", __a=...)
    at /usr/include/c++/4.7/bits/basic_string.tcc:217
217                    __s + npos, __a), __a)

我不需要将gdb中的目录设置为我下载的源代码(我认为它在我的主目录中搜索)。因此,我想我需要一个不同的命令来修复这个问题,并找到了"set替代路径“,并将其指向/home/username/gcc-4.7-4.7.2/gcc-4.7.2/libstdc++-v3,但是我没有工作。为什么gdb要在完全错误的地方寻找分配程序.h

EN

回答 1

Stack Overflow用户

发布于 2017-01-22 06:51:46

首先找出来源:- https://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.html

稍后,用libstdc++将其设置为DEBUG_FLAGS编译它。

然后,尝试使用gdb进行调试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16023934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档