2014-06-22 134 views
1

我跟着STL Support Tools並發現它不能在我的系統上工作。 我使用gnome Ubuntu 14.04。我試過這個:gdb漂亮打印機stl扔「TypeError」

(gdb) p vct 
Python Exception <class 'TypeError'> iter() returned non-iterator of type '_iterator': 
$1 = std::vector of length 20, capacity 32 

它拋出一個「TypeError」,只打印長度和容量。 我的G ++和gdb的版本:

g++ --version 
g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2 
gdb --version 
GNU gdb (Ubuntu 7.7-0ubuntu3.1) 7.7 

我.gdbinit:

python 
import sys 
sys.path.insert(0,'/home/james/bin/gdb_printers/python') 
from libstdcxx.v6.printers import register_libstdcxx_printers 
register_libstdcxx_printers (None) 
end 

請幫助我,非常感謝你。

回答

2

sys.path.insert(0,'/home/james/bin/gdb_printers/python')

你是怎麼/home/james/bin/gdb_printers/python

假設您是在wiki上(不準確)的說明,以及這樣做:

svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python 

你現在有匹配最新libstdc++來源(又名「主幹」)漂亮的打印機,而你libstdc++本身已經有一年多了,來自gcc-4.8

要獲得正確的漂亮打印機,您需要從匹配的gcc分支中獲取它們。我相信正確的命令是:

svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_8-branch/libstdc++-v3/python 
+0

感謝您的回覆。您的解決方案在Ubuntu 14.10上不起作用,它使用python 3作爲gdb。我現在已經解決了這個問題,搜索後,我發現https://github.com/Manicqin/gdb_printers__python,它可以很好地解決我的問題。 – Mackerel

0
git clone https://github.com/Manicqin/gdb_printers__python python 

這將很好地解決這個問題。

no TypeError和no python 3 problem。

0

請注意,這些說明僅適用於過去(在封裝之前)或非Linux系統上的人員。您典型的現代Linux發行版將以「正常工作」的方式安裝這些調試腳本,而無需您額外配置。