使用 GDB 的 Python 漂亮打印不支持地图的索引运算符 []
Python pretty printing with GDB does not support map's indexing operator []
我在使用 GDB 检查 std::map 类型变量时遇到麻烦。在 GDB 中,我通常使用 libstd-c++ 存储库 (https://sourceware.org/gdb/wiki/STLSupport) 中的漂亮打印机来打印 STL 容器中的项目。漂亮的打印机可以很好地处理像vector这样的简单容器,但它似乎并不完全支持map。
要在 map 中查找具有给定键的项目,我尝试使用 operator[],但 GDB 报告了以下错误消息"找不到运算符 []"。
是因为漂亮的打印机缺乏对地图的支持吗? 还是我错过了什么?
谢谢
漂亮的
打印机只是一个显示功能。 它们不会影响评估。 正如您所发现的,这有时会令人困惑。
在您的情况下,gdb 正在尝试调用正确的operator[]
。 但是,您的编译器已经对其进行了优化 - 这在C++程序中很常见。
一种选择可能是使用 -fkeep-inline-functions
进行编译。 这将导致发出出行外副本。 但是,这并不总是可取的。
另一种方法可能是使用 gdb 相对较新的 xmethod
功能(请参阅相关手册页)来编写自己的功能。 一些 libstdc++ 的 xmethods已经进入了 GCC 树,所以你的答案可能就像升级 GCC 一样简单。
相关文章:
- 重载元组索引运算符-C++
- 重载运算符 [] 用于从对象数组中给出特定索引
- 为什么函数的任何索引处的下标运算符在C++中总是返回1
- std::map 索引运算符与插入方法的性能
- 为什么我不能使用在 Visual C++ 32 位中实现运算符无符号 int() 作为数组索引的类?
- 在对象上运行,运算符重载 () 与索引
- 为什么在C 中使用索引运算符被认为是不好的样式
- String_view的索引运算符([])之间的差异
- c++中线程安全索引运算符的正确方法
- 堆中的对象和重写索引运算符
- 索引运算符的 deques 和超出 deque 大小的问题
- 数组索引运算符重载.现在无法使用比较运算符
- 多次调用索引运算符的性能
- 使用 GDB 的 Python 漂亮打印不支持地图的索引运算符 []
- c++为对象赋值重载数组索引运算符
- 是否重载索引运算符以模拟POD多维数组
- 索引运算符过载
- 重写数组索引运算符
- 自定义索引运算符C++
- 类似 Luabind-syntax(索引运算符)