7318|33

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

WINCE下怎么诊断一个驱动有没存在资源锁死的问题?就是多个线程对同一个资源的访问同步互斥没做好。 [复制链接]

WINCE下怎么诊断一个驱动有没存在资源锁死的问题?就是多个线程对同一个资源的访问同步互斥没做好。

最新回复

为什么看不到?只要有symbol就能看到,当然,release版本有些代码是优化过的,有些变量是看不到的  详情 回复 发表于 2009-11-21 14:23
点赞 关注

回复
举报

95

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
我现在有一个驱动就是这样的情况.运行了一段时间就卡死了.但不知道卡在那里了,线程间也做了同步互斥的处理,但觉得没处理好,不知道怎么找到这个问题的所在.
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我的驱动是一个线程接数据到缓冲区,处理线程处理缓冲区里面的数据.两个线程都会改变缓冲区的内容.接收线程把数据接到缓冲区后面,处理线程把处理完的数据从缓冲区移除掉.

加了关键区的限制,但限制不住的感觉,过不了多久驱动就卡死了,整个系统的CPU使用率也降下了不少.

我的接收线程是一个中断线程,频繁地被调用到,驱动执行的频率还是很高的,处理线程也需要不断地处理.
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

4
 
听说用链表可以很好地处理我这个问题,但用链表就不存在同步互斥的问题吗?

CE串口驱动缓冲区数据的管理是个好例子,一个头指针,一个尾指针来弄.但也存在同步互斥的问题啊!


这两种方法那个更好?我现在的缓冲区只是简单地用数组来做的.谁要访问就谁先占住,但没多久就卡死了,接收到了数据,但没处理了.应该是同步互斥没做好!!!
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

5
 
CE下那个远程工具可以用这样的功能?
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

6
 
1, 轮询是否可行
2, 可能存在2个线程同时访问共享内存了
3, 中断优先级
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

7
 
要查驱动是否有思索的问题其实并不难,因为哪些线程对哪个资源占有和访问都能够从系统结构重查到,但是由于资源很多,查起来比较繁琐.一个简单的办法就是通过debug extension来查
微软提供了cedebugx这个dll,ce5中可以在pb里通过load debug extension装载;ce6中缺省已经装载了,你只需在target control中运行以下命令
!diagnose all
就可以帮你查包括死锁在内的系统问题,首先它会帮你确认系统当时是否有死锁问题,如果有的话,会帮你指出是哪些线程对那个资源访问死锁了,然后你就可以通过查看线程的stack察看问题的原因了
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 6 楼 ruritanian 的回复:
要查驱动是否有思索的问题其实并不难,因为哪些线程对哪个资源占有和访问都能够从系统结构重查到,但是由于资源很多,查起来比较繁琐.一个简单的办法就是通过debug extension来查
微软提供了cedebugx这个dll,ce5中可以在pb里通过load debug extension装载;ce6中缺省已经装载了,你只需在target control中运行以下命令
!diagnose all
就可以帮你查包括死锁在内的系统问题,首先它会帮你确认系统当时是否有死锁问题,如果有的话,会帮你指出是哪些线程对那个资源访问死锁了,然后你就可以通过查看线程的stack察看问题的原因了


这个怎么玩?内核必须编译为DEBUG版本?
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

9
 
不用debug版本的,但是需要有kitl
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

10
 
现在出现了一个怪现象,觉得我的系统卡死的时候,乱碰几下板子系统有可以恢复正常了,难道不是程序的问题?
这样的问题真难搞.
 
 
 

回复

50

帖子

0

TA的资源

一粒金砂(初级)

11
 
在C:\Program Files\Microsoft Platform Builder\6.00\cepb\bin\Extensions\5.0下找到了CeDebugX50.dll,明天试试.系统必要使能KITL功能?
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

12
 
pb里通过load debug extension----这个load debug extension在什么地方?
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

13
 
想准确分析的话,你可以用celog结合kernel profile来进行分析;
想简单点的话,直接用debug info分析就行了
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

14
 
是的,而且你要把系统断下来再用
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

15
 
引用 12 楼 guopeixin 的回复:
想准确分析的话,你可以用celog结合kernel profile来进行分析;
想简单点的话,直接用debug info分析就行了


这个怎么具体?
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

16
 
我现在没环境,说不清,反正菜单里面有,你找一下
 
 
 

回复

91

帖子

0

TA的资源

一粒金砂(初级)

17
 
打印消息,来看是否存在死锁
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

18
 
CETK只能测试CE自带的驱动而不能测试写的流驱动吧?
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

19
 
引用 16 楼 91program 的回复:
打印消息,来看是否存在死锁


我现在就是通过打印消息发现死锁了,我在接收线程跟处理消息里面都打印消息,接收里面是会一直打印的,但处理里面打印了一段时间就不打印了.
还发现处理线程不打印消息的时候,系统的CPU使用率从40%直线降为26%,不知道为什么.
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

20
 
不打印,说明出现问题,看看从那里开始不再打印信息
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表