工作之余抽点时间出来写写博文,希望对新接触的朋友有帮助。今天在这里和大家一起学习一下函数调试
Linux内核用函数printk打印调试息信,该函数的用法与C库打印函数printf格式相似,但在内核应用。户用可在内核代码中的某置位入加函数printk,直接把所关怀的息信打打印到幕屏上或日记文件中。
函数printk根据日记级别(loglevel)对调试息信停止分类。日记级别用宏义定,开展为一个字符串,在编译时由预处理器将它和息消文本接拼成一个字符串,因此函数printk中的日记级别和格式字符串间不能有逗号。
面下两个 printk 的例子,一个是调试息信,一个是临界息信:
printk(KERN_DEBUG "Here I am: %s:%i\n", _ _FILE_ _, _ _LINE_ _); printk(KERN_CRIT "I'm trashed; giving up on %p\n", ptr);
样例:在户用空间或内核中开启及关闭打印调试息消 户用还可以在内核或户用空间应用程序义定一统的函数打印调试息信,可在Makefile文件中打开或关闭调试函数。义定法方列出如下:
/*debug_on_off.h*/ #undef PDEBUG /* undef it, just in case */ #ifdef SCULL_DEBUG #ifdef _ _KERNEL_ _ /* This one if debugging is on, and kernel space */ #define PDEBUG(fmt,args...) printk(KERN_DEBUG "scull: " fmt, ## args) #else /* This one for user space */ #define PDEBUG(fmt, args...) fprintf(stderr, fmt, ## args) #endif #else #define PDEBUG(fmt, args...) /* not debugging: nothing */ #endif
在文件Makefile加上面下几行:
# Comment/uncomment the following line to disable/enable debugging DEBUG = y # Add your debugging flag (or not) to CFLAGS ifeq ($(DEBUG),y) DEBFLAGS = -O -g -DSCULL_DEBUG # "-O" else DEBFLAGS = -O2 endif CFLAGS += $(DEBFLAGS)
改更makefile中的DEBUG值,须要调试息信时,DEBUG = y,不须要时,DEBUG赋其它值。再用make编译可即。
文章结束给大家分享下程序员的一些笑话语录:
一边用着越狱的ip,一边拜乔帮主的果粉自以为是果粉,其实在乔帮主的眼里是不折不扣的叛徒。