我跟着STL Support Tools,发现它无法在我的系统上运行。 我使用gnome Ubuntu 14.04。我试过这个:
(gdb) p vct
Python Exception <class 'TypeError'> iter() returned non-iterator of type '_iterator':
$1 = std::vector of length 20, capacity 32
它引发了一个&#34; TypeError&#34;,并且只打印长度和容量。 我的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
请帮助我,非常感谢。
答案 0 :(得分:5)
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++
来源(又名&#34; trunk&#34;)相匹配的漂亮打印机,而您的libstdc++
本身已超过一年旧的,来自gcc-4.8
。
要获得正确的漂亮打印机,您需要从匹配的gcc分支获取它们。我相信正确的命令是:
svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_8-branch/libstdc++-v3/python
答案 1 :(得分:0)
git clone https://github.com/Manicqin/gdb_printers__python python
这将完美地解决问题。
没有TypeError而且没有python 3问题。
答案 2 :(得分:0)
请注意,这些说明实际上仅适用于过去(在打包之前)或非Linux系统上的人员。您典型的现代Linux发行版将以“正常工作”的方式安装这些调试脚本,而无需您进行任何额外配置。