【问题标题】:Gdb not printing pointers correctly from a STL mapGdb 未从 STL 映射正确打印指针
【发布时间】:2018-02-17 20:56:55
【问题描述】:

我正在使用 gdb 调试内核。我正在尝试在框架中打印一些地图。这些映射包含指向结构的指针作为它们的值。但是有些地图打印不正确,而有些则打印正确。

Eg:
map1 < int, void* >
map2 < int, A* >

gdb> pmap map1 
10 0x7f2bbec0f4e0

gdb> pmap map2
20 0x7f2bbec00000

为什么map2的指针打印不正确?

【问题讨论】:

    标签: c++ pointers stl gdb


    【解决方案1】:

    没有 GDB pmap 命令。可能您正在使用长期过时的 stlview,例如 this one。

    现代 GDB 发行版带有 python 漂亮的打印机,可以很好地打印地图。请改用p map1p map2

    为什么map2的指针打印不正确?

    您没有证明map2 打印不正确。据我们所知,它包含一个 20, 0x7f2bbec00000 元素。

    附:这看起来很假:

    map1 < int, void* > 
    map2 < int, A* >
    

    你的意思可能是:

    std::map<int, void*> map1;
    std::map<int, A*> map2;
    

    将来,如果您显示实际代码,而不是错误地再现它,您将获得更多有用的答案。

    【讨论】:

      猜你喜欢
      • 2018-06-10
      • 1970-01-01
      • 1970-01-01
      • 2013-03-11
      • 2011-01-09
      • 1970-01-01
      • 1970-01-01
      • 2015-12-16
      • 2014-09-27
      相关资源
      最近更新 更多