2013-05-10 9 views
11

Mam połączonej listyWydrukuj całą powiązaną listę w 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; 

z tej struktury, powiedzmy I zdefiniowaną listę

list_t* myList; 

Jak mogę używać GDB aby wydrukować cały połączonej listy?

+0

Można napisać funkcję, aby wydrukować listę i nazwać http://stackoverflow.com/questions/ 1354731/gdb-evaluation-of-a-function – Pramod

Odpowiedz

9

ten powinien działać (ale niesprawdzone):

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

(gdb) plist myList 

Można umieścić plist do ~/.gdbinit

+0

Jak mogę umieścić kod w GDB? –

+1

@TymothyLeung Wytnij/wklej kod przy znaku '(gdb)' lub użyj edytora, aby wstawić go do '~/.gdbinit'. –

2

GDB jest skryptowalny w języku Python. Możesz define your own pretty-printers i robić inne przydatne rzeczy.

Jeszcze lepiej, użyj standardowego pojemnika, GDB teraz obsługuje drukowanie tych natywnie.

Powiązane problemy