2013-05-10 88 views
11

我有一個鏈表在gdb中打印整個鏈表?

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打印整個鏈表?

+0

你可以寫一個函數打印的清單,並調用它http://stackoverflow.com/questions/ 1354731/gdb-evaluation-of-function – Pramod 2013-05-10 17:39:32

回答

9

這應該工作(但未經測試):

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

+0

如何將代碼放入GDB? – 2013-05-11 07:00:49

+1

@TimothyLeung在'(gdb)'提示符下剪切/粘貼代碼,或使用編輯器將代碼放入'〜/ .gdbinit'中。 – 2013-05-11 14:39:08

2

GDB在Python中是腳本化的。你可以define your own pretty-printers並做其他有用的事情。

更好的是,使用標準容器,GDB現在支持本機打印。