2015-03-08 26 views
9

Tôi có một mô-đun hạt nhân có thể nạp được và init của nó là như đưa ra dưới đâypr_debug không đưa ra bất kỳ đầu ra

static int __init id_init(void) 
{ 
    struct identity *temp; 

    /* some code which is not relevant to the question */ 

    temp = identity_find(3); 
    pr_debug("id 3 = %s\n", temp->name); 

    temp = identity_find(42); 
    if (temp == NULL) 
     pr_debug("id 42 not found\n"); 

    /* some code which is not relevant to the question */ 

    return 0; 
} 

gỡ lỗi động Ngoài ra tôi đã kích hoạt kích hoạt trên phiên bản kernel Tôi đang sử dụng - tức là CONFIG_DYNAMIC_DEBUG=y.

Và trong Makefile của mô-đun, tôi đã thêm một dòng CFLAGS_[id].o := -DDEBUG trong đó id.c là tên tệp.

Bây giờ tôi đã kiểm tra trong /sys/kernel/debug/dynamic_debug/control sau khi làm insmod của mô-đun này, trong đó tôi tìm thấy các dòng dưới đây

/home/pauldc/Programming/Kernel/id/id.c:69 [id]id_init =_ "id 42 not found\012" 
/home/pauldc/Programming/Kernel/id/id.c:65 [id]id_init =_ "id 3 = %s\012" 

Ngay cả sau khi làm tất cả điều này, với sự thất vọng của tôi, tôi không thể tìm ra hai câu lệnh pr_debug nêu trên trong đầu ra của dmesg. Vì vậy, những gì tôi đang thiếu hoặc làm sai?

+0

Kiểm tra mức log của hệ thống. Có thể không được in các bản ghi gỡ lỗi. –

+0

Bạn có không có vẻ trong dmesg hoặc trên màn hình hay cả hai? Hãy thử thêm tham số 'dyndbg' vào module khi bạn tải nó. Nếu bạn đã biên dịch sử dụng ' .dyndbg', trong đó là tên của mô-đun của bạn phù hợp với Makefile. – 0andriy

+0

@Miline Ý của bạn là CONFIG_MESSAGE_LOGLEVEL_DEFAULT? Đó là 4, theo báo cáo của tập tin cấu hình. Nhưng điều đó có tạo nên sự khác biệt nào không? – PaulDaviesC

Trả lời

Các vấn đề liên quan