在GDB中打印GHashTable

时间:2011-04-25 16:22:15

标签: debugging gdb glib

我试图以干净的方式在GDB中打印出GHashTable。我找到了一个关于Archer项目的博客,该博客显示了很好地打印GHashTable的能力: http://blogs.gnome.org/alexl/2009/09/21/archer-gdb-macros-for-glib/

据我所知,这个Archer项目功能已被推广到GDB主流。

在GDB中我做:

set print pretty on

然后我尝试打印出哈希表,但它仍然只给我一个内存地址:

(gdb) print call_data->fields->field_indicies
$3 = (GHashTable *) 0x87f4580

如果我尝试在GDB中取消引用指针,我会得到一个不完整的类型:

(gdb) print *call_data->fields->field_indicies
$2 = <incomplete type>

我正在运行Ubuntu,我安装了libglib2.0-0-dbg:

gnychis@qc2:~/Documents/wireshark_native$ sudo apt-get install libglib2.0-0-dbg
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libglib2.0-0-dbg is already the newest version.

有谁知道我怎么打印出来的?或者为什么我没有适当的glib和gdb支持?

1 个答案:

答案 0 :(得分:4)

Python漂亮的打印机需要做两件事:

  1. 支持Python漂亮打印机和
  2. 的GDB
  3. 用于打印所需类型的实际Python代码
  4. 第一部分应该可用于最近的Linux发行版(Archer分支已经合并到GDB 7.0中,所以如果你有7.0或更新的GDB,你应该没问题。)

    第二部分要求安装漂亮的打印机,以便GDB可以找到它。你很可能错过了这一部分。

    最终GDB将能够自动找到漂亮的打印机,但这个功能更新(我认为它只在GDB 7.2中)要求GLIB维护人员用{{分发他们漂亮的打印机1}},(我猜)他们还没有完成。

    您可以查看:libglib2.0-0-dbg。如果这没有列出任何dpkg -L libglib2.0-0-dbg | grep '\.py$'文件,则缺少漂亮的打印机。如果是,它们可能存在,但是GDB没有找到它们。

    GHashTable的漂亮打印机似乎已添加here

相关问题