在内核开发时经常使用printk打印调试信息,但是printk又对性能有一定的影响,比如写了一个驱动调试完毕要发布或者做内核实验调试完毕正式测试时将这些printk删除又很麻烦,之后再想调试又要重新添加。
在内核中可以使用printk宏开关来控制这些信息的显示:
#define DEBUG_A
#ifdef DEBUG_A
#define DEBUG(fmt, args...) printk( KERN_DEBUG "DEBUG_A: " fmt, ## args)
#else
#define DEBUG(fmt, args...)
#endif
使用案例
debug.c:
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#define DEBUG_A
#ifdef DEBUG_A
#define DEBUG(fmt, args...) printk( KERN_DEBUG "DEBUG_A: " fmt, ## args)
#else
#define DEBUG(fmt, args...)
#endif
static int __init hello_init(void)
{
DEBUG("hello this is debug! \n");
return 0;
}
static void __exit hello_exit(void)
{
DEBUG("exit! \n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
Makefile:
ifneq ($(KERNELRELEA