2013-05-10 8 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

plistを入れることができます1354731/gdb-a-function – Pramod

答えて

9

これは動作します(ただし未テスト)する必要があります

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

(gdb) plist myList 

あなたがリストを印刷しhttp://stackoverflow.com/questions/それを呼び出すための関数を書くことができ~/.gdbinit

+0

どのようにコードをGDBに入れることができますか? –

+1

@TimothyLeung '(gdb)'プロンプトでコードをカット/ペーストするか、エディタを使って '〜/ .gdbinit'に入れます。 –

2

GDBはPythonでスクリプト化できます。 define your own pretty-printersとその他の便利なことができます。

さらに、標準コンテナを使用することで、GDBはこれらのネイティブ印刷をサポートします。