Linux驱动开发之调试技术实例

1、驱动源代码

#include <linux/init.h>        
#include <linux/module.h>
//#define HELLO_DEBUG 1   /*1:输出 0:不输出*/
#if HELLO_DEBUG
#define P_DEBUG(fmt,args...) printk("<kernel>:[%s]<Function> [%d]Line: "fmt, __FUNCTION__, __LINE__, ##args)
#else
#define P_DEBUG(fmt,args...) 
#endif
static __init int hello_init(void)
{
char *name = "hy";
P_DEBUG( "hello %s\n",name);
return 0;
}
static __exit void hello_exit(void)
{
P_DEBUG( "goodbye world\n");
}

module_init (hello_init);

module_exit (hello_exit);

MODULE_LICENSE("GPL");
MODULE_VERSION("v1.0");
MODULE_AUTHOR("[email protected]");
MODULE_DESCRIPTION("Kernel Debug Module");

MODULE_ALIAS("debug module");

2、Makefile

DEBUG=y
ifeq ($(DEBUG),y)
DEBFLAGS = -O -g -DHELLO_DEBUG
else
DEBFLAGS = -O2
endif

EXTRA_CFLAGS += $(DEBFLAGS)

ifeq ($(KERNELRELEASE),)
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
all:                               
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:                                             
        $(MAKE) -C $(KERNELDIR) M=$(PWD) clean
else
    obj-m := kernel_debug.o

endif

猜你喜欢

转载自blog.csdn.net/xiezhi123456/article/details/80849515