为什么Linux内核的pr_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;

}

我还启用了正在使用的内核版本上启用的动态调试-ie CONFIG_DYNAMIC_DEBUG=y

在模块的Makefile中,我在其中添加了一行CFLAGS_[id].o := -DDEBUGid.c即文件名。

现在,我/sys/kernel/debug/dynamic_debug/control在执行此模块的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"

即使做了所有这些,令我失望的是,在dmesg的输出中找不到上述两个pr_debug语句。那我想念什么或做错什么呢?

回答:

假设filename.c是模块源文件,请将以下内容添加到Makefile中。

CFLAGS_filename.o := -DDEBUG

CFLAGS_[filename].o := -DDEBUG

请参阅https://www.kernel.org/doc/local/pr_debug.txt

以上是 为什么Linux内核的pr_debug没有给出任何输出? 的全部内容, 来源链接: utcz.com/qa/429226.html

回到顶部