2011-05-24 100 views
3

我使用的是Dan Marinescu的配置gdb 7.2,它允许打印STL向量字符串等(pstring,pvector等) 它看起来不太好。所以看看下面的答案之一,我清理了一下,并使用了7.0以上的漂亮打印机。在gdb中减少垃圾print

为了做到这一点,我把我的.gdbinit以下

python 
import sys 
sys.path.insert(0, '/home/me/gdb_printers/python') 
from libstdcxx.v6.printers import register_libstdcxx_printers 
register_libstdcxx_printers (None) 
end 
set print elements 0 

的说明说从SVN到/家庭/ ME/gdb_printers/Python的下载代码,但是这是前一阵子。我注意到有代码在gdb 7.3中。所以我删除了上述和基本的工作,但STL没有。这是一个包含字符串的对象:

{A = 2,B = 97 '一个',C = 2469135780247,d = 1.1363636363636362,E = { 静态非营利组织= 18446744073709551615, _M_dataplus = {> = {< __gnu_cxx: :new_allocator> = {},},_M_p = 0x602028 “foo” 的}}}

./gdb-7.3.50.20110526/gdb/data-directory/python/gdb:

为了与STL工作,我需要下载射箭项目的代码: svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python

并把它放在上面的目录中,确保所有其他垃圾都没有了,而且它的效果非常好。

+0

你有试过的代码片段吗?您可以使用模板帮助程序进行打印并为您想要自定义的类型进行特化。 – AJG85 2011-05-24 18:34:20

回答

1

你想要做的是在GDB 7.0及以上版本中使用Python pretty printers

您不需要pstring,常规printjust works(也适用于嵌入的字符串)。

+1

我们有gdb 7.2。命令:info pretty-print不起作用。文档相当稀少,并没有提到如何设置它。是否有可能通过加载旧的东西我们的配置搞砸了?我怎样才能得到一个干净的配置,我可以看到这个工作?我应该有一个空的.gdbinit? – Dov 2011-05-28 11:34:49

+0

打印对于STL对象不起作用,也就是说,它打印stl对象的大量垃圾。我在STL的问题中添加了说明 – Dov 2011-06-03 15:39:50