使用GDB进行Python漂亮打印不支持map的索引操作符[]

时间:2016-01-20 07:52:30

标签: c++ gdb

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

要在地图中查找具有给定键的项目,我尝试使用operator [],但是GDB报告了以下错误消息,"找不到运算符[]"。

这是因为漂亮的打印机缺乏对地图的支持吗?或者我错过了什么?

由于

1 个答案:

答案 0 :(得分:1)

漂亮的打印机只是一个显示功能。它们不会影响评估。正如你所发现的那样,这有时会令人困惑。

在您的情况下,gdb正在尝试调用正确的<link rel="stylesheet" href="/css/main.css"> 。但是,您的编译器已对其进行了优化 - 这在C ++程序中非常常见。

一个选项可能是使用operator[]进行编译。这将导致发出外联副本。但是,这并不总是可取的。

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