有没有更好的方法来调试Linux内核的打印输出?Linux内核调试打印输出?
眼下乱抛垃圾的代码:
printk(KERN_DBG "%s:%d - %s() <message>", __FILE__, __LINE__, __FUNCTION__);
这是不是很干净。
应该有一个方法,整行是#ifdef
:ed在一些不错的方式。
有没有更好的方法来调试Linux内核的打印输出?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)通常就足够了。这些文件名和行号很快就会变得令人讨厌。这也是为什么你还没有找到任何“标准”解决方案 - 因为没有。
也许你可以看看[这个问题](http://stackoverflow.com/questions/4943857/linux-kernel-live-debugging-how-its-done-and-what-tools-are-used/4966975#4966975) – Kevin 2011-02-14 11:54:14
凯文:谢谢,但它不是我想要的。我正在寻找一种方法来处理实际的调试打印输出,而不是如何运行调试器。 – user616128 2011-02-14 12:20:07