【问题标题】:Gdb stl pretty printing without type info没有类型信息的 Gdb stl 漂亮打印
【发布时间】:2018-08-06 21:15:27
【问题描述】:

我目前正在使用通过以下方式获得的 python 漂亮打印机:

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

典型的调试会话如下所示:

(gdb) p some_vector
$1 = std::vector of length 4, capacity 4 = {0, 1, 2, 3}
(gdb) p some_vector[0]
$2 = (__gnu_cxx::__alloc_traits<std::allocator<unsigned int> >::value_type &) @0x8524f0: 0

问题是,我几乎不需要提供类型和地址信息,而且它通常只会降低可读性。有没有简单的方法让它看起来像下面这样?

(gdb) p some_vector
$1 = {0, 1, 2, 3}
(gdb) p some_vector[0]
$2 = 0

【问题讨论】:

  • 如果你也使用 python XMethods,它会看起来像你想要的那样。

标签: python gdb pretty-print


【解决方案1】:

没有内置的方法可以做到这一点。

由于您有自己的打印机结帐,最简单的操作就是编辑它们。如果您为std::vector 编辑打印机的to_string 方法,您将能够让p some_vector 命令以您喜欢的方式工作。

对于第二种情况,输出格式由 gdb 内部决定。我认为您可以使用set print address off 隐藏地址,但据我所知,其余部分不可配置。您可以尝试在此处为元素类型编写漂亮的打印机。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    相关资源
    最近更新 更多