Gdb打印std :: map元素

时间:2017-12-12 04:35:13

标签: c++ gdb stdmap

我在名为ExecState的类中有一个std :: map数据成员:

class ExecState { // ...
std::map<int,ref<Expr> > ab_size;
// ...
};

当我从gdb打印时,我看到了预期的值:

(gdb) print state.ab_size
$1 = std::map with 1 elements = {[1] = {ptr = 0x2a221d0}}

但是,当我尝试访问元素本身时,gdb失败了:

(gdb) print state.ab_size[1]
Attempt to take address of value not located in memory.

我在这里做错了什么?谢谢!

1 个答案:

答案 0 :(得分:2)

  

当我从gdb打印时,我看到了预期的值:

你看到这是因为magic of pretty-printers。要查看变量的实际内容,请尝试print/r state.ab_size

  

但是,当我尝试访问元素本身时,gdb失败了:

GDB没有失败,但漂亮的打印机并不足以让你满意。你必须使用实际的数据元素“剔除”这个值,而不是漂亮的打印机创建的错觉(这很难)。