16

我有一个链表

struct node {
    data_t data;
    node_t *next;
};

typedef struct {
    node_t *head;
    node_t *foot;
    node_t *curr;   // for iterator
    unsigned int size;
} list_t;

有了这个结构,假设我定义了一个列表

list_t* myList;

如何使用 GDB 打印整个链表?

4

2 回答 2

18

这应该有效(但未经测试):

define plist
  set var $n = $arg0->head
  while $n
    printf "%d ", $n->data
    set var $n = $n->next
  end
end

(gdb) plist myList

你可以plist放入~/.gdbinit

于 2013-05-11T04:52:21.707 回答
3

GDB 可以在 Python 中编写脚本。您可以定义自己的漂亮打印机并做其他有用的事情。

更好的是,使用标准容器,GDB 现在支持原生打印。

于 2013-05-10T11:57:46.163 回答