【发布时间】: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的指针打印不正确?
【问题讨论】:
我正在使用 gdb 调试内核。我正在尝试在框架中打印一些地图。这些映射包含指向结构的指针作为它们的值。但是有些地图打印不正确,而有些则打印正确。
Eg:
map1 < int, void* >
map2 < int, A* >
gdb> pmap map1
10 0x7f2bbec0f4e0
gdb> pmap map2
20 0x7f2bbec00000
为什么map2的指针打印不正确?
【问题讨论】:
没有 GDB pmap 命令。可能您正在使用长期过时的 stlview,例如 this one。
现代 GDB 发行版带有 python 漂亮的打印机,可以很好地打印地图。请改用p map1 和p map2。
为什么map2的指针打印不正确?
您没有证明map2 打印不正确。据我们所知,它包含一个 20, 0x7f2bbec00000 元素。
附:这看起来很假:
map1 < int, void* >
map2 < int, A* >
你的意思可能是:
std::map<int, void*> map1;
std::map<int, A*> map2;
将来,如果您显示实际代码,而不是错误地再现它,您将获得更多有用的答案。
【讨论】: