驱动程序调试(四)————修改内核来定位系统僵死问题(例:死循环)
来源:互联网 发布:p2p网络借贷现状与前景 编辑:程序博客网 时间:2024/05/22 00:27
/*系统时钟*/s3c2410_timer_interrupt: static pid pre_pid; static int cnt = 0; if(pre_id == current->pid) { cnt++; } else { cnt = 0; pre_id = current->pid; } if(cnt == 10*HZ) { cnt = 0; printk("s3c2410_timer_interrupt: pid = %d,task = name = %s\n",current->pid,current->comm); }/*中断处理函数*/asm_do_IRQ: if(irq == 30 ) { static pid pre_pid; static int cnt = 0; if(pre_id == current->pid) { cnt++; } else { cnt = 0; pre_id = current->pid; } if(cnt == 10*HZ) { cnt = 0; printk("s3c2410_timer_interrupt: pid = %d,task = name = %s\n",current->pid,current->comm); /*打印PC*/ printk("pc = %08x\n",regs->ARM_pc); } }
./firstdrvtest on
asm_do_IRQ => s3c2410_timer_interrupt : pid = 752, task name = firstdrvtest
pc = bf000084
asm_do_IRQ => s3c2410_timer_interrupt : pid = 752, task name = firstdrvtest
pc = bf000084 // 对于中断, pc-4才是发生中断瞬间的地址
看/proc/kallsyms
first_drv.dis
00000000 : bf000000 t first_drv_open [first_drv]
0000003c :
3c: e1a0c00d mov ip, sp
40: e92dd800 stmdb sp!, {fp, ip, lr, pc}
44: e24cb004 sub fp, ip, #4 ; 0x4
48: e24dd004 sub sp, sp, #4 ; 0x4
4c: e3cd3d7f bic r3, sp, #8128 ; 0x1fc0
50: e3c3303f bic r3, r3, #63 ; 0x3f
54: e5933008 ldr r3, [r3, #8]
58: e0910002 adds r0, r1, r2
5c: 30d00003 sbcccs r0, r0, r3
60: 33a03000 movcc r3, #0 ; 0x0
64: e3530000 cmp r3, #0 ; 0x0
68: e24b0010 sub r0, fp, #16 ; 0x10
6c: 1a00001c bne e4
- 驱动程序调试(四)————修改内核来定位系统僵死问题(例:死循环)
- 修改内核来定位系统僵死问题
- 驱动调试之修改系统时钟中断定位系统僵死问题
- linux驱动调试之修改系统时钟中断定位系统僵死问题
- 找错——死循环
- 学习笔记 --- LINUX 驱动调试之定位系统僵死
- Java集合——HashMap多线程死循环问题
- 驱动程序调试(二)————根据内核打印的段错误信息分析
- DM6467的OV5642 Linux驱动程序开发(二)——Linux内核修改
- 通过/proc查看Linux内核态调用栈来定位卡死问题
- 驱动程序开发(四)—编译
- HashMap的死循环——JAVA
- Linux内核调试:vmdumper <world-id> nmi,死循环调试
- 根据内核打印的段错误信息分析驱动程序——根据出错PC来分析
- 根据内核打印的段错误信息分析驱动程序——根据栈信息来分析
- 根据内核打印的段错误信息分析驱动程序——根据出错PC来分析
- Linxu 进程死循环问题调试
- eclipse调试模式定位插件开发中的死循环
- 几个重要概念
- Arduino MPU6050学习资料总结
- AngularJS中关于手机端触屏签名(同时支持鼠标事件和触屏事件)
- Info Package ABAP routine
- 构建基于Chromium的应用程序
- 驱动程序调试(四)————修改内核来定位系统僵死问题(例:死循环)
- MFC皮肤库的使用
- php字符串及单引号和双引号的区别
- JavaScript运行机制(堆、栈、消息队列)
- border-style之double实现三道杠
- hadoop fs -mkdir input 报错: No such file or directory
- C#调用EasyPusher推送到EasyDarwin实现视频流中转
- 程序媛的前端感悟
- 判断IP是否合法