13

有没有更好的方法来调试 Linux 内核中的打印输出?

现在乱扔代码:

printk(KERN_DBG "%s:%d - %s() <message>", __FILE__, __LINE__, __FUNCTION__ ); 

这不是很干净。

应该有一种方法可以#ifdef以某种不错的方式对整行进行 :ed。

4

2 回答 2

21

采用

/* At the top of the file, before any includes */
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt

#include <linux/printk.h>

/* in code... */
pr_devel("foobar happened\n");

作为基础(标准做法)。然后,您可以根据需要添加__FILE____LINE__pr_fmt定义中。

于 2011-02-14T14:00:16.657 回答
2

如果这是为了快速调试,只需 printk() 即可。

如果这是为了在更多生产情况下进行调试,可以使用 pr_debug(),因此可以在运行时启用消息。

无论如何, ("%s: xxx", func ) 通常就足够了。这些文件名和行号很快就会变得烦人。这也是您没有找到任何“标准”解决方案的原因——因为没有。

于 2011-02-14T14:20:04.923 回答