有没有更好的方法来调试 Linux 内核中的打印输出?
现在,代码里到处都是这样的打印语句:
printk(KERN_DBG "%s:%d - %s() <message>", __FILE__, __LINE__, __FUNCTION__ );
这不是很干净的方式。
应该有一种整行以一些好的方式进行 #ifdef
处理的方法。
有没有更好的方法来调试 Linux 内核中的打印输出?
现在,代码里到处都是这样的打印语句:
printk(KERN_DBG "%s:%d - %s() <message>", __FILE__, __LINE__, __FUNCTION__ );
这不是很干净的方式。
应该有一种整行以一些好的方式进行 #ifdef
处理的方法。
/* 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
定义中。
#define pr_fmt(fmt) KBUILD_MODNAME ":" __FILE__ ":" __LINE__ ": " fmt
,再加上 pr_devel("stuff and %p\n", somepointer)
。 - user611775#define pr_fmt(fmt) KBUILD_MODNAME ":" __FILE__ ":" __LINE__ ": " fmt
(在任何#include之前)
并且在代码中
pr_devel("XXX\n");
- brokenfoot#define pr_fmt(fmt) KBUILD_MODNAME ": " __FILE__ ", function %s, line %d: " fmt, __func__, __LINE__
希望这能帮助像我一样的谷歌搜索者在未来解决类似问题。 - theman