我正在使用Ubuntu 13.10,Eclipse Kepler Service Release 1,GDB 7.6.1-ubuntu以及通过Eclipse“安装新软件”提供的最新CDT。我按照几个站点上发布的说明为STL容器设置了漂亮的打印。
由于它没有以这种方式工作,按照其他说明我修改了printers.py以使字符串len最大化为100并格式化所有引发ValueError,“...”以引发ValueError(“...” )。
我的.gdbinit文件如下:
python
import sys
sys.path.insert(0, '/home/fbence/stlPrettyPrinter')
from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end
我的设置如下:
http://fbence.web.elte.hu/setup.png
如果我转到调试按钮,它将我的配置设置为第一个,它似乎也使用它(否则我不需要更改printers.py我认为),但调试为...是空的。
gbd跟踪包含以下消息:
193,677 36 ^ error,msg =“无法获得子迭代器”。
193,674 35 ^ done,name =“var5”,numchild =“0”,value =“{static npos =,_ M_dataplus = {> = {< __ \ gnu_cxx :: new_allocator> = {},},_ M_p = 0x0}}“,type =”std :: stri \ NG”时,线程ID = “1”,displayhint = “字符串”,动态= “1”,has_more = “0”
这是输出: http://fbence.web.elte.hu/eclipseproblem.png
当我想打印一个简单的向量时,使用终端中的gdb会产生以下输出:
Python Exception <class 'TypeError'> iter() returned non-iterator of type '_iterator':
$3 = std::vector of length 6, capacity 16
显然,我的问题是,我该如何解决这个问题?没有漂亮的印刷,我只想在Windows下调试,但我真的不想这样做:)
答案 0 :(得分:3)
gdb libstdc ++漂亮的打印机现在在Ubuntu 13.10中实际上已被破坏。例如,请参阅this bug。
gdb在Ubuntu 13.10中与Python3链接,而漂亮的打印机脚本仅支持Python2语法。您可以将this patch应用于漂亮的打印机。它将增加对Python3的支持。虽然我没有使用Eclipse进行调试,但这个解决方案对我有用。