Chinaunix首页 | 论坛 | 博客
  • 博客访问: 491113
  • 博文数量: 154
  • 博客积分: 746
  • 博客等级: 入伍新兵
  • 技术积分: 1129
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-20 09:20
个人简介

此生既入苦寒山,何妨再攀险峰!

文章分类

全部博文(154)

文章存档

2017年(1)

2016年(2)

2015年(25)

2014年(24)

2013年(8)

2012年(15)

2011年(79)

分类:

2012-02-27 17:42:18

原文地址:驱动程序调试方法 作者:jinxinxin163

调试驱动方法:
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) |
0

上一篇:块设备驱动学习

下一篇:struct pollfd

给主人留下些什么吧!~~