2013-05-10 18 views
11

Bu yapıyla bağlantılı listeBağlı tüm listeyi gdb'ye yazdırın?

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; 

var, bir liste

list_t* myList; 

nasıl GDB bütün bağlantılı liste yazdırmak için kullanabileceğiniz tanımlı diyelim?

+0

içine plist koyabilirsiniz 1354731/gdb-işlevinin değerlendirilmesi – Pramod

cevap

9

Bu işe (ama denenmemiş) olmalıdır:

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

(gdb) plist myList 

Sen listesini yazdırmak ve http://stackoverflow.com/questions/ adlandırmak Sen bir fonksiyon yazabiliriz ~/.gdbinit

+0

Kodu GDB'ye nasıl yerleştirebilirim? –

+1

@TimothyLeung Kodu (gdb) 'isteminde kes/yapıştır veya' ~/.gdbinit' içine koymak için bir düzenleyici kullanın. –

2

GDB, Python'da alfabetik olarak kullanılabilir. define your own pretty-printers ve başka yararlı şeyler yapabilirsiniz.

Daha da iyisi, standart bir kap kullanın, GDB artık bu doğal olarak yazdırmayı destekliyor.