देने नहीं मैं एक लोड करने योग्य कर्नेल मॉड्यूल है और उसके initpr_debug किसी भी उत्पादन
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;
}
इसके अलावा, मैं सक्षम किया है, गतिशील डिबगिंग कर्नेल संस्करण मैं उपयोग कर रहा हूँ पर सक्षम नीचे दिया गया है के रूप में - CONFIG_DYNAMIC_DEBUG=y
अर्थात।
और मॉड्यूल के मेकफ़ाइल में मैंने एक पंक्ति CFLAGS_[id].o := -DDEBUG
जोड़ा है जहां id.c
फ़ाइल का नाम है।
अब मैं इस मॉड्यूल, जिसमें मैंने पाया की insmod कर नीचे लाइनों
/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"
उपरोक्त दो pr_debug में बयान
यहां तक कि इस सब करने के बाद, मेरे निराशा को मैं नहीं मिल सका के बाद /sys/kernel/debug/dynamic_debug/control
में जाँच डीएमएसजी का उत्पादन। तो मैं क्या याद कर रहा हूँ या गलत कर रहा हूँ?
आपके सिस्टम के लॉग स्तर की जाँच करें। हो सकता है कि यह डीबग लॉग मुद्रित न हो। –
क्या आपने dmesg या स्क्रीन पर या दोनों में प्रतीत नहीं किया है? जब आप इसे लोड करते हैं तो मॉड्यूल में 'dyndbg' पैरामीटर जोड़ने का प्रयास करें। यदि आपने ' .dyndbg' उपयोग में संकलित किया है, जहां मेकफ़ाइल के अनुसार आपके मॉड्यूल का नाम है। –
0andriy
@ मिलिने क्या आपका मतलब CONFIG_MESSAGE_LOGLEVEL_DEFAULT था? कॉन्फ़िगरेशन फ़ाइल द्वारा रिपोर्ट की गई यह 4 है। लेकिन क्या इससे कोई फर्क पड़ता है? – PaulDaviesC