распечатка таблицы GHashTable в GDB - PullRequest
4 голосов
/ 25 апреля 2011

Я пытаюсь распечатать таблицу GHashTable в GDB чистым способом.Я нашел блог по проекту 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 Ответ

4 голосов
/ 25 апреля 2011

Для работы красивых принтеров Python необходимы две вещи:

  1. GDB, поддерживающий красивые принтеры Python, и
  2. Фактический код Python для красивой печати нужного вам типа

Первая часть должна быть доступна для последних дистрибутивов Linux (ветка Archer была объединена с GDB 7.0, так что если у вас есть GDB 7.0 или новее, у вас все будет в порядке).

вторая часть требует you для установки симпатичного принтера, чтобы GDB мог его найти.Вы, вероятно, упускаете эту часть.

В конечном итоге GDB сможет автоматически находить симпатичные принтеры самостоятельно, но эта функция новее (я думаю, что это только в GDB 7.2) и требует GLIBсопровождающие раздают своим симпатичным принтерам libglib2.0-0-dbg, чего (я полагаю) они еще не сделали.

Вы можете проверить: dpkg -L libglib2.0-0-dbg | grep '\.py$'.Если в этом списке нет файлов .py, то красивые принтеры отсутствуют.Если да, то они, вероятно, присутствуют, но GDB не находит их.

Кажется, что добавлен симпатичный принтер для GHashTable здесь .

...