Linux内核调试打印输出?

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

现在乱丢代码:

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

哪个不是很干净。

应该有一种方式让整行成为#ifdef :ed以一种不错的方式。

使用

 /* At the top of the file, before any includes */ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt #include  /* in code... */ pr_devel("foobar happened\n"); 

作为基础(标准做法)。 然后,如果需要,可以将__FILE____LINE__添加到pr_fmt定义中。

如果这是为了快速调试,只需printk()运行良好。

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

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