gpt4 book ai didi

linux - 为什么 Linux 内核的 pr_debug 没有给出任何输出?

转载 作者:IT王子 更新时间:2023-10-29 00:27:31 39 4
gpt4 key购买 nike

我有一个可加载的内核模块,它的初始化如下所示

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

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

现在我在执行此模块的 insmod 后检查了 /sys/kernel/debug/dynamic_debug/control,我在其中找到了以下几行

/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 语句。那么我错过了什么或做错了什么?

最佳答案

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

CFLAGS_filename.o := -DDEBUG

不是

CFLAGS_[filename].o := -DDEBUG

引用https://www.kernel.org/doc/local/pr_debug.txt

关于linux - 为什么 Linux 内核的 pr_debug 没有给出任何输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28936199/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com