2011-08-12 72 views
4

我在它下面使用ddd 3.3.11和gdb 6.5-8.fc6rh。我的編譯器是g ++ 4.1.1。檢查嵌套的標準庫數據

我有一個stl映射容器,包含int的向量(向量)作爲其關鍵字查找。 鑰匙上的數據爲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中,我必須使用將某些數據轉換爲模板類型?

回答

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