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