调试驱动方法:
1.
判断有没有进入asm_do_IRQ函数
这个函数在linux-2.6.x/arch/arm/kernel/irq.c文件中定义
2.
判断有没有进入handle_level_irq或者handle_edge_irq函数。
这两个函数在linux-2.6.x/kernel/irq/chip.c文件中定义。
3.
判断有没有进入驱动的中断服务例程。
这个函数一般由驱动作者编写
4.单步调试
在需要单步调试的文件开头添加如下代码
#include
/* Print trace message */
#define TRACE \
printk("%s: %s(): line %d\n", MOD_NAME, __FUNCTION__, __LINE__)
或者将此代码放入一个独立的头文件中,这样整个驱动都可以通过include头文件来打印调试信息
在可疑的代码出加入TRACE标记,单步跟踪代码。
5.当不知道某个函数的调用层次时,可以在该函数里边加入一条非法语句(任何会引起oops的语句)
这样,内核在打印出oops错误的同时,也会打印出此函数的调用层次。
阅读(1038) | 评论(0) | 转发(0) |