有没有更好的方法来调试 Linux 内核中的打印输出?
现在乱扔代码:
printk(KERN_DBG "%s:%d - %s() <message>", __FILE__, __LINE__, __FUNCTION__ );
这不是很干净。
应该有一种方法可以#ifdef
以某种不错的方式对整行进行 :ed。
有没有更好的方法来调试 Linux 内核中的打印输出?
现在乱扔代码:
printk(KERN_DBG "%s:%d - %s() <message>", __FILE__, __LINE__, __FUNCTION__ );
这不是很干净。
应该有一种方法可以#ifdef
以某种不错的方式对整行进行 :ed。
采用
/* 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
定义中。
如果这是为了快速调试,只需 printk() 即可。
如果这是为了在更多生产情况下进行调试,可以使用 pr_debug(),因此可以在运行时启用消息。
无论如何, ("%s: xxx", func ) 通常就足够了。这些文件名和行号很快就会变得烦人。这也是您没有找到任何“标准”解决方案的原因——因为没有。