检查嵌套的标准库数据

时间:2011-08-12 18:25:47

标签: c++ stl gdb g++

我正在使用ddd 3.3.11和gdb 6.5-8.fc6rh。我的编译器是g ++ 4.1.1。

我有一个stl map容器,其中包含int(vector)向量的键。 密钥的数据为MyType*

我正在使用Dan Marinescu编写的.gdbinit文件。它很好用,直到你嵌套C ++标准库容器。

我的问题是,使用.gdbinit文件中的示例检查技术, 有没有办法检查嵌套的stdlib数据?

我遇到的主要问题似乎是.gdbinit文件试图进行类型转换。

如果我的地图属于

类型
 map<vector<int>, MyType*>

然后,在gdb中,我尝试一个pmap调用,如

pmap myMap vector<int> MyType*

失败
elem[0].left: No symbol "vector<int>" in current context.

gdb中有什么语法我必须使用它来将一些数据类型化为模板化类型?

1 个答案:

答案 0 :(得分:4)

使用更新的gdb,我不得不添加单引号,添加名称空间和分配器。

(gdb) pmap myMap 'std::vector<int,std::allocator<int>>' MyType*
elem[0].left: $3 = std::vector of length 1, capacity 1 = {2}
elem[0].right: $4 = (MyType *) 0x7fffffffe060
Map size = 1