gdb 打印 std::map 个元素
Gdb printing std::map elements
我在名为 ExecState 的 class 中有一个 std::map 数据成员:
class ExecState { // ...
std::map<int,ref<Expr> > ab_size;
// ...
};
当我从 gdb 打印它时,我看到了预期值:
(gdb) print state.ab_size
= 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.
我在这里做错了什么?谢谢!
When I print it from gdb I see the expected values:
你看到这个是因为magic of pretty-printers。要查看变量的 实际 内容,请尝试 print/r state.ab_size
.
However, when I try to access the element itself, gdb fails:
GDB 没有失败,但漂亮的打印机还不够神奇,无法实现您的愿望。您必须使用 实际 数据元素来 "fish out" 值,而不是漂亮打印机创建的幻觉(这很难)。
我在名为 ExecState 的 class 中有一个 std::map 数据成员:
class ExecState { // ...
std::map<int,ref<Expr> > ab_size;
// ...
};
当我从 gdb 打印它时,我看到了预期值:
(gdb) print state.ab_size
= 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.
我在这里做错了什么?谢谢!
When I print it from gdb I see the expected values:
你看到这个是因为magic of pretty-printers。要查看变量的 实际 内容,请尝试 print/r state.ab_size
.
However, when I try to access the element itself, gdb fails:
GDB 没有失败,但漂亮的打印机还不够神奇,无法实现您的愿望。您必须使用 实际 数据元素来 "fish out" 值,而不是漂亮打印机创建的幻觉(这很难)。