程序执行追踪方法及系统以及计算机可读取储存介质的制作方法

文档序号:6647167阅读:212来源:国知局

专利名称::程序执行追踪方法及系统以及计算机可读取储存介质的制作方法
技术领域
:此发明是一种程序调试(programdebugging)技术,特别是一种可应用于嵌入式装置的执行追踪方法及系统。
背景技术
:在程序测试阶段,程序开发人员通常会使用各式各样测试个案(testcases)于一个程序中执行,试图了解特定测试个案在执行时,执行过哪些指令(instruction)或子例程(subroutine),亦即是程序代码覆盖性(codecoverage),以及执行过哪些条件分支(conditionbranch),亦即是分支覆盖性(branchcoverage)。通常,程序开发人员会利用整合性开发环境(IntegratedDevelopmentEnvironment,IDE)在测试个案执行前,在受测程序中的特定位置,如子例程中的开始位置、条件分支中的开始位置、执行子例程之前的位置或其它,埋藏产生执行日志(executionlog)的指令。当受测程序在执行测试个案时,执行到这些产生执行日志的指令时,即会将程序目前的执行状态输出至一个日志文件(logfile)、日志数据表(logtable)或日志数据对象(logdataobject)中。然而,埋藏产生执行日志的指令至受测程序中的活动,相当耗时。除此之外,当程序测试完成后,还需要将这些预先埋藏的指令移除,更需要花费时间与精神。因此,需要一个用以克服上述缺点并便于检测出程序代码覆盖性以及程序分支覆盖性的程序执行追踪方法及系统。
发明内容本发明的目的在于提供一种便于检测出程序代码覆盖性以及程序分支覆盖性的程序执行追踪方法及系统。本发明揭露一种程序执行追踪方法,由处理单元加载并执行。此方法接收一个符号表或一个二位文件,依据符号表或二位文件的内容检测出至少一个断点,依据检测出的断点产生执行追踪脚本指令。而此执行追踪脚本指令用以于相应于二位文件的程序执行至断点时,输出执行状态信息至储存介质中。于适当的情况下,此方法可另包括依据符号表的内容检测出子例程的起始位置,以及将子例程的起始位置当做断点。此方法可另包括依据二位文件的内容检测出执行条件分支的起始位置,以及将上述执行条件分支的起始位置当做上述断点。本发明另揭露一种计算机可读取储存介质,用以储存一个计算机程序,该计算机程序用以加载至一部计算机系统中并且使得该计算机系统执行如上所述的程序执行追踪方法。本发明更揭露一种程序执行追踪系统,其包括一部计算机,用以接收符号表或二位文件,依据符号表或二位文件的内容检测出至少一断点,以及依据检测出的断点产生执行追踪脚本指令。而此执行追踪脚本指令用以于相应于二位文件的程序执行至断点时,输出执行状态信息至储存介质中。于适当的情况下,计算机可另包括依据符号表的内容检测出子例程的起始位置,以及将子例程的起始位置当做断点。计算机可另包括依据二位文件的内容检测出执行条件分支的起始位置,以及将上述执行条件分支的起始位置当做上述断点。于适当的情况下,程序执行追踪系统可还包括嵌入式装置以及调试接口装置。嵌入式装置执行程序,调试接口装置用以于嵌入式装置与计算机间传递信号,使得执行追踪脚本指令用以于嵌入式装置中的程序执行至断点时,输出执行状态信息至储存介质中。于适当的情况下,计算机中更可包括用以仿真嵌入式装置的仿真器。仿真器执行程序,使得执行追踪脚本指令用以于仿真器中的程序执行至断点时,输出执行状态信息至储存介质中。于较佳的情况下,执行追踪脚本指令包括设定上述断点指令;配置调试环境指令;以及输出执行状态信息指令。储存介质中包括执行日志文件、数据表或数据对象,使得执行追踪脚本指令可于相应于上述二位文件的程序执行至断点时,输出执行状态信息至执行日志文件、数据表或数据对象中。执行状态信息用以追踪程序代码覆盖性(codecoverage)以及分支覆盖性(branchcoverage)。第1图是表示应用于本发明实施例的执行追踪系统的系统架构图;第2图是表示应用于本发明实施例的计算机21的硬件架构图;第3图是表示应用于本发明实施例的范例程序、符号表与二位文件示意图;第4图是表示依据本发明实施例的执行追踪脚本指令产生方法的方法流程图;第5图是表示应用于本发明实施例的范例执行追踪脚本指令示意图;第6图是表示依据本发明实施例的执行追踪脚本指令产生方法的储存介质示意图;第7图与第8图是表示依据本发明实施例的应用环境。标号说明10~程序执行追踪系统;11~处理单元;12~存储器;13~储存装置;14~输出装置;15~输入装置;16~通讯装置;17~总线;21~计算机;22~调试接口装置;23~嵌入式装置;31~程序;32~符号表;33~二位文件;S411、S413、S415、S421~流程步骤;51a、51b、51c、51d、51e~设定断点指令;52a、52b、52c~配置调试环境指令;53a、53b~输出执行状态信息指令;60~储存介质;620~程序执行追踪计算机程序;621~接收符号表以及二位文件逻辑;622~由符号表中检测出子例程的起始位置逻辑;623~由二位文件中检测出执行条件分支的起始位置逻辑;624~依据检测出的起始位置产生执行追踪脚本指令逻辑;711~符号表;713~二位文件;721~执行追踪脚本指令产生单元;731~执行追踪脚本指令;741~执行日志文件/数据表/数据对象;811~仿真器。具体实施例方式第1图是表示应用于本发明实施例的程序执行追踪系统的系统架构图。依据本发明实施例的程序执行追踪系统10包括计算机21、调试接口装置22以及嵌入式装置23,用以于嵌入式装置23中的程序执行时,检测出程序代码覆盖性以及程序分支覆盖性。调试接口装置22用以于计算机21以及嵌入式装置23间传递信号。嵌入式装置23可为智能电话(smartphone)、个人数字助理(PersonalDigitalAssistant,PDA)或其它具有运算能力的嵌入式装置23。于此须注意的是,若计算机21中具有仿真嵌入式装置23中的软硬件环境的仿真器(emulator)时,执行追踪系统10亦可只包括计算机21。第2图是表示应用于本发明实施例的计算机21的硬件架构图。依据本发明实施例的计算机21包括处理单元11、存储器12、储存装置13、输出装置14、输入装置15、通讯装置16,并使用总线17将其连结在一起。除此之外,本领域技术人员也可将本发明实施于其它计算机系统配置(configuration)上,例如,手持式设备(hand-helddevices)、多处理器系统、以微处理器为基础或可程序化的消费性电子产品(microprocessor-basedorprogrammableconsumerelectronics)、网络计算机、迷你计算机、大型主机以及类似的设备。处理单元11可包含单一中央处理单元(central-processingunit;CPU)或者是关连于平行运算环境(parallelprocessingenvironment)的多个平行处理单元。存储器12包含只读存储器(readonlymemory;ROM)、闪存(flashROM)以及/或动态存取存储器(randomaccessmemory;RAM),用以储存可供处理单元11执行的程序模块。一般而言,程序模块包含例程(routines)、程序(program)、对象(object)、组件(component)等,用以执行嵌入式装置的执行追踪功能。本发明亦可以实施于分布式运算环境,其运算工作被连结于通讯网路的远程处理设备所执行。在分布式环境中,嵌入式装置的执行追踪功能的执行也许由本地以及多部远程计算机系统共同完成。储存装置13包含硬盘装置、软盘装置、光盘装置或随身碟装置。执行于嵌入式装置23中的程序,在编译与组译完成后,会产生符号表(symboltable)以及二位文件(binaryfile)。符号表中包含程序中所包含的常序名称以及起始地址。二位文件则为包含可被嵌入式装置23加载并执行的机器码(machinecode)。第3图是表示应用于本发明实施例的范例程序、符号表与二位文件示意图。范例的程序31包含一个判断逻辑,用以于变量a等于变量b时,执行子例程P1,否则执行子例程P2。程序31在编译(compile)与组译(assemble)完成后,产生符号表32以及二位文件33。符号表32中包含子例程P1与P2的起始地址为FF12与FF17。二位文件33中包含可被嵌入式装置23加载并执行的条件判断逻辑,其执行条件分支位于地址FF02与FF03。第4图是表示依据本发明实施例的执行追踪脚本指令(scripts)产生方法的方法流程图。于步骤S411,接收符号表以及二位文件,范例的符号表以及二位文件可分别参考第3图的32与33。于步骤S413,由符号表中检测出子例程的起始位置,以符号表32为例,子例程的起始地址分别为FF12与FF17。于步骤S415,由二位文件中检测出执行条件分支的起始位置,以二位文件33为例,执行条件分支的起始地址分别为FF02与FF03。于步骤S421,依据检测出的起始位置产生执行追踪脚本指令。新产生的执行追踪脚本指令包含以下类型的指令,(1)设定断点于检测出的起始位置;(2)配置调试环境(例如Trace32的调试环境);与(3)当检测到程序中断时,输出执行状态信息(例如,时间、子例程名称、中断地址、条件分支识别码、存储器大小、各个变量的变量值等)至储存介质13中,详而言之,即输出执行状态信息至储存介质13中的执行日志文件/数据表/对象。执行日志文件/数据表/数据对象中的执行状态信息有利于追踪程序代码覆盖性(codecoverage)以及分支覆盖性(branchcoverage)。第5图是表示应用于本发明实施例的范例执行追踪脚本指令示意图。其中,51a至51e是代表设定断点于检测出的起始位置的指令;52a至52c是代表配置调试环境的指令;53a至53b是代表输出执行状态信息至执行日志文件的指令。再者,本发明实施例提出一种储存介质,用以储存计算机程序,上述计算机程序用以实现执行追踪脚本指令产生方法,此方法会执行如上所述的步骤。第6图是表示依据本发明实施例的执行追踪脚本指令产生方法的储存介质示意图。此储存介质60,用以储存计算机程序620,其计算机程序包含四个逻辑,分别为接收符号表以及二位文件逻辑621、由符号表中检测出子例程的起始位置逻辑622、由二位文件中检测出执行条件分支的起始位置逻辑623以及依据检测出的起始位置产生执行追踪脚本指令逻辑624。本发明实施例所揭露的应用于嵌入式装置的执行追踪方法及系统可实施于如第7图与第8图所示的环境。第7图与第8图是表示依据本发明实施例的应用环境。如第7图所示,计算机21中可包含符号表711、二位文件713、执行追踪脚本指令产生单元721、执行追踪脚本指令731与执行日志文件/数据表/数据对象741。执行追踪脚本指令产生单元721可执行如上所述的执行追踪脚本指令产生方法,用以依据符号表711与二位文件713中的内容产生执行追踪脚本指令731。执行追踪脚本指令731则用以当嵌入式装置23执行相应的程序并进入到预先设定的断点时,输出执行状态信息至执行日志文件/数据表/数据对象741。调试接口装置22可为兼容于联合测试行动组(JointTestActionGroup,JTAG)所定义使用5-pin串行协议的装置,于计算机21以及嵌入式装置23间传递信号,用以测试嵌入式装置23中的芯片本身的电路。调试接口装置22中可包含五个管脚(pin),包括四个输入管脚(分别为TRST、TCK、TMS与TDI)以及一个输出管脚(TDO)。TRST(TestReset)管脚用以传递初始化测试信号。TCK(TestClock)管脚用以传递测试时所使用的时脉(clock)。TMS(TestModeSelection)管脚用以传递测试时所使用的测试接口状态机(statemachine)中的状态。TDI(TestDataInput)管脚用以传递测试输入数据。TDO(TestDataOutput)管脚用以传递测试输出数据。如第8图所示,计算机21中可包含符号表711、二位文件713、执行追踪脚本指令产生单元721、执行追踪脚本指令731、执行日志文件/数据表/数据对象741与仿真器811。执行追踪脚本指令产生单元721可执行如上所述的执行追踪脚本指令产生方法,用以依据符号表711与二位文件713中的内容产生执行追踪脚本指令731。仿真器811可用以仿真嵌入式装置23中的软硬件环境。执行追踪脚本指令731则用以当仿真器811执行相应的程序并进入到预先设定的断点时,输出执行状态信息至执行日志文件/数据表/数据对象741。虽然本发明的实施例揭露如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围当视所附的权利要求范围所界定者为准。权利要求1.一种程序执行追踪方法,被处理单元加载并执行,其方法包括接收符号表或二位文件;依据上述符号表或上述二位文件的内容检测出至少一断点;以及依据上述检测出的断点产生执行追踪脚本指令,其中,上述执行追踪脚本指令用以于相应于上述二位文件的程序执行至上述断点时,输出执行状态信息至储存介质中。2.根据权利要求1所述的程序执行追踪方法,还包括依据上述符号表的内容检测出子例程的起始位置;以及将上述子例程的起始位置当做上述断点。3.根据权利要求1所述的程序执行追踪方法,还包括依据上述二位文件的内容检测出执行条件分支的起始位置;以及将上述执行条件分支的起始位置当做上述断点。4.根据权利要求1所述的程序执行追踪方法,还包括依据上述符号表的内容检测出子例程的起始位置;依据上述二位文件的内容检测出执行条件分支的起始位置;以及将上述子例程的起始位置以及上述执行条件分支的起始位置当做上述断点。5.根据权利要求1所述的程序执行追踪方法,其中上述执行追踪脚本指令包括设定上述断点指令;配置调试环境指令;以及输出执行状态信息指令。6.根据权利要求1所述的程序执行追踪方法,其中上述储存介质中包括执行日志文件、数据表或数据对象,以及上述执行追踪脚本指令用以于相应于上述二位文件的程序执行至上述断点时,输出上述执行状态信息至上述执行日志文件、上述数据表或上述数据对象中。7.根据权利要求1所述的程序执行追踪方法,其中上述执行状态信息用以追踪程序代码覆盖性以及分支覆盖性。8.一种计算机可读取储存介质,用以储存计算机程序,该计算机程序用以加载至计算机系统中并且使得该计算机系统执行程序执行追踪方法,其方法包括下列步骤接收符号表或二位文件;依据上述符号表或上述二位文件的内容检测出至少一断点;以及依据上述检测出的断点产生执行追踪脚本指令,其中上述执行追踪脚本指令用以于相应于上述二位文件的程序执行至上述断点时,输出执行状态信息至储存介质中。9.一种程序执行追踪系统,其包括计算机,用以接收符号表或二位文件,依据上述符号表或上述二位文件的内容检测出至少一断点,以及依据上述检测出的断点产生执行追踪脚本指令,其中,上述执行追踪脚本指令用以于相应于上述二位文件的程序执行至上述断点时,输出执行状态信息至储存介质中。10.根据权利要求9所述的程序执行追踪系统,其中上述计算机依据上述符号表的内容检测出子例程的起始位置,以及将上述子例程的起始位置当做上述断点。11.根据权利要求9所述的程序执行追踪系统,其中上述计算机依据上述二位文件的内容检测出执行条件分支的起始位置,以及将上述执行条件分支的起始位置当做上述断点。12.根据权利要求9所述的程序执行追踪系统,其中上述计算机依据上述符号表的内容检测出子例程的起始位置,依据上述二位文件的内容检测出执行条件分支的起始位置,以及将上述子例程的起始位置以及上述执行条件分支的起始位置当做上述断点。13.根据权利要求9所述的程序执行追踪系统,其中上述执行追踪脚本指令包括设定上述断点指令;配置调试环境指令;以及输出执行状态信息指令。全文摘要一种程序执行追踪方法,由处理单元加载并执行。此方法接收一个符号表或一个二位文件,依据符号表或二位文件的内容检测出至少一个断点,依据检测出的断点产生执行追踪脚本指令。而此执行追踪脚本指令用以于相应于二位文件的程序执行至断点时,输出执行状态信息至储存介质中。文档编号G06F11/36GK1936861SQ20051010378公开日2007年3月28日申请日期2005年9月23日优先权日2005年9月23日发明者辛志浩,袁嘉尚申请人:明基电通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1