分类:
2012-03-27 16:32:33
原文地址:Linux设备驱动程序学习(2)-调试技术 作者:tekkamanninja
#define KERN_EMERG "<0>" /* system is unusable */ |
#define DEFAULT_MESSAGE_LOGLEVEL 4 /* KERN_WARNING */ |
#define DEFAULT_CONSOLE_LOGLEVEL 7 /* anything MORE serious than KERN_DEBUG */ |
#include <stdio.h> |
[Tekkaman2440@SBC2440V4]#cd /tmp/ |
[Tekkaman2440@SBC2440V4]#echo 1 > /proc/sys/kernel/printk [Tekkaman2440@SBC2440V4]#cat /proc/sys/kernel/printk [Tekkaman2440@SBC2440V4]#insmod hello.ko [Tekkaman2440@SBC2440V4]#insmod hello.ko |
/* Macros to help debugging */ |
Makefile中要添加的语句:
# Comment/uncomment the following line to disable/enable debugging |
为了避免printk重复输出过快而阻塞系统,内核使用以下函数跳过部分输出:
int printk_ratelimit(void); |
典型的应用如下:
if (printk_ratelimit( )) |
可以通过修改/proc/sys/kernel/printk_ratelimit(重开信息前应等待的秒数)和/proc/sys/kernel/printk_ratelimit_burst(在速度限制前可接受的信息数)来定制printk_ratelimit的行为。
Linux还提供了打印设备编号的宏(在
int print_dev_t(char *buffer, dev_t dev); |
两个函数的唯一区别是:print_dev_t返回打印字符数,format_dev_t返回缓冲区指针。注意缓冲区char *buffer的大小应至少有20B。
三、通过查询调试
[Tekkaman2440@SBC2440V4]#cat /proc/devices |
[Tekkaman2440@SBC2440V4]#cd /lib/modules/ |