gpt4 book ai didi

c++ - 使用 GDB 的 Python pretty-print 不支持 map 的索引运算符 []

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:15:00 24 4
gpt4 key购买 nike

我在使用 GDB 检查 std::map 类型变量时遇到了麻烦。在 GDB 中,我通常使用 libstd-c++ 存储库 ( https://sourceware.org/gdb/wiki/STLSupport ) 中的 pretty-print 来打印 STL 容器中的项目。 pretty-print 可以很好地处理像 vector 这样的简单容器,但它似乎并不完全支持 map 。

要在 map 中查找具有给定键的项,我尝试使用 operator[],但 GDB 报告了以下错误消息,“Could not find operator[]”。

是不是因为pretty-printer不支持 map ?还是我遗漏了什么?

谢谢

最佳答案

pretty-print 只是一个显示功能。它们不影响评估。正如您所发现的,这有时会让人感到困惑。

在您的情况下,gdb 正在尝试调用正确的 operator[]。但是,您的编译器已将其优化掉——这在 C++ 程序中很常见。

一个选项可能是使用 -fkeep-inline-functions 进行编译。这将导致发出一个外联拷贝。但是,这并不总是可取的。

另一种方法可能是使用 gdb 的相对较新的 xmethod 功能 (see the relevant manual page) 编写您自己的。一些用于 libstdc++ 的 xmethods 已经进入了 GCC 树,所以您的答案可能就像升级 GCC 一样简单。

关于c++ - 使用 GDB 的 Python pretty-print 不支持 map 的索引运算符 [],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34894381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com