16

I have a linked list

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;

with this structure, let say I defined a list

list_t* myList;

How can I use GDB to print the whole linked list?

Timothy Leung
  • 1,407
  • 7
  • 22
  • 39
  • You could write a function to print the list and call it http://stackoverflow.com/questions/1354731/gdb-evaluation-of-a-function – Pramod May 10 '13 at 17:39

2 Answers2

23

This should work (but untested):

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

(gdb) plist myList

You could put plist into ~/.gdbinit

Employed Russian
  • 199,314
  • 34
  • 295
  • 362
3

GDB is scriptable in Python. You can define your own pretty-printers and do other useful things.

Better yet, use a standard container, GDB now supports printing those natively.

n. m. could be an AI
  • 112,515
  • 14
  • 128
  • 243