CN1936861A - 程序执行追踪方法及系统以及计算机可读取储存介质 - Google Patents
程序执行追踪方法及系统以及计算机可读取储存介质 Download PDFInfo
- Publication number
- CN1936861A CN1936861A CN 200510103785 CN200510103785A CN1936861A CN 1936861 A CN1936861 A CN 1936861A CN 200510103785 CN200510103785 CN 200510103785 CN 200510103785 A CN200510103785 A CN 200510103785A CN 1936861 A CN1936861 A CN 1936861A
- Authority
- CN
- China
- Prior art keywords
- mentioned
- execution
- reference position
- breakpoint
- files
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
一种程序执行追踪方法,由处理单元加载并执行。此方法接收一个符号表或一个二位文件,依据符号表或二位文件的内容检测出至少一个断点,依据检测出的断点产生执行追踪脚本指令。而此执行追踪脚本指令用以于相应于二位文件的程序执行至断点时,输出执行状态信息至储存介质中。
Description
技术领域
此发明是一种程序调试(program debugging)技术,特别是一种可应用于嵌入式装置的执行追踪方法及系统。
背景技术
在程序测试阶段,程序开发人员通常会使用各式各样测试个案(testcases)于一个程序中执行,试图了解特定测试个案在执行时,执行过哪些指令(instruction)或子例程(subroutine),亦即是程序代码覆盖性(codecoverage),以及执行过哪些条件分支(condition branch),亦即是分支覆盖性(branch coverage)。通常,程序开发人员会利用整合性开发环境(Integrated Development Environment,IDE)在测试个案执行前,在受测程序中的特定位置,如子例程中的开始位置、条件分支中的开始位置、执行子例程之前的位置或其它,埋藏产生执行日志(executionlog)的指令。当受测程序在执行测试个案时,执行到这些产生执行日志的指令时,即会将程序目前的执行状态输出至一个日志文件(log file)、日志数据表(log table)或日志数据对象(log data object)中。然而,埋藏产生执行日志的指令至受测程序中的活动,相当耗时。除此之外,当程序测试完成后,还需要将这些预先埋藏的指令移除,更需要花费时间与精神。因此,需要一个用以克服上述缺点并便于检测出程序代码覆盖性以及程序分支覆盖性的程序执行追踪方法及系统。
发明内容
本发明的目的在于提供一种便于检测出程序代码覆盖性以及程序分支覆盖性的程序执行追踪方法及系统。
本发明揭露一种程序执行追踪方法,由处理单元加载并执行。此方法接收一个符号表或一个二位文件,依据符号表或二位文件的内容检测出至少一个断点,依据检测出的断点产生执行追踪脚本指令。而此执行追踪脚本指令用以于相应于二位文件的程序执行至断点时,输出执行状态信息至储存介质中。
于适当的情况下,此方法可另包括依据符号表的内容检测出子例程的起始位置,以及将子例程的起始位置当做断点。此方法可另包括依据二位文件的内容检测出执行条件分支的起始位置,以及将上述执行条件分支的起始位置当做上述断点。
本发明另揭露一种计算机可读取储存介质,用以储存一个计算机程序,该计算机程序用以加载至一部计算机系统中并且使得该计算机系统执行如上所述的程序执行追踪方法。
本发明更揭露一种程序执行追踪系统,其包括一部计算机,用以接收符号表或二位文件,依据符号表或二位文件的内容检测出至少一断点,以及依据检测出的断点产生执行追踪脚本指令。而此执行追踪脚本指令用以于相应于二位文件的程序执行至断点时,输出执行状态信息至储存介质中。
于适当的情况下,计算机可另包括依据符号表的内容检测出子例程的起始位置,以及将子例程的起始位置当做断点。计算机可另包括依据二位文件的内容检测出执行条件分支的起始位置,以及将上述执行条件分支的起始位置当做上述断点。
于适当的情况下,程序执行追踪系统可还包括嵌入式装置以及调试接口装置。嵌入式装置执行程序,调试接口装置用以于嵌入式装置与计算机间传递信号,使得执行追踪脚本指令用以于嵌入式装置中的程序执行至断点时,输出执行状态信息至储存介质中。
于适当的情况下,计算机中更可包括用以仿真嵌入式装置的仿真器。仿真器执行程序,使得执行追踪脚本指令用以于仿真器中的程序执行至断点时,输出执行状态信息至储存介质中。
于较佳的情况下,执行追踪脚本指令包括:设定上述断点指令;配置调试环境指令;以及输出执行状态信息指令。储存介质中包括执行日志文件、数据表或数据对象,使得执行追踪脚本指令可于相应于上述二位文件的程序执行至断点时,输出执行状态信息至执行日志文件、数据表或数据对象中。执行状态信息用以追踪程序代码覆盖性(code coverage)以及分支覆盖性(branch coverage)。
附图说明
第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可为智能电话(smart phone)、个人数字助理(Personal Digital Assistant,PDA)或其它具有运算能力的嵌入式装置23。于此须注意的是,若计算机21中具有仿真嵌入式装置23中的软硬件环境的仿真器(emulator)时,执行追踪系统10亦可只包括计算机21。
第2图是表示应用于本发明实施例的计算机21的硬件架构图。依据本发明实施例的计算机21包括处理单元11、存储器12、储存装置13、输出装置14、输入装置15、通讯装置16,并使用总线17将其连结在一起。除此之外,本领域技术人员也可将本发明实施于其它计算机系统配置(configuration)上,例如,手持式设备(hand-held devices)、多处理器系统、以微处理器为基础或可程序化的消费性电子产品(microprocessor-based or programmableconsumer electronics)、网络计算机、迷你计算机、大型主机以及类似的设备。处理单元11可包含单一中央处理单元(central-processing unit;CPU)或者是关连于平行运算环境(parallel processing environment)的多个平行处理单元。存储器12包含只读存储器(read only memory;ROM)、闪存(flashROM)以及/或动态存取存储器(random access memory;RAM),用以储存可供处理单元11执行的程序模块。一般而言,程序模块包含例程(routines)、程序(program)、对象(object)、组件(component)等,用以执行嵌入式装置的执行追踪功能。本发明亦可以实施于分布式运算环境,其运算工作被连结于通讯网路的远程处理设备所执行。在分布式环境中,嵌入式装置的执行追踪功能的执行也许由本地以及多部远程计算机系统共同完成。储存装置13包含硬盘装置、软盘装置、光盘装置或随身碟装置。
执行于嵌入式装置23中的程序,在编译与组译完成后,会产生符号表(symbol table)以及二位文件(binary file)。符号表中包含程序中所包含的常序名称以及起始地址。二位文件则为包含可被嵌入式装置23加载并执行的机器码(machine code)。第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中的执行日志文件/数据表/对象。执行日志文件/数据表/数据对象中的执行状态信息有利于追踪程序代码覆盖性(code coverage)以及分支覆盖性(branch coverage)。第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可为兼容于联合测试行动组(Joint TestAction Group,JTAG)所定义使用5-pin串行协议的装置,于计算机21以及嵌入式装置23间传递信号,用以测试嵌入式装置23中的芯片本身的电路。调试接口装置22中可包含五个管脚(pin),包括四个输入管脚(分别为TRST、TCK、TMS与TDI)以及一个输出管脚(TDO)。TRST(Test Reset)管脚用以传递初始化测试信号。TCK(Test Clock)管脚用以传递测试时所使用的时脉(clock)。TMS(Test Mode Selection)管脚用以传递测试时所使用的测试接口状态机(state machine)中的状态。TDI(Test Data Input)管脚用以传递测试输入数据。TDO(Test Data Output)管脚用以传递测试输出数据。
如第8图所示,计算机21中可包含符号表711、二位文件713、执行追踪脚本指令产生单元721、执行追踪脚本指令731、执行日志文件/数据表/数据对象741与仿真器811。执行追踪脚本指令产生单元721可执行如上所述的执行追踪脚本指令产生方法,用以依据符号表711与二位文件713中的内容产生执行追踪脚本指令731。仿真器811可用以仿真嵌入式装置23中的软硬件环境。执行追踪脚本指令731则用以当仿真器811执行相应的程序并进入到预先设定的断点时,输出执行状态信息至执行日志文件/数据表/数据对象741。
虽然本发明的实施例揭露如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围当视所附的权利要求范围所界定者为准。
Claims (13)
1.一种程序执行追踪方法,被处理单元加载并执行,其方法包括:
接收符号表或二位文件;
依据上述符号表或上述二位文件的内容检测出至少一断点;以及
依据上述检测出的断点产生执行追踪脚本指令,
其中,上述执行追踪脚本指令用以于相应于上述二位文件的程序执行至上述断点时,输出执行状态信息至储存介质中。
2.根据权利要求1所述的程序执行追踪方法,还包括:
依据上述符号表的内容检测出子例程的起始位置;以及
将上述子例程的起始位置当做上述断点。
3.根据权利要求1所述的程序执行追踪方法,还包括:
依据上述二位文件的内容检测出执行条件分支的起始位置;以及
将上述执行条件分支的起始位置当做上述断点。
4.根据权利要求1所述的程序执行追踪方法,还包括:
依据上述符号表的内容检测出子例程的起始位置;
依据上述二位文件的内容检测出执行条件分支的起始位置;以及
将上述子例程的起始位置以及上述执行条件分支的起始位置当做上述断点。
5.根据权利要求1所述的程序执行追踪方法,其中上述执行追踪脚本指令包括:
设定上述断点指令;
配置调试环境指令;以及
输出执行状态信息指令。
6.根据权利要求1所述的程序执行追踪方法,其中上述储存介质中包括执行日志文件、数据表或数据对象,以及上述执行追踪脚本指令用以于相应于上述二位文件的程序执行至上述断点时,输出上述执行状态信息至上述执行日志文件、上述数据表或上述数据对象中。
7.根据权利要求1所述的程序执行追踪方法,其中上述执行状态信息用以追踪程序代码覆盖性以及分支覆盖性。
8.一种计算机可读取储存介质,用以储存计算机程序,该计算机程序用以加载至计算机系统中并且使得该计算机系统执行程序执行追踪方法,其方法包括下列步骤:
接收符号表或二位文件;
依据上述符号表或上述二位文件的内容检测出至少一断点;以及
依据上述检测出的断点产生执行追踪脚本指令,
其中上述执行追踪脚本指令用以于相应于上述二位文件的程序执行至上述断点时,输出执行状态信息至储存介质中。
9.一种程序执行追踪系统,其包括:
计算机,用以接收符号表或二位文件,依据上述符号表或上述二位文件的内容检测出至少一断点,以及依据上述检测出的断点产生执行追踪脚本指令,
其中,上述执行追踪脚本指令用以于相应于上述二位文件的程序执行至上述断点时,输出执行状态信息至储存介质中。
10.根据权利要求9所述的程序执行追踪系统,其中上述计算机依据上述符号表的内容检测出子例程的起始位置,以及将上述子例程的起始位置当做上述断点。
11.根据权利要求9所述的程序执行追踪系统,其中上述计算机依据上述二位文件的内容检测出执行条件分支的起始位置,以及将上述执行条件分支的起始位置当做上述断点。
12.根据权利要求9所述的程序执行追踪系统,其中上述计算机依据上述符号表的内容检测出子例程的起始位置,依据上述二位文件的内容检测出执行条件分支的起始位置,以及将上述子例程的起始位置以及上述执行条件分支的起始位置当做上述断点。
13.根据权利要求9所述的程序执行追踪系统,其中上述执行追踪脚本指令包括:
设定上述断点指令;
配置调试环境指令;以及
输出执行状态信息指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510103785 CN1936861A (zh) | 2005-09-23 | 2005-09-23 | 程序执行追踪方法及系统以及计算机可读取储存介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510103785 CN1936861A (zh) | 2005-09-23 | 2005-09-23 | 程序执行追踪方法及系统以及计算机可读取储存介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1936861A true CN1936861A (zh) | 2007-03-28 |
Family
ID=37954372
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200510103785 Pending CN1936861A (zh) | 2005-09-23 | 2005-09-23 | 程序执行追踪方法及系统以及计算机可读取储存介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1936861A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880457A (zh) * | 2012-08-13 | 2013-01-16 | 中兴通讯股份有限公司 | 一种对数据进行处理的方法和设备 |
CN106649074A (zh) * | 2015-10-30 | 2017-05-10 | 北京数码视讯科技股份有限公司 | 一种智能卡的程序调试方法及装置 |
CN108228432A (zh) * | 2016-12-12 | 2018-06-29 | 阿里巴巴集团控股有限公司 | 一种分布式链路跟踪、分析方法及服务器、全局调度器 |
-
2005
- 2005-09-23 CN CN 200510103785 patent/CN1936861A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880457A (zh) * | 2012-08-13 | 2013-01-16 | 中兴通讯股份有限公司 | 一种对数据进行处理的方法和设备 |
WO2013178115A1 (zh) * | 2012-08-13 | 2013-12-05 | 中兴通讯股份有限公司 | 一种对数据进行处理的方法和设备 |
CN102880457B (zh) * | 2012-08-13 | 2018-08-10 | 南京中兴新软件有限责任公司 | 一种对数据进行处理的方法和设备 |
CN106649074A (zh) * | 2015-10-30 | 2017-05-10 | 北京数码视讯科技股份有限公司 | 一种智能卡的程序调试方法及装置 |
CN108228432A (zh) * | 2016-12-12 | 2018-06-29 | 阿里巴巴集团控股有限公司 | 一种分布式链路跟踪、分析方法及服务器、全局调度器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100449477C (zh) | 用于嵌入式系统的实时调试器接口 | |
US8839203B2 (en) | Code coverage-based taint perimeter detection | |
US8776029B2 (en) | System and method of software execution path identification | |
US9734263B2 (en) | Method and apparatus for efficient pre-silicon debug | |
CN103186461B (zh) | 一种现场数据的保存方法和恢复方法以及相关装置 | |
CN102346235A (zh) | 一种面向硬件设备功能的自动测试系统及方法 | |
CN111339731B (zh) | 一种面向SoC的FPGA验证平台和验证方法 | |
CN103678115B (zh) | 在混合模式程序中检测源代码差错的位置的设备和方法 | |
CN102541731B (zh) | 平台不可知诊断数据收集与显示 | |
US20160110281A1 (en) | System and method for debugging firmware/software by generating trace data | |
CN102567166A (zh) | 一种显卡测试方法及测试系统 | |
CN107633867A (zh) | 基于ft4222的spi闪存测试系统及方法 | |
US6598181B1 (en) | Method and system for debugging multiple function calls | |
CN108021791A (zh) | 数据保护方法及装置 | |
CN101114249A (zh) | 主板的i2c总线检测装置及其方法 | |
CN103197914A (zh) | 多处理器延迟执行 | |
US20070079288A1 (en) | System and method for capturing filtered execution history of executable program code | |
KR102165747B1 (ko) | 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법 | |
CN102541727B (zh) | 一种程序调试方法及系统 | |
CN101777022A (zh) | 一种软件可靠性的分析方法及系统 | |
US7415560B2 (en) | Method of automatically monitoring computer system debugging routine | |
CN1936861A (zh) | 程序执行追踪方法及系统以及计算机可读取储存介质 | |
CN108664387B (zh) | 基于ejtag的mips处理器调试方法及系统 | |
CN105912417A (zh) | 虚拟系统的检测方法和相关软件运行方法以及相关装置 | |
CN101751492A (zh) | 一种微控制器和该微控制器的仿真系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |