4491|5

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

VxWorks异常复位,不能必然复现,如何定位?请大侠指教,谢谢! [复制链接]

 VxWorks异常复位,不能必然复现,如何定位?请大侠指教,谢谢!如何获取造成复位的任务及相关堆栈内容。

最新回复

  如果确认了是软件主动复位的话,可以尝试使用硬断点的方式终止程序执行,然后使用单步执行命令查找函数的运行过程。需要注意的是调测前关闭检测功能,例如软件狗、监守异常任务等   比如: A 函数是最终的复位接口   telnet 单板, b/bh  A     类似VC下的 F9   断住执行时     s 单步执行   关键是寄存器的地址或参数取值  类似VC下的 F10                  l 看汇编执行        通过这些方法基本可以动态监测程序执行过程    另外想说明的一点是,这些问题基本上都属于疑难杂症,一般不会轻松的解决所以需要定位的人员保持耐心和最终解决问题的信心,相信这些隐藏的bug最终会得到彻底的修复,呵呵   详情 回复 发表于 2009-11-20 10:06
点赞 关注
 

回复
举报

86

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
你提供的这些信息太宽泛了,别人很难给你有效的建议。
你先看下你们系统内现在已经提供了哪些定位手段。有事先获取了哪些信息,先分析这些信息。一般使用vxworks系统的人,都自己准备了很多异常定位手段。
1. 你需要先确定复位是在软件控制下复位的还是看门狗引起的。软件主动调用函数进行复位的话就好办,你直接在复位函数中打点确定。vxworks下有个sysExcMsg你可以参考下,这里记录了复位的信息,不过对这个不要报很大希望。
2. 如果是看门狗复位,有如下几个可能:a)喂狗策略有问题导致长时间没喂狗. b)内存操作失误改写了内核数据,这样调度出错当然喂狗任务也就歇菜了
3. 检查硬件是否有问题。硬件出问题在PC开发中一般几乎不考虑。但嵌入式系统中,硬件都是自己开发的,出错几率也经常非常高。

这种问题,需要你事先已经累积了很多调试手段和经验,根据获取的数据逐个分析。GOOD LUCK
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
谢谢楼上的兄弟,你的建议很好。
现在就是不知道是哪个函数、哪个任务引起的复位,看了临终遗言的信息没有获得太大的帮助。根据记的日志分析应该不是看门狗的问题。我怀疑是内存操作失误或者中断有问题,但是现在我们的项目由多个模块组成,每个模块又起了很多任务,公司出于信息安全的考虑,模块之间互相看不到对方的代码。我想定位是哪个任务引起的复位,这样就可以要求相关模块去自查,楼上的兄弟有什么建议没有?还有就是这个复位不好复现,也比较麻烦。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 
你怎确定复位不是看门狗复位的?如果不是看门狗复位那就是软件复位了,软件复位你直接在复位接口上挂钩子不就知道是谁复位了吗。
你首先需要安静,仔细考虑复位前后的操作或者流程的一些差异。是在某些操作组合后触发;是在一定业务量后触发;是在一定时间后才能触发?你可以尝试使用自动测试触发流程的方式,加大业务量,说不定在业务量极端情况下可以帮助你快速复现问题。你要相信,没有无缘无故的问题,问题也不会是随便都可以触发,肯定有一个特别的地方引起的。如果你能找出这个问题所在,那么你差不多就解决了问题。
如果你实在无法找出问题的复现方法,那么你需要判断,在复位时是只有任务调度出问题了还是中断触发也出问题了。你的临终遗言记录了哪些东西,中断轨迹有记录没,一些你确认没问题的,可以先去掉。
当然复现前你就要做好其它验证准备,比如你需要在各种钩子中添加检测,记录数据确认或者排除你的疑问。以免再次复现后,你仍然无法得到比前一次更多的分析数据。

你需要仔细理清你们系统所有可能导致复位的可能途径,然后再仔细罗列可能触发这些途径的问题,设计相应的测试验证方法来确认或排除你的想法。比如你怀疑是内存操作有问题,那么你完全可以设计一个检测的方法,在每次消息处理后就扫描检测一些典型内存区。如果你无法罗列清这些可能,你需要和你们公司的其他人探讨下,要相信,你们那肯定有人是很清楚这类问题并帮你设计测试验证手段。
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

5
 
谢谢lleennaa大侠!
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

6
 
  如果确认了是软件主动复位的话,可以尝试使用硬断点的方式终止程序执行,然后使用单步执行命令查找函数的运行过程。需要注意的是调测前关闭检测功能,例如软件狗、监守异常任务等
  比如: A 函数是最终的复位接口
  telnet 单板, b/bh  A     类似VC下的 F9
  断住执行时     s 单步执行   关键是寄存器的地址或参数取值  类似VC下的 F10
                 l 看汇编执行
   
   通过这些方法基本可以动态监测程序执行过程

   另外想说明的一点是,这些问题基本上都属于疑难杂症,一般不会轻松的解决所以需要定位的人员保持耐心和最终解决问题的信心,相信这些隐藏的bug最终会得到彻底的修复,呵呵

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表