收藏 分销(赏)

VxWorks系统下软件异常运行的故障定位方法.pdf

上传人:自信****多点 文档编号:893604 上传时间:2024-04-03 格式:PDF 页数:3 大小:1.41MB
下载 相关 举报
VxWorks系统下软件异常运行的故障定位方法.pdf_第1页
第1页 / 共3页
VxWorks系统下软件异常运行的故障定位方法.pdf_第2页
第2页 / 共3页
VxWorks系统下软件异常运行的故障定位方法.pdf_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、Science and Technology&Innovation科技与创新2023 年 第 19 期89文章编号:2095-6835(2023)19-0089-03VxWorks 系统下软件异常运行的故障定位方法赵昶宇(天津津航计算技术研究所,天津 300308)摘要:在 VxWorks 软件系统下,受限于目前的测试手段和技术,在应用程序测试阶段容易忽略一些隐蔽的程序缺陷或者错误,导致应用程序在运行过程中出现软件死机和系统复位的现象。对于软件开发人员而言,软件运行过程中死机和系统复位的现象不一致,随机出现且很难复现,给程序缺陷和错误的定位造成了很大的困难。总结了 VxWorks 操作系统中软

2、件死机和系统复位等异常的故障定位方法,能够帮助软件开发人员和测试人员在最短的时间内定位并解决故障,保证 VxWorks 软件系统稳定运行。关键词:VxWorks 系统;软件死机;系统复位;故障定位中图分类号:TP311文献标志码:ADOI:10.15913/ki.kjycx.2023.19.027在 VxWorks 系统下开发实时软件的过程中,由于软件开发人员的经验或技术能力不足,导致开发出的软件在后期运行的过程中偶尔出现软件死机或者系统复位的现象。这些 VxWorks 系统下的异常现象往往是内存泄漏、堆栈溢出或非法指针操作等原因造成的系统崩溃。由于出现这些故障的现象不一,而且往往很难故障复现

3、,所以故障定位异常困难。通常情况下采用在线调试(通过网络或是串口)的手段对 VxWorks 系统下出现的软件故障进行跟踪调试。但是一旦 VxWorks 系统出现死机或者复位时,就无法进行在线调试。现有的解决 VxWorks 系统下死机或复位的方法有基于堆栈异常定位故障、任务死循环定位、堆栈回溯分析法、看门狗电路等。这些方法大多只是针对某一种故障现象提出定位方法,或者只是能够检测软件出现故障,不能定位故障,对于 VxWorks系统下死机和复位故障定位提供的帮助有限。为了实现对 VxWorks 系统下软件死机和复位问题的快速有效故障定位,本文提出了 VxWorks 系统下软件死机和系统复位的故障定

4、位方法。这些方法能够对发生异常的现场进行保存,用最短的时间帮助软件开发人员定位故障发生点,并初步得出产生故障的原因。1利用 ED&R 工具诊断故障在 VxWorks 操作系统下提供了一种错误检测及报告的机制帮助软件开发者调试软件故障,该机制被称为 ED&R(Error Detection and Reporting)功能。在 RAM(RandomAccess Memory,随机存取存储器)中保留一块内存区域,在系统热启动时不会擦除该块区域的内容,此区域用做 ED&R 记录的空间。若该区域中保存的错误信息过多,ED&R 会自动覆盖掉保存的最旧的信息。VxWorks 内核在处理 CPU、用户以及地

5、址等各种各样的异常时,会在 ED&R 中记录异常发生的任务、地址、堆栈调用、异常触发时间,然后再进行保护机制,如热启动等。当系统重启后,通过 VxWorks操作系统提供的Show Routine在Shell中查看发生的故障,进行问题回溯。ED&R 信息所对应的内存区域如图 1 所示1。图 1ED&R 信息所对应的内存区域ED&R 记录的异常种类很多,这些记录可以按照2 个标准进行分类:事件类型、严重级别。事件类型表示发生异常的上下文(在系统初始化时或是在进程中),严重级别表示异常的严重程度,在出现致命错误的情况下,严重级别也与系统对异常的反应有关。VxWorks 对错误或异常的记录保存了事件发

6、生时关于系统的详细信息,每条记录包括以下信息:记录产生的日期和时间;事件类型和严重级别;操作系统版本;任务名称和任务 ID 号,进程名称和进程 ID 号;创建记录的源文件和行号。此外,每条记录还可能包含以下特定体系结构的科技与创新Science and Technology&Innovation902023 年 第 19 期信息:内存映射;异常信息;处理器寄存器;分解清单;堆栈跟踪。在 使 用 VxWorks 的 ED&R 工 具 前,需 要 在VxWorks 镜 像 文 件 中 配 置 INCLUDE_EDR_PM、INCLUDE_EDR_ERRLOG、INCLUDE_EDR_SHOW和 I

7、NCLUDE_EDR_SYSDBG_FLAG 组件。配置完后,当异常记录完毕后,在 Shell 中通过 edrShow()、edrFatalShow()、edrInfoShow()等命令查看发生的异常内容。ED&R 工具记录的各种信息对于评估驱动程序、应用程序以及调试软件 bug 等具有非常大的帮助,但是 ED&R 毕竟是记录在 RAM 中,一旦系统冷启动,所有的记录信息都会消失。若想保存 ED&R 中的各种重要记录,需要设置辅助手段将 ED&R 记录内容保存到非易失性存储器中。在 VxWorks 下操作系统提供 ioGlobalStdSet()函数支持全局输出重定向,函数原型为:void i

8、oGlobalStdSet(int stdFd,int newFd);其中 stdFd 为 STD_OUT 或者 STD_ERR,newFd为重定向的文件描述符。利用这个函数就可以实现系统输出信息的捕获。在VxWorks下操作系统提供ioTaskStdSet()函数支持任务输出重定向,函数原型为:void ioTaskStdSet(int taskId,int stdFd,int newFd);其中 taskId 为任务的 ID 号,stdFd 为 STD_OUT或者 STD_ERR,newFd 为重定向的文件描述符。利用这个函数就可以实现每个任务输出信息的捕获。如果需要将 VxWorks 系

9、统内存使用情况、堆栈使用情况和 ED&R 故障诊断信息保存到文件中,可进行如下设置:FILE*fstream=fopen(/ata0/errlog.txt,a+);memShow(taskId);checkStack(taskId);edrFatalShow(taskId);ioGlobalStdSet(STD_OUT,fileno(fstream);ioGlobalStdSet(STD_ERR,fileno(fstream);ioTaskStdSet(TaskID,STD_ERR,fileno(fstream);在 VxWorks 系统的 TaskID 任务出现异常时,系统会自动将该任务的内

10、存异常、堆栈异常和 ED&R 故障信息保存在 errlog.txt 文件中。采用将异常信息保存在文件中的方法,保护了异常现场,避免了系统死机或者复位后数据丢失。2内存错误检测技术VxWorks 下操作系统提供了 2 个对内存错误检测的工具库。一个是 memEdrLib 库,用于在一个进程中对用户堆和内存分区的操作进行错误检查,这个库可以链接到用WindRiver编译器或GNU编译器编译的可执行文件;另一个是运行时错误检查(RTEC)工具,它检查附加的错误,比如缓冲区溢出和不足,静态和自动变量引用检查。此特性仅由 WindRiver 编译器提供。这些工具检测到的错误通过错误检测和报告组件的日志功

11、能进行报告,这必须包含在 VxWorks 的配置中以提供此功能。为了补充 memLib 和 memPartLib 中内置的错误检测特性(比如有效块的检查),内存区分调试库memEdrLib 可以用来对 memLib 和 memPartLib 操作执行自动、程序性和交互式的错误检查。在运行memEdrLib 库时,当调用内存分配、内存释放和重新分配函数时,会自动记录并识别以下错误类型:分配返回同一个分区中已经分配的块中的块地址;分配返回一个位于任务堆栈空间中的块地址;分配返回一个位于内核静态数据区的块地址;释放一个在任务堆栈空间中的指针;释放一个已经释放但仍然在空闲队列中的内存;释放内核静态数据

12、区的内存;释放与分配内存不同的分区中的内存;释放部分内存块。VxWorks 内存错误检测技术在 WindRiver 集成开发环境中以组件的形式供用户使用。因此,需要用户在集成开发环境中配置 INCLUDE_MEM_EDR 组件。配置完成后,编译当前系统镜像,将镜像下载到目标系统中。在目标系统运行时,利用上文提及的全局重定向和任务重定向方法,通过调用 memShow()、edrShow()、edrFatalShow()或 edrInfoShow()等命令检测并记录内存错误。3设计任务监控获取出错任务的名称和状态VxWorks 系统提供 2 个接口函数实现任务监控功能2,具体如下:int task

13、IdListGet(int idList,int maxTasks);STATUS taskStatusString(int tid,char*pString);taskIdListGet()函数可以获得当前操作系统中运行的所有任务,idList 存放获取的任务 ID 的数组,maxTasks 为数组大小。taskStatusString 获取任务状态名称,tid 是任务 ID,pString 为任务状态名称。在发现任务出错时通过回调函数告诉用户出错任务情况,出错任务数据结构为:struct TroubleTaskStructint taskID;/出错任务 idScience and Tec

14、hnology&Innovation科技与创新2023 年 第 19 期91char taskName256;/任务名称char taskState32;/任务状态;回调函数原型为:typedefvoid(*TroubleTaskFuncPtr)(constTroubleTaskStructtroubleTaskVector,inttroubleTaskNum);在调用 taskStatusString 函数检测到有出错的任务后,调用回调函数实现对异常任务的监控。在回调函数中将异常任务信息保存在日志文件中,便于事后分析。在 对 每 个 任 务 进 行 监 控 时,还 可 以 调 用checkS

15、tack(int taskNameOrId)函数检查每个任务的堆栈情况,调用 memShow(int taskNameOrId)函数检查内存使用情况。采用任务监控的方法,可以实现对 VxWorks 系统下所有任务的实时监控。4采用异常处理钩子函数在异常服务程序中保存异常现场VxWorks 系统提供 excHookAdd()钩子函数对系统异常进行处理3,该函数的原型为:Void excHookAdd(FUNCPTR excepHook);其中 excepHook 指向用户定义的异常处理程序,当系统检测到异常时,会自动执行用户定义的异常处理程序。excHookAdd()钩子函数也是针对每个任务进行

16、异常处理的,用户可以在自定义的异常处理程序中将当前任务中的关键和重要信息保存到文件中。5结束语针对 VxWorks 系统下软件死机和复位故障难以定位的问题,本文提出了一种 VxWorks 系统下软件死机的故障定位方法。该方法利用 ED&R 工具诊断故障,采用全局重定向和任务重定向输出系统故障和任务故障,利用内存错误检测技术查找程序运行过程中的内存错误,设计任务监控获取出错任务的名称和状态,并采用异常处理钩子函数在异常服务程序中保存异常现场。本文采用的故障定位方法可以有效记录系统死机和复位时系统级和任务级的故障信息,便于软件开发人员快速定位故障发生点,引导软件开发人员向着正确的排故方向进行故障原

17、因分析。参考文献:1殷战宁,刘琳.VxWorks 的内存配置和管理J.舰船电子对抗,2012,35(3):104-1092苏玉强,刘颖,张磊.VxWorks 下的任务监控方法及其应用J.工业控制计算机,2008(2):35-363边聚广,魏海光,许春雷.基于异常处理的控制系统软件故障定位方法J.微处理机,2012,33(4):59-62,66作者简介:赵昶宇(1982),男,陕西汉中人,工学硕士,高级工程师,主要从事嵌入式系统软件测试方面的研究。(编辑:张超)(上接第 88 页)2安全控制措施潜液泵安装期间应采取如下安全措施:配置专职安全管理人员,全面负责潜液泵安装期间的安全监护工作;严格执行

18、 JSA(Job Safety Analysis,工作安全分析)、班前会制度,强化作业人员安全意识和风险意识;严格执行起重作业管理制度、限制空间作业许可管理制度、隔离锁定管理制度、PPE(个人防护装备)管理制度、消防管理制度、交叉作业管理制度等相关规章制度;编制专项应急预案,有效应对和处置潜液泵安装过程中可能发生的突发事件。3结论通过某 LNG 接收站储罐项目低温潜液泵自主安装的施工实践,经过不断地经验积累和凝炼总结,初步掌握了该类低温潜液泵的安装方法,通过对低温潜液泵工程安装前准备工作及安装过程中各工序衔接步骤及整个过程中需要重点关注的安全控制措施的系统介绍,以期对同类项目 LNG 低温储罐潜液泵的安装运行提供借鉴。参考文献:1孙晓玲,刘忠明,张燕.液化天然气潜液泵的研制J.低温工程,2010(2):20-232梁骞,厉彦忠,谭宏博,等.潜液式 LNG 泵的结构特点及其应用优势J.天然气工业,2008(2):123-125,175.3张翼飞,仝晓龙.液化天然气气(LNG)输送泵的特点与应用J.水泵技术,2006(6):38-40.作者简介:曹玉(1987),女,研究生,工程师,研究方向为非常规天然气相关科技管理。(编辑:丁琳)

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 论文指导/设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服