【问题标题】:reducing junk in gdb print减少 gdb 打印中的垃圾
【发布时间】:2011-05-24 15:53:36
【问题描述】:

我正在使用带有 Dan Marinescu 配置的 gdb 7.2,它允许打印 STL 向量字符串等(pstring、pvector 等) 好像不太好。因此,查看以下答案之一,我清理并使用了 7.0 及更高版本中可用的漂亮打印机。

为此,我将以下内容放入我的 .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 下载代码到 /home/me/gdb_printers/python 但那是前一阵子了。我注意到 gdb 7.3 中有代码。所以我删除了上述内容并且基础工作,但 stl 没有。这是一个包含字符串的对象:

{a = 2, b = 97'a', c = 2469135780247, d = 1.1363636363636362, e = { 静态 npos = 18446744073709551615, _M_dataplus = {> = {<:new_allocator> = {}, }, _M_p = 0x602028 "foo"}}}

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

为了使用 STL,我需要下载 archer 项目的代码: svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python

然后把它放到上面的目录中,确保所有其他的垃圾都没有了,而且效果很好。

【问题讨论】:

  • 你有你尝试过的代码sn-p吗?您可以使用模板帮助器来完成此操作,用于打印和专门化您想要自定义的类型。

标签: c++ stl gdb


【解决方案1】:

在 GDB 7.0 及更高版本中使用Python pretty printers 解决您想要做的事情。

您不需要pstring,普通的print just works(也适用于嵌入式字符串)。

【讨论】:

  • 我们有 gdb 7.2。命令:info pretty-print 不起作用。文档非常稀疏,并没有提到如何设置它。是否有可能通过加载旧的东西我们的配置搞砸了?我怎样才能得到一个干净的配置,我可以看到这个工作?我应该有一个空的 .gdbinit 吗?
  • print 不适用于 STL 对象,也就是说,它会为 stl 对象打印大量垃圾。我在 STL 问题中添加了说明
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-21
相关资源
最近更新 更多