Gdb无法从STL映射中正确打印指针

时间:2017-09-08 21:34:05

标签: c++ pointers stl gdb

我正在使用gdb调试核心。我想在框架中打印几张地图。地图包含指向结构的指针作为其值。但是,有些地图打印不正确,而有些地图打印得正确。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

<!DOCTYPE html>
<html>
<head>
<style> 
#myDIV {
    width: 100px;
    height: 100px;
    background: red;
    -webkit-transition: width 2s; /* For Safari 3.1 to 6.0 */
    transition: width 2s;
}

#myDIV:hover {
    width: 400px;
}
</style>
</head>
<body>

<div id="myDIV">hola mundo</div>

<script>
$(document).ready(function () {
  $("#myDiv").on('transitionend webkitTransitionEnd', function () {

      // your logic, transition is run

  });
});

</script>

</body>
</html>

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

1 个答案:

答案 0 :(得分:2)

没有GDB pmap命令。可能您使用的是过时的stlviews,例如this一个。

现代GDB发行版附带python漂亮打印机,可以打印地图。请改为p map1p map2

  

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

您尚未显示map2打印错误的任何证据。据我们所知,它包含一个20, 0x7f2bbec00000元素。

P.S。这看起来很虚伪:

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

你的意思是:

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

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