GDB打印std ::地图元素

Gdb printing std::map elements

本文关键字:地图 元素 std 打印 GDB      更新时间:2023-10-16

我在一个名为execstate的类中有一个std ::映射数据成员:

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.

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

当我从GDB打印它时,我会看到预期值:

您看到了这一点,因为相当分子的魔力。要查看变量的实际内容,请尝试print/r state.ab_size

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

GDB并没有失败,但是漂亮的打印机还不够神奇,无法实现您的愿望。您必须使用实际数据元素"钓鱼"该值,而不是漂亮打印机创建的幻觉(这很难)。