[发明专利]一种基于多线程嵌入式系统并行程序跟踪与回放方法有效
申请号: | 201410369935.7 | 申请日: | 2014-07-31 |
公开(公告)号: | CN104216764B | 公开(公告)日: | 2017-09-12 |
发明(设计)人: | 张晶;潘有顺;陈沫良;张果;崔毅;严涵;沈江炎;容会 | 申请(专利权)人: | 昆明理工大学 |
主分类号: | G06F9/46 | 分类号: | G06F9/46;G06F11/36 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 650093 云*** | 国省代码: | 云南;53 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 多线程 嵌入式 系统 并行 程序 跟踪 回放 方法 | ||
技术领域
本发明涉及一种基于多线程嵌入式系统并行程序跟踪与回放方法,属于并行程序调试与检测技术领域。
背景技术
调度、通信与同步控制等操作在嵌入式系统中并行程序经常发生,且存在随机性。这些使得并行程序运行结果具有不确定性与不可再现性。处于同一进程中的多个线程共享相同资源,即使程序初始条件相同,由于嵌入式系统中断、操作延时以及噪声等内外环境因素的干扰,很大程度上影响并改变了系统中并行程序的执行和响应时间,直接引起了线程调度、通信与同步操作可控性降低,导致了系统存在不确定性,甚至在系统出现竞态条件。
因此,在嵌入式系统开发过程中,为了消除系统具有的不确定性因素可能产生的如竞态条件等系统可靠性问题,同时掌握程序运行过程中的详细的动态信息,需要充分考虑如何实现有效地追踪嵌入式系统中的并行程序的执行路径并进行回放,以便分析多线程执行过程中存在的问题,保障系统的安全稳定的运行。
发明内容
本发明提供了一种基于多线程嵌入式系统并行程序跟踪与回放方法,以用于解决嵌入式系统中多线程并行程序运行中表现出的不确定性和结果的不可再现等问题。
本发明的技术方案是:一种基于多线程嵌入式系统并行程序跟踪与回放方法,首先在并行程序执行阶段,利用嵌入式系统中程序运行路径追踪软硬件框架,记录多个线程执行路径信息,并生成一个记事本文件;
当程序中所有的线程执行路径信息记录完成后,程序调试人员通过查看程序源代码中的关注点与记录信息来检查记事本文件中的路径信息记录是否完整;
如果路径信息记录完整,进入并行程序回放阶段,利用嵌入式系统中程序路径回放软硬件框架,确保并行程序按照记事本文件中保存的路径重演。
所述基于多线程嵌入式系统并行程序跟踪与回放方法的具体步骤如下:
A、在并行程序执行阶段,利用嵌入式系统中程序运行路径追踪软硬件框架,记录多个线程执行路径信息,并生成一个记事本文件的具体步骤如下:
A1、首先宿主机中的嵌入式开发工具将程序源代码发送到缓冲区A中;
A2、宿主机中的线程追踪控制模块扫描此嵌入式程序源代码,并定位程序源代码中所有的横切关注点,此横切关注点包括除main函数之外的函数与方法,在所有横切关注点的开始处插入面向方面的切入点Pointcut标志;
A3、宿主机中的嵌入式开发工具使用Aspect机制新建一个包含Before通知横切关注点的Aspect函数,然后将Aspect函数与程序源代码编织成可执行面向方面程序,通过JTAG工具烧录到目标机存储器中;
A4、嵌入式操作系统启动面向方面程序,同时线程追踪检测模块监控程序的运行;
当出现线程调用函数或方法时,则获取当前访问线程、当前函数或方法、调用对象信息,并将这些信息组合成一个线程记录TM;同理,当程序再次出现线程调用其他函数或方法时,可得到程序中其余的线程记录TM;
当没有出现线程调用函数或方法时,则线程追踪检测模块继续监控程序的运行;
A5、线程记录TM通过目标机中的通信模块经过USB串口线发送到宿主机中的缓冲区B中保存;
A6、程序一次执行完成后,宿主机中的线程追踪控制模块将缓冲区B中的所有线程记录TM按时间的先后顺序加入到线程队列TQ中;
A7、宿主机将线程队列TQ输出到记事本文件out.txt中;
B、当程序中所有的线程执行路径信息记录完成后,程序调试人员通过查看程序源代码中的关注点与记录信息来检查记事本文件out.txt中的路径信息记录是否完整;
如果路径信息记录完整,进入并行程序回放阶段;
如果路径信息记录不完整,则重复执行步骤A4、A5、A6、A7;
C、进入并行程序回放阶段,并行程序回放阶段中并行程序按照记事本文件out.txt中保存的路径重演的具体步骤如下:
C1、线程回放控制模块将缓冲区B中线程队列TQ所包含的线程记录TM信息按FIFO原则依次通过USB串口线发送到目标机中的通信模块;
C2、目标机中的线程回放组件关闭线程追踪检测模块监控功能,防止在回放过程中再次对程序执行过程进行追踪检测;
C3、目标机中的线程回放组件读取并根据线程记录TM中所包含的线程、函数和访问对象的信息启动指定的线程,调用指定的函数去访问指定的对象,实现了该线程的执行信息的回放;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于昆明理工大学,未经昆明理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410369935.7/2.html,转载请声明来源钻瓜专利网。