一种动态探针方法及其在嵌入式系统中的应用技术方案

技术编号:2836761 阅读:353 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供一种动态探针方法及其在嵌入式系统中的应用,在被测程序运行时采用断点机制将探针插入到被测程序中;具体实现过程为首先确定探针的插入位置,在插入位置处用探针调用指令替换原有的指令,然后执行探针指令,等待探针动作完成之后,再执行插入位置处的原指令。在嵌入式系统应用时,嵌入式系统的被测程序运行时,采用断点机制将探针插入到被测程序例程,以无干扰地收集嵌入式系统的详细性能信息。对比现有嵌入式性能分析工具的数据采集方法,本发明专利技术所述的嵌入式动态探针的最显著特色是数据动态收集,而且灵活性高,方法简便,易于实现。实验结果表明,采用嵌入式动态探针收集的数据正确性、准确性和完备性都较好。

【技术实现步骤摘要】

本专利技术属于计算机性能分析技术。具体地说,本专利技术涉及一种基于动态探测技术的动态探针实现方法,以及动态探针在嵌入式系统中的应用,以动态收集嵌入式系统的性能信息。
技术介绍
随着嵌入式技术的发展,嵌入式应用的不断增长以及嵌入式系统复杂性不断提高,导致嵌入式软件的规模和复杂性也不断提高,有限的硬件资源和功能越来越强的需求依然是嵌入式软件开发领域的主要矛盾,嵌入式软件必须做到精简高效、稳定可靠。嵌入式软件的质量和开发周期对产品的最终质量和上市时间起到决定性的影响,这使得嵌入式软件的开发、分析与测试成为了研究的热点,而上述问题的基础在于对嵌入式系统性能信息的探测和收集。如何设计和实现一种新的性能信息探测和收集方法,完整准确高效收集嵌入式系统的性能信息已经迫在眉梢。从性能数据的收集方式的角度来分类,可将目前主流的性能数据收集方式分成两大类,采样技术和探测技术。其中探测技术又分为静态探测技术和动态探测技术。使用采样技术测量系统性能,首先需要周期性中断应用程序,获取当前程序计数器的值,累计一段时间之后,通过统计分析就可以得到有关性能的精确结果,从而知道程序的热点所在。这种性能测量的方法很简单,不需要增加额外的探测代码,而且对系统的性能干扰很少。目前市场上覆盖测试工具gcov,性能分析工具gprof、VTune等工具都是系统级或者用户级的采样工具。采样技术实现简单,但是存在一定的缺陷。首先,采样技术建立在中断机制的基础之上,不精确的中断机制将会导致不能正确分配指令引起的事件,导致采样失真;其次,采样的量度是固定的,使得采样受限制于采样点,仅仅适合于针对某一特殊目的的有限的性能分析;采样的时间标准受限制,因而只能反映采样进程活跃的时间,当发生了进程切换的时候,时间记录有可能被误记。采样是定时执行的,需要额外访问系统的定时器,且频繁使用中断,开销较大。采样只能描述统计信息,提供系统快照,无法刻画进程间交互信息,不能理解和观测系统动态状况。静态探测技术通常是直接在程序源代码中的特定位置插入显式的测量代码,以生成性能信息。使用这种方法获取性能信息时,需要重新对程序的源代码进行编译,然后运行新编译的源程序。在程序性能分析的过程中,静态探测方式首先将用于性能分析的补丁代码添加进应用程序源代码,然后重新配置编译源码,之后运行编译生成的可执行程序,程序运行之后就可获得性能分析信息。著名的内核探测工具LTT(Linux Trace Toolkit)就是采用静态探测技术实现的。静态探测技术通常是生成永久保存的性能信息文件以搜集性能数据,方便和利用其他的数据分析工具进行分析。但是静态探测技术存在一些问题。首先,添加增量代码添加了代码开销和执行开销,当探测不断需要精确化的时候,总是需要重新编译和运行应用程序。而且为了避免开销过大,不适宜定义过多的探测点。因此记录事件的范围收到了限制,记录信息的全面性和详细性都有所欠缺,不能完全反应系统行为。静态探测的方法在灵活性上也有所缺乏,他探测的需求变化的时候,需要对探测操作进行重新定义。与静态探测技术不同,采用动态探测方式对系统性能数据进行采集的时候不需要对程序的源代码预先修改,编写应用程序的时候不需要考虑将来做性能分析时是否要插入动态探测点,即探测点的定义、插入和删除等等的操作和应用程序源码的编写完全无关。在进行性能分析的时候,使用某种方式记录需要插入探测点的地址以及对应该探测点所定义的处理方式,程序源代码不需要做任何的改动。只有当被测试程序调入系统内存中准备运行的时候,才利用相关的技术,动态修改代码,从而达到收集相关信息的目的。IBM的Dprobes技术就是采用动态探测技术,在执行代码的模块中动态插入软件探针以收集相关信息。动态探测技术克服了静态探测技术的缺点,但是完全采用动态探测机制时,激活大量的探测点需要很大的开销,而且动态探测机制对正确性的要求很高,一旦误用,会导致系统的崩溃。而对于嵌入式系统的性能分析技术上,目前嵌入式性能分析大多采用采样方式或者静态探测的方法收集性能数据。
技术实现思路
本专利技术的目的在于克服现有技术的不足,提供一种动态探针的方法,提高数据收集的正确性、精确性以及完备性,使之能高效、稳定地运行目标机平台。本专利技术的另一目的在于提供一种动态探针在嵌入式系统中的应用。本专利技术所要解决的技术问题是设计一种新型的嵌入式动态探针并将之高效实现,将其应用在嵌入式的性能分析工具中。主要目标是实现嵌入式目标机性能数据的动态收集,满足嵌入式性能分析需求。为了实现专利技术目的一,采用的技术方案如下一种动态探针方法,在被测程序运行时采用断点机制将探针插入到被测程序中;具体实现过程为首先确定探针的插入位置,在插入位置处用探针调用指令替换原有的指令,然后执行探针指令,等待探针动作完成之后,再执行插入位置处的原指令。上述技术方案中,所述探针包括嵌入式动态探针管理器和嵌入式动态探针库;所述嵌入式动态探针管理器负责探针的定义、注册、查询、删除,所述嵌入式动态探针库存储已定义的探针。本专利技术的动态探针方法以断点机制为基础,当处理器执行断点指令的时候,将产生断点异常,将控制权限转移到异常处理程序。动态探针利用动态指令替换技术,用断点指令替换要调试的特定地址的指令,程序执行到断点指令的时候,将触发断点异常。此时,经过修改的断点中断处理程序会及时通知调试器,检查断点发生的地址,搜索断点处对应的断点处理过程等等。采用这种技术,探针将完全动态插入到内存代码中,定义、插入和删除探针的探针操作的编写和应用程序源代码的编写完全无关。即应用程序的开发人员在编写程序源代码的过程中完全不需要考虑在程序运行的时候是否要插入动态探针,使用动态探针的时候也不需要修改程序的源代码。在不同体系结构的处理器中,使用不同的断点指令。IA-32的体系结构中,采用INT3断点指令,在ARM体系结构中,使用Break断点指令。断点的处理方法可由用户定义。调试器不做任何的代码修改动作,只是采用特定的方法记录需要插入的探针地址和对应的探针处理程序。当被调试的程序加载进内存,并且准备执行的时候,调试器要插入探针地址处的内容被保存,将其替换成断点指令。程序运行中,当执行到断点的位置的时候激活中断,经过修改的中断处理程序将判断出断点的位置,将控制权限交给调试器,以执行与此探针对应的探针处理程序。执行完毕之后再用原来的指令替换掉断点指令,或者模拟执行原有的指令,然后进行后续的处理。探针可以多次被触发,即在原指令执行完毕的时候可以再次使用断点指令进行替换。为了实现专利技术目的二,采用的技术方案如下一种动态探针方法在嵌入式系统中的应用,具体应用过程为在嵌入式系统的被测程序运行时,采用断点机制将探针插入到被测程序例程,以无干扰地收集嵌入式系统的详细性能信息。上述技术方案中,所述收集嵌入式系统的详细性能信息通过由探针对被测程序运行时的相关信息进行探测所实现。本专利技术在嵌入式系统中的应用引用动态探测思想,在嵌入式程序运行的同时动态探测和收集嵌入式系统的相关信息。这样进行探测和数据收集的效率明显提高,数据的精确性和完备性得到较大改善。本专利技术动态探针方法在嵌入式系统中的应用提出了若干关键实现技术1、指令替换技术为了实现探针在程序运行的同时动态插桩,进行数据的探测和收集,本专利技术采取指本文档来自技高网
...

【技术保护点】
一种动态探针方法,其特征在于在被测程序运行时采用断点机制将探针插入到被测程序中;具体实现过程为首先确定探针的插入位置,然后在插入位置处用探针调用指令替换原有的指令,执行探针指令,等待探针动作完成之后,再执行插入位置处的原指令。

【技术特征摘要】
1.一种动态探针方法,其特征在于在被测程序运行时采用断点机制将探针插入到被测程序中;具体实现过程为首先确定探针的插入位置,然后在插入位置处用探针调用指令替换原有的指令,执行探针指令,等待探针动作完成之后,再执行插入位置处的原指令。2.根据权利要求1所述的动态探针方法,其特征在于所述探针包括嵌入式动态探针管理器和嵌入式动态探针库;所述嵌入式动态探针管理器负责探针的定义、注册、查询、删除,所述嵌入式动态探针库存储已定义的探针。3.根据权利要求1或2所述的动态探针方法,其特征在于通过em-dprobe数据结构对所述探针进行描述,所述em-dprobe具体如下struct em-dprobe{struct list_head list;char *addr;char*pre_handler;char*post_handler;char*error_handler;char opcode;char insn[MAX_INSN_SIZE];};其中,list表示所有打开的探针所形成的链表;addr表示探针即将插入的位置;pre_handler表示指定的预处理函数的位置;post_handler表示指定的后续处理函数的位置;error_handler表示出错处理函数的位置;opcode表示要替换的指令;charinsn[MAX_INSN_SIZE]表示原来的指令。4.根据权利要求3所述的动态探针方法,其特征在于采用数据结构mprobe描述保存的已存在的探针,所述mprobe的定义如下struct mprobe{int p_index;char*f_name;int p_flags;char*pre_handler;char*post_handler;char*error_handler;};其中,...

【专利技术属性】
技术研发人员:刘发贵宋潇豫吴庆波
申请(专利权)人:华南理工大学广东美泰科技有限公司
类型:发明
国别省市:81[中国|广州]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1