2013-05-10 7 views
11

Ich habe eine verknüpfte ListeDrucken Sie die gesamte verknüpfte Liste in 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; 

mit dieser Struktur lassen sagen, dass ich eine Liste definiert

list_t* myList; 

Wie kann ich GDB verwenden, um die gesamte Liste zu drucken?

+0

setzen könnten Sie eine Funktion schreiben, könnte die Liste zu drucken und es nennt http://stackoverflow.com/questions/ 1354731/gdb-evaluation-of-a-function – Pramod

Antwort

9

Dies sollte funktionieren (aber nicht getestet):

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

(gdb) plist myList 

Sie plist in ~/.gdbinit

+0

Wie kann ich den Code in GDB setzen? –

+1

@TimothyLeung Ausschneiden/fügen Sie den Code an der Eingabeaufforderung '(gdb)', oder verwenden Sie einen Editor, um in '~/.gdbinit'. –

2

GDB ist in Python skriptfähig. Sie können define your own pretty-printers und andere nützliche Dinge tun.

Besser noch, verwenden Sie einen Standardcontainer, GDB unterstützt jetzt das native Drucken.