CN102339224A - 用于在指示应用代码的执行中使用的系统和方法 - Google Patents
用于在指示应用代码的执行中使用的系统和方法 Download PDFInfo
- Publication number
- CN102339224A CN102339224A CN2011102145514A CN201110214551A CN102339224A CN 102339224 A CN102339224 A CN 102339224A CN 2011102145514 A CN2011102145514 A CN 2011102145514A CN 201110214551 A CN201110214551 A CN 201110214551A CN 102339224 A CN102339224 A CN 102339224A
- Authority
- CN
- China
- Prior art keywords
- source code
- application
- execution
- interested
- target code
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
Abstract
本发明涉及用于在指示应用代码的执行中使用的系统和方法。提供用于在指示应用源代码(405)的执行中使用的系统。该系统包括配置成接收该应用源代码内的感兴趣源代码部分的指示的输入接口(130)。该应用源代码至少包括描述多个操作的多个可供人读的语句(535)。该系统还包括处理器(115),其耦合于该输入接口并且程序化成基于该应用源代码产生应用目标代码(310)。该应用目标代码(420)至少包括多个计算机可执行指令和对应于感兴趣源代码部分的感兴趣目标代码部分。该处理器还将执行断点(430)与该感兴趣目标代码部分关联,以及基于执行该感兴趣目标代码部分禁用该执行断点并且将执行事件(435)与存储器装置(110)中的该对应的感兴趣源代码部分关联。
Description
技术领域
本文公开的主旨大体上涉及应用源代码管理,并且更具体地涉及用于在检测和指示可供人读的源代码的执行中使用的系统和方法。
背景技术
至少一些已知的计算机系统使用测试代码来基于预先限定的输入和预期的输出自动执行应用代码。此外,一些已知的系统在测试期间跟踪应用代码执行并且产生指示执行了源代码的哪个部分或哪些部分的统计数据和/或报告。这样的报告可称为“代码覆盖率报告”。
一般,已知的执行跟踪系统和执行跟踪方法要求对应用代码的修改和/或添加。然而,对应用代码进行修改或添加要求时间投资并且可能负面地影响关联的应用的执行速度和/或行为。结果,测试可能被延迟。此外,取决于对应用的不利影响的严重性,已知跟踪系统可认为不适合在其中执行速度是关键的现场或“生产”环境中使用。同样,可招致另外的延迟等待代码覆盖率报告,因为这样的报告仅当所有测试代码的执行完成时产生。
此外,现有系统还可取决于应用代码内的感兴趣部分的静态、预执行限定,并且从而这样的系统要求用户终止并且重新执行应用以使被跟踪执行的感兴趣部分能够被修改。此外,现有方法限于仅指示代码的一部分是否采用二进制方式执行并且不能辨别很少执行的和经常执行的代码。
发明内容
提供该发明内容部分来介绍下文在具体实施方式中进一步描述的采用简化形式的概念的选集。该发明内容部分不意在识别被要求保护的主旨的关键特征或基本特征,也不意在用作确定被要求保护的主旨的范围的辅助。
在一个方面,提供用于在指示应用源代码的执行中使用的系统。该系统包括配置成接收该应用源代码内的感兴趣源代码部分的指示的输入接口。该应用源代码至少包括描述多个操作的多个可供人读的语句。该系统还包括处理器,其耦合于该输入接口并且程序化成基于该应用源代码产生应用目标代码。该应用目标代码至少包括对应于感兴趣源代码部分的感兴趣目标代码部分和多个计算机可执行指令。该处理器还程序化成将执行断点与该感兴趣目标代码部分关联以及基于执行该感兴趣目标代码部分禁用该执行断点并且将执行事件与存储器装置中的该对应的感兴趣源代码部分关联。
在另一个方面,提供用于在指示应用源代码的执行中使用的系统。该系统包括配置成存储应用源代码和应用目标代码的存储器装置。该应用源代码至少包括描述多个操作的多个可供人读的语句,并且该应用目标代码至少包括对应于该多个可供人读的语句的多个计算机可执行指令。该系统还包括处理器,其耦合于该存储器装置并且程序化成确定对应于该应用源代码内的多个感兴趣源代码部分中的每个感兴趣源代码部分的感兴趣目标代码部分。该处理器还程序化成将执行断点与这些多个感兴趣目标代码部分中的每个感兴趣目标代码部分关联并且执行该应用目标代码。该处理器进一步程序化成(对每个执行断点)当执行该关联的感兴趣目标代码部分时禁用该执行断点并且将执行事件与所述存储器装置中的对应于该感兴趣目标代码部分的该感兴趣源代码部分关联。
在再另一个方面,提供用于在指示应用源代码的执行中使用的方法。该方法包括经由输入接口接收该应用源代码内的多个感兴趣源代码部分的指示。应用目标代码由处理器基于该应用源代码产生。该应用目标代码至少包括对应于该感兴趣源代码部分的多个感兴趣目标代码部分和多个计算机可执行指令。执行断点由该处理器与这些多个感兴趣目标代码部分中的每个感兴趣目标代码部分关联。对于每个执行断点,当执行该关联的感兴趣目标代码部分时,禁用该执行断点,并且执行事件与存储器装置中的对应于该感兴趣目标代码部分的该感兴趣源代码部分关联。
附图说明
本文描述的实施例通过连同附图参考下列描述可更好地理解。
图1是示范性计算装置的框图;
图2是示范性执行跟踪系统的框图,其包括应用主机装置、应用开发装置和经由网络通信耦合的应用监测装置;
图3是用于在指示一个或多个感兴趣源代码部分的执行中使用的示范性方法的流程图;
图4是使用在图3中示出的方法可能出现的数据流的示范性图;
图5是可与在图2中示出的系统一起使用的示范性源代码查看器;
图6是可与在图2中示出的系统一起使用的备选源代码查看器;以及
图7是可与在图2中示出的系统一起使用的示范性执行计。
具体实施方式
本文描述的实施例提供应用源代码是否已经采用目标代码形式执行的指示。具体地,在一些实施例中,在应用的执行期间,识别该应用源代码内的感兴趣部分。从该应用源代码产生的应用目标代码包括对应于该应用源代码内的感兴趣部分的感兴趣部分。当执行该应用目标代码时,当执行感兴趣目标代码部分时,记录对应的感兴趣源代码部分的执行事件。例如,可通过使执行计数器增量和/或通过存储每个执行的离散事件(例如,包括时间戳)记录执行事件。一个或多个感兴趣源代码部分的执行基于该记录的执行事件来指示。
如本文使用的,术语“应用源代码”包括描述能够由计算机进行的操作的可供人读的语句。单个语句有时称为“代码行”或简单地“行”,而不管采用显示或印刷形式用于表示该可供人读的语句的行的数量。功能上相关的语句的集合可编组成方法(还称为功能)。相关的方法可编组成类,并且相关的类可编组成包或模块。应用或用于由应用使用的库可包括多个包中的应用源代码。应用源代码可存储在存储器装置中的一个或多个文件中。例如,每个类可对应于一个文件。
包括计算机可执行指令的应用目标代码从应用源代码产生。例如,应用源代码可被编译和/或翻译以形成应用目标代码。该应用目标代码的计算机可执行指令对应于应用源代码的可供人读的语句。不像可供人读的语句,计算机可执行指令可直接由计算机的处理器和/或由这样的处理器执行的“虚拟机”执行。除可供人读的语句外,应用源代码可包括例如注解、预处理命令和/或注释等内容,其不直接被生成用于由处理器和/或虚拟机执行的应用目标代码。
本文关于应用源代码和应用目标代码内的感兴趣部分描述实施例。感兴趣源代码部分可包括可供人读的语句、方法、类和/或包。感兴趣目标代码部分包括对应于感兴趣源代码部分的一个或多个计算机可执行指令。
在操作中,处理器通过执行应用目标代码执行软件程序和/或应用。在应用目标代码的执行期间,可监测和/或检测特别的感兴趣目标代码部分的执行。在示范性实施例中,执行断点与感兴趣目标代码部分的计算机可执行指令关联(例如,在感兴趣目标代码部分的计算机可执行指令之前插入)。处理器在该执行断点处暂停该应用目标代码的执行,并且称为监测实用程序的另一个应用知道该感兴趣目标代码部分的执行。例如,处理器可程序化成通知该监测实用程序已经达到执行断点,或该监测实用程序可重复请求或“轮询”来自处理器的执行信息。该监测实用程序将执行事件与该感兴趣目标代码部分关联并且命令处理器继续执行该应用目标代码。尽管描述为使用执行断点,本文提供的实施例可采用用于检测和/或监测感兴趣目标代码部分的执行(其中非限制性地包括修改(例如,装设)应用目标代码以包括和/或引用用于产生执行事件的计算机可执行语句)的任何手段操作。
本文描述的方法、系统和设备的示范性技术效果包括下列中的至少一个:(a)经由输入接口接收应用源代码内的多个感兴趣源代码部分的指示;(b)由处理器基于该应用源代码产生应用目标代码,其中该应用目标代码包括对应于该感兴趣源代码部分的多个感兴趣目标代码部分和多个计算机可执行指令;(c)由该处理器将执行断点与这些多个感兴趣目标代码部分中的每个感兴趣目标代码部分关联;以及(d)对于每个执行断点,当执行该关联的感兴趣目标代码部分时,禁用该执行断点,并且将执行事件与存储器装置中的对应于该感兴趣目标代码部分的该感兴趣源代码部分关联。禁用断点便于消除或减少执行跟踪对应用执行速度的影响。
图1是示范性计算装置105的框图。计算装置105包括存储器装置110和耦合于存储器装置110用于执行指令的处理器115。在一些实施例中,可执行指令存储在存储器装置110中。计算装置105可配置成通过程序化处理器115进行本文描述的一个或多个操作。例如,处理器115可通过将操作编码为一个或多个可执行指令并且在存储器装置110中提供该可执行指令而程序化。处理器115可包括一个或多个处理单元(例如,在多核配置中)。
存储器装置110是使例如可执行指令和/或其他数据等信息能够存储并且检索的一个或多个装置。存储器装置110可包括一个或多个计算机可读介质,非限制地例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、固态盘和/或硬盘等。存储器装置110可配置成非限制地存储应用源代码、应用目标代码、感兴趣的源代码部分、感兴趣的目标代码部分、配置数据、执行事件和/或任何其他类型的数据。
在一些实施例中,计算装置105包括耦合于处理器115的呈现接口120。呈现接口120呈现例如应用源代码和/或执行事件等信息给用户125。例如,呈现接口120可包括显示适配器(没有在图1中示出),其可耦合于例如阴极射线管(CRT)、液晶显示器(LCD)、有机LED(OLED)显示器和/或“电子墨水”显示器等显示器装置。在一些实施例中,呈现接口120包括一个或多个显示器装置。除此之外或备选也,呈现接口120可包括打印机。在一些实施例中,呈现接口120基于与感兴趣源代码部分关联的执行事件指示一个或多个感兴趣源代码部分的执行。例如,呈现接口120可配置成显示源代码查看器和/或执行计,如下文更详细描述的。
在一些实施例中,计算装置105包括例如用户输入接口135或通信接口140等输入接口130。输入接口130可配置成接收应用源代码内的一个或多个感兴趣部分的指示和/或适合与本文描述的方法一起使用的任何信息。
在示范性实施例中,用户输入接口135耦合于处理器115并且从用户125接收输入。用户输入接口135可包括例如键盘、指点装置、鼠标、指示笔、触敏面板(例如,触摸板或触摸屏)、陀螺仪、加速计、位置检测器和/或音频用户输入接口。例如触摸屏等单个部件可起呈现接口120的显示器装置和用户输入接口135两者的作用。
通信接口140耦合于处理器115并且配置成与例如另一个计算装置105等一个或多个远程装置通信耦合。例如,通信接口140可非限制地包括有线网络适配器、无线网络适配器和/或移动电信适配器。通信接口140还可传送数据给一个或多个远程装置。例如,一个计算装置105的通信接口140可传送一个或多个感兴趣源代码部分和/或一个或多个执行事件的指示给另一个计算装置105的通信接口140。
图2是示范性系统200的框图,其包括经由网络220通信耦合的应用监测装置215、应用主机装置205以及应用开发装置210。网络220可非限制地包括互联网、局域网(LAN)、广域网(WAN)、无线LAN(WLAN)、网状网络和/或虚拟专用网(VPN)。
应用主机装置205、应用开发装置210和应用监测装置215是计算装置105(在图1中示出)。在示范性实施例中,每个计算装置105经由通信接口140耦合于网络220。在备选实施例中,应用主机装置205与应用开发装置210和/或应用监测装置215一起集成。
应用开发装置210与应用开发员225交互(例如,经由用户输入接口135和/或呈现接口120)。例如,应用开发装置210可配置成从应用开发员225接收应用源代码。应用开发装置210经由网络220传送应用源代码到应用主机装置205。
应用主机装置205接收并且存储应用源代码(例如,在存储器装置110中)。应用主机装置205还可配置成基于应用源代码产生应用目标代码。
应用监测装置215与应用监测员230交互(例如,经由用户输入接口135和/或呈现接口120)。在一个实施例中,应用监测装置215从应用监测员230接收一个或多个感兴趣源代码部分的指示并且传送该感兴趣源代码部分的指示到应用主机装置205。例如,应用监测员230可输入指示,即应用源代码的每个可供人读的语句是感兴趣源代码部分。
应用主机装置205接收感兴趣源代码部分的指示,执行应用目标代码,并且将执行事件与感兴趣源代码部分关联,如关于图3和4更详细描述的。应用主机装置205和/或应用监测装置215还可产生和/或呈现一个或多个图形用户界面来指示感兴趣源代码部分的执行。
在一些实施例中,应用监测装置215远离应用主机装置205。例如,应用监测装置215可位于在地理上从应用主机装置205转移的支持设施处。这样的实施例便于远程限定感兴趣源代码部分和监测执行事件。例如,应用监测员230可远程监测在由应用监测员230的客户操作的应用主机装置205处的现场执行活动。
图3是用于在指示一个或多个感兴趣源代码部分的执行中使用的示范性方法300的流程图。图4是可使用方法300实现的数据流的示范性图400。图5-7是与方法300一起使用的示范性用户界面并且在下文更详细地说明。
方法300的部分可例如使用系统200中的任何一个计算装置105或任何计算装置105的组合进行。在示范性实施例中,一个或多个感兴趣部分(例如,可供人读的语句、方法、类和/或包)在应用源代码405内确定305。例如,感兴趣源代码部分可通过经由输入装置接收感兴趣源代码部分的指示410来确定305。指示410可包括例如经由用户输入装置输入的感兴趣源代码部分的选择、预先限定的监测配置的选择和/或监测配置文件。除此之外,或备选地,感兴趣源代码部分可由处理器自动确定305。例如,处理器可程序化成识别应用源代码405或应用源代码405的子集中的每个可供人读的语句作为感兴趣源代码部分。在一个实施例中,应用源代码405内的每个可供人读的语句是感兴趣源代码部分。
由处理器执行的虚拟机415基于应用源代码405产生310应用目标代码420。应用目标代码420包括对应于感兴趣源代码部分的多个感兴趣目标代码部分和多个计算机可执行指令。例如,感兴趣目标代码部分可包括对应于应用源代码405的可供人读的语句的一个或多个计算机可执行指令。在示范性实施例中,虚拟机415执行编译器425以产生310应用目标代码420。
虚拟机415将例如执行断点430等执行检测手段与每个感兴趣目标代码部分关联315。例如,执行断点430可在对应于感兴趣源代码部分的每个计算机可执行指令集处或在其之前与应用目标代码420关联。在备选实施例中,虚拟机415通过修改应用目标代码420以在对应于感兴趣源代码部分的每个计算机可执行指令集处或在其之前包括和/或引用预先限定的计算机可执行指令(例如,执行事件记录指令)来关联315执行检测手段。
虚拟机415至少执行320应用目标代码420的一部分。在执行320期间,虚拟机415确定325感兴趣目标代码部分的执行320是否在发生、挂起和/或即将发生。例如,当达到执行断点430时虚拟机415可暂停应用目标代码420的执行320。执行事件435与对应于感兴趣目标代码部分的感兴趣源代码部分关联330。在一个实施例中,与感兴趣源代码部分关联的执行事件435存储在存储器装置中并且可包括时间戳,其指示形成执行320和/或执行对应的感兴趣目标代码部分时的时间。在备选实施例中,每个感兴趣源代码部分与存储器装置中的执行320的数量(“执行计数”)关联,并且将执行事件435与感兴趣源代码部分关联330包括使关联的执行计数增量。执行事件435可形成为应用数据结构、数据库中的记录、结构化文本(例如,可扩展标记语言)、纯文本(例如,定界值或定宽值),和/或采用适合与本文描述的方法一起使用的任何其他形式。
在一些实施例中,执行断点430被禁用335(例如,使无效和/或去除)。当执行事件435与感兴趣目标代码部分关联时,禁用335执行断点430便于增加执行320应用目标代码420的速度。例如,虚拟机415可基于与正执行的计算机可执行指令关联的断点430的存在而确定325感兴趣目标代码部分正被执行。在这样的示例中,禁用335断点430使虚拟机415将至多一个执行事件435与感兴趣目标代码部分关联330并且避开对感兴趣目标代码部分的随后执行320的关联330步骤。
在其他实施例中,每当执行感兴趣目标代码部分时,执行事件435与该感兴趣目标代码部分关联330。这样的实施例便于确定多频繁地执行感兴趣目标代码部分,如下文更详细地描述的。
不管是否执行感兴趣目标代码部分,虚拟机415确定340应用目标代码420的执行320是否完成。例如,执行320可在应用结束处理输入数据集后、在应用接收终止请求后和/或在应用碰到致命错误后完成。如果虚拟机415确定340执行320没有完成,虚拟机415继续执行320应用目标代码420。
在应用目标代码420的执行320期间或之后,指示350感兴趣源代码部分的执行320。在示范性实施例中,执行事件435用于在例如源代码查看器440和/或执行计445等图形用户界面中指示350感兴趣源代码部分的执行320,其可经由呈现接口向用户显示。源代码查看器440在下文关于图5和6描述。执行计445在下文关于图7描述。
一些实施例基于关联的执行事件435在图形上对感兴趣源代码部分进行区分。例如,与执行事件435关联的感兴趣源代码部分可显示为具有第一背景色,并且不与执行事件435关联的感兴趣源代码部分可显示为具有不同的背景色。与感兴趣源代码部分关联的执行事件435的数量可例如通过确定与感兴趣源代码部分关联的离散执行事件(例如,包括时间戳)的数量和/或通过识别与感兴趣源代码部分关联的执行计数来确定。
一些实施例实现指示感兴趣源代码部分多频繁地采用应用目标代码形式来执行。在这样的实施例中,对于对应的感兴趣目标代码部分的每个执行,执行事件435与感兴趣源代码部分关联330(例如,通过形成离散执行事件和/或通过使执行计数增量)。指示350与感兴趣源代码部分关联的执行事件435的数量。在一些实施例中,指示350执行事件的绝对数量。例如,对于与十二个执行事件关联的感兴趣源代码部分,可指示350十二个执行。
除此之外或备选地,可对感兴趣源代码部分指示350执行频率。在一些实施例中,多个执行频率被限定302。例如,执行频率可被预先限定并且存储在存储器装置中和/或在应用目标代码420的执行期间被限定。每个执行频率对应于执行事件数量的范围。执行频率可包括例如对应于零执行事件的从不执行频率、对应于单个执行事件的执行一次频率和/或对应于两个或更多执行事件的重复执行频率。在一个实施例中,执行频率限定如下:
执行频率 | 执行事件的数量 |
1 | 0 |
2 | 1-5 |
3 | 6-12 |
4 | 13-20 |
5 | 21-50 |
6 | 51或更多 |
表格1
尽管上文描述了特定的数值范围,可限定302对应于任何范围的执行事件数量的任何数目的执行频率。
在指示350感兴趣源代码部分的执行之前,执行频率可与每个感兴趣源代码部分关联347。例如,执行频率可基于与感兴趣源代码部分关联的执行计数和/或执行事件435的数量来确定。
在一些实施例中,呈现接口配置成在虚拟机415执行320应用目标代码420的同时指示350一个或多个感兴趣源代码部分的执行。例如,呈现接口可配置成重复指示350感兴趣源代码部分的执行,从而当与该感兴趣源代码部分关联的执行事件的数量增加时更新图形接口。此外,呈现接口可配置成在虚拟机415执行320第二感兴趣目标代码部分的同时指示对应于执行的第一感兴趣目标代码部分的第一感兴趣源代码部分的执行。
在一些实施例中,接收305一个或多个感兴趣部分的指示同时虚拟机415执行320应用目标代码420。虚拟机415产生310断点430和/或将其与对应于指示的感兴趣部分的应用目标代码420关联315而不终止应用目标代码420的执行320。例如,虚拟机415可暂停应用目标代码420的至少一部分的执行320、重新编译和/或重新加载对应于指示的感兴趣部分的一个或多个类,和/或恢复应用目标代码420的执行320。
图5是示范性源代码查看器500,其可根据方法300(在图3中示出)与例如应用开发装置210和/或应用监测装置215(在图2中示出)等计算装置一起使用。在示范性实施例中,源代码查看器500经由呈现接口120(在图1中示出)呈现给应用监测员230并且用于经由用户输入接口135从应用监测员230接收输入。
源代码查看器500包括摘要窗格(pane)505和详细信息窗格510。摘要窗格505包括文件中的应用源代码的摘要或“缩略”图像515和指示在详细信息窗格510内可见的文件的一部分的可见部分指示符520。在一个实施例中,文件包括多个感兴趣源代码部分(例如,可供人读的语句、方法和/或类),并且详细信息窗格510包括这些感兴趣源代码部分的子集。
第一方法525和第二方法530包括在摘要窗格505和详细信息窗格510中,第一方法525和第二方法530每个包括一个或多个可供人读的语句535。第一方法525用第一背景样式540显示,而第二方法530用第二背景样式545显示以在图形上区别第二方法530与第一方法525。第一背景样式540和第二背景样式545在摘要窗格505和详细信息窗格510两者中显示。
在一个实施例中,第一方法525和第二方法530每个是可与一个或多个执行事件关联的感兴趣源代码部分。例如,当执行对应于第一方法525的任何计算机可执行指令时执行事件与第一方法525关联。在备选实施例中,每个可供人读的语句535是感兴趣源代码部分。第一方法525的执行事件的数量基于与第一方法525内的可供人读的语句535关联的执行事件确定。例如,第一方法525的执行事件的数量可基于与第一方法525内的可供人读的语句535关联的执行事件的总和、平均值、最小值和/或最大值计算。相似地,与可供人读的语句关联的执行事件可按类、包和/或应用来编组。
在一个实施例中,源代码查看器500采用图形区分(例如,第一背景样式540和第二背景样式545)来指示第一方法525与一个或多个执行事件关联,而第二方法530不与执行事件关联。在另一个实施例中,这样的图形区分用于指示第一方法525和第二方法530与不同数量的执行事件和/或不同的执行频率关联。在再另一个实施例中,第一背景样式540指示第一方法525与最近的执行事件关联和/或当前正执行目标代码。例如,最近执行事件可限定为在当前时间之前预先限定的持续时间(例如,10秒、30秒、60秒和/或3分钟)内离散执行事件的形成和/或对执行计数的增量。此外,可结合上文描述的图形区分的方法。
在一个实施例中,当执行应用目标代码时,源代码查看器500重复地(例如,当通知执行事件时或当从用户请求时,周期性地)更新摘要窗格505和/或详细信息窗格510。在这样的实施例中,如果在第一时间不与执行事件关联的第一感兴趣源代码部分在随后的时间变成与执行事件关联,第一感兴趣源代码部分在图形上区别于仍然不与执行事件关联的其他感兴趣源代码部分。此外,对于预先限定的持续时间,第一感兴趣源代码部分可在图形上区别于已经与执行事件关联的其他感兴趣源代码部分。
如由图5图示的,图形区分可通过应用背景样式实现。另外或备选地,图形区分可通过应用颜色(例如,背景颜色或前景颜色)、行样式、行粗细、字样、字体粗细、动画(渐变和/或闪烁)、附近放置的图标和/或用于互相区别图形元件的任何其他合适的手段来实现。
图6是第二示范性源代码查看器600,其可根据方法300(在图3中示出)与例如应用开发装置210和/或应用监测装置215(在图2中示出)等计算装置一起使用。源代码查看器600包括示出包含应用源代码的文件的一部分的详细信息窗格605。具体地,详细信息窗格605示出方法615内的多个可供人读的语句535。每个可供人读的语句535表示感兴趣源代码部分。
邻近可供人读的语句535的是对应的执行计数620。执行计数620可直接与可供人读的语句535关联并且每次执行关联的可供人读的语句535时增量。除此之外或备选地,执行计数620可通过计数与可供人读的语句535关联的执行事件的数量来确定。
可供人读的语句535基于关联的执行频率在图形上区别。例如,第一背景样式630应用于与对应于执行计数620的第一范围(例如,6至12个执行事件)的第一执行频率关联的可供人读的语句535。第二背景样式635应用于与对应于执行计数620的第二范围(例如,21至50个执行事件)的第二执行频率关联的可供人读的语句535。另外,第三背景样式640应用于不对应于应用目标代码中的计算机可执行指令(例如,注解645等)的方法615的部分。
与源代码查看器500相似,源代码查看器600可重复更新。这样的实施例便于执行活动的实时监测。
图7是示范性执行计700,其可根据方法300与例如应用开发装置210和/或应用监测装置215等计算装置一起使用。执行计700包括用于限定感兴趣源代码部分的添加按钮705和指示与多个执行频率中的每个关联的感兴趣源代码部分(例如,可供人读的语句)的比例的摘要执行量规(gauge)710。在备选实施例中,摘要执行量规710指示与至少一个执行事件关联的感兴趣源代码部分的比例。
执行计700还包括具有多个文件的详细执行量规720的表格715。详细执行量规720指示与每个执行频率关联的每个文件内的感兴趣源代码部分的比例。例如,第四详细执行量规725包括第一块730、第二块735、第三块740和第四块745,每个表示与特定执行频率关联的文件内的感兴趣源代码部分的比例。另外,第四详细执行量规725包括表示不与执行事件和/或与从不执行频率关联的感兴趣源代码部分的比例的空块750。每个块730、735、740、745、750描绘为具有唯一填充样式,便于与每个执行频率关联的感兴趣源代码部分的比例之间的图形区分。邻近详细执行量规720的是执行的比例760,其在数值上指示与至少一个执行事件关联的每个文件内的感兴趣源代码部分的比例。
表格715还包括(对于每个文件中的感兴趣源代码部分)最大执行计数图标765、最大执行计数770、总执行计数775、可执行的感兴趣源代码部分计数780(例如,指示可作为应用目标代码执行的感兴趣源代码部分的数量)和执行的感兴趣源代码部分计数785(例如,指示与至少一个执行事件关联的可执行的感兴趣源代码部分的数量)。
在一些实施例中,当执行应用目标代码时重复更新执行计700。这样的实施例便于执行活动的实时监测。
执行计700示出具有按文件编组的表示可供人读的语句的感兴趣源代码部分。除此之外或备选地,感兴趣源代码部分可按方法、按文件、按类和/或按包显示。此外,感兴趣源代码部分可限定为方法、类、文件和/或包。
本文提供的实施例便于当应用在现场或“生产”环境中测试或执行时指示执行应用源代码哪些部分。这样的指示实现例如未测试源代码、测试不足的源代码和/或频繁执行的源代码等应用源代码的关键部分的识别。一旦识别,关键部分可受到另外的自动测试、性能优化和/或当修改(例如,重构)时另外的详细检查。此外,执行信息可用于识别从不执行的源代码并且消除这样的源代码,由此减少与该应用关联的维护工作和成本。本文描述的实施例进一步允许当执行应用目标代码时感兴趣源代码部分的限定和执行活动的监测而没有与终止和重新开始应用目标代码的执行关联的延迟和不便。
本文描述的方法和系统不限于本文描述的特定实施例。例如,每个系统的部件和/或每个方法的步骤可与本文描述的其他部件和/或步骤独立和单独地使用和/或实践。另外,每个部件和/或步骤也可与其他设备和方法一起使用和/或实践。
一些实施例牵涉一个或多个电子或计算装置的使用。这样的装置典型地包括处理器或控制器,例如通用中央处理单元(CPU)、图形处理单元(GPU)、微控制器、精简指令计算机(RISC)处理器、专用集成电路(ASIC)、可编程逻辑电路(PLC)和/或能够执行本文描述的功能的任何其他电路或处理器。本文描述的方法可编码为包含在计算机可读介质(非限制地包括存储装置和/或存储器装置)中的可执行指令。这样的指令当由处理器执行时使处理器至少执行本文描述的方法的一部分。上文的示例仅是示范性的,并且从而不意在采用任何方式限制术语处理器的定义和/或含义。
尽管本发明已经在各种特定实施例方面描述,本领域内技术人员将认识到本发明可在权利要求的精神和范围内的修改的情况下实践。
部件列表
Claims (10)
1.一种用于在指示应用源代码(405)的执行中使用的系统,所述系统包括:
配置成接收所述应用源代码内的感兴趣源代码部分的指示的输入接口(130),其中所述应用源代码至少包括描述多个操作的多个可供人读的语句(535);以及
处理器(115),其耦合于所述输入接口并且程序化成:
基于所述应用源代码产生应用目标代码(310),其中所述应用目标代码(420)至少包括对应于所述感兴趣源代码部分的感兴趣目标代码部分和多个计算机可执行指令;
将执行断点(430)与所述感兴趣目标代码部分关联;以及
基于执行所述感兴趣目标代码部分禁用所述执行断点并且将执行事件(435)与存储器装置(110)中的对应的感兴趣源代码部分关联。
2.如权利要求1所述的系统,进一步包括配置成基于所述关联的执行事件(435)指示执行了所述感兴趣源代码部分的呈现接口(120)。
3.如权利要求2所述的系统,其中所述感兴趣源代码部分是第一感兴趣源代码部分,并且所述呈现接口(120)进一步配置成在图形上区别所述第一感兴趣源代码部分与对应于没有执行的应用目标代码(420)的第二感兴趣源代码部分。
4.如权利要求2所述的系统,其中所述感兴趣目标代码部分是所述应用目标代码(420)的第一部分,并且所述呈现接口(120)配置成在所述处理器(115)执行所述应用目标代码的第二部分的同时指示执行了对应于所述第一感兴趣目标代码部分的感兴趣源代码部分。
5.如权利要求1所述的系统,其中所述输入接口(130)配置成在所述处理器(115)执行所述应用目标代码(420)的同时接收所述感兴趣源代码部分的指示,并且所述处理器进一步程序化成将所述执行断点(430)与所述感兴趣目标代码部分关联而不终止所述应用目标代码的执行。
6.如权利要求1所述的系统,其中所述输入接口(130)配置成接收对应于所述应用源代码内的一个可供人读的语句(535)的至少一个感兴趣源代码部分的指示。
7.一种用于在指示应用源代码(405)的执行中使用的系统,所述系统包括:
配置成存储应用源代码和应用目标代码(420)的存储器装置(110),其中所述应用源代码至少包括描述多个操作的多个可供人读的语句(535),并且所述应用目标代码至少包括对应于所述多个可供人读的语句的多个计算机可执行指令;
处理器(115),其耦合于所述存储器装置并且程序化成:
确定对应于所述应用源代码内的多个感兴趣源代码部分中的每个感兴趣源代码部分的感兴趣目标代码部分;
将执行断点(430)与所述多个感兴趣目标代码部分中的每个感兴趣目标代码部分关联;
执行所述应用目标代码;以及
对每个执行断点,当执行关联的感兴趣目标代码部分时,禁用所述执行断点并且将执行事件(435)与所述存储器装置中的对应于所述感兴趣目标代码部分的感兴趣源代码部分关联。
8.如权利要求7所述的系统,进一步包括耦合于所述处理器(115)并且配置成接收所述多个感兴趣源代码部分的指示的输入接口(130),其中每个感兴趣源代码部分对应于所述应用源代码(405)内的所述多个可供人读的语句中的可供人读的语句(535)。
9.如权利要求8所述的系统,其中所述输入接口(130)包括网络(220)通信装置。
10.如权利要求8所述的系统,其中所述输入接口(130)进一步配置成通过接收所述应用源代码(405)中的所述多个可供人读的语句中的每个可供人读的语句(535)是感兴趣源代码部分的指示来接收所述多个感兴趣源代码部分的所述指示。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/839779 | 2010-07-20 | ||
US12/839,779 US20120023483A1 (en) | 2010-07-20 | 2010-07-20 | System and method for use in indicating execution of application code |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102339224A true CN102339224A (zh) | 2012-02-01 |
Family
ID=44915307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011102145514A Pending CN102339224A (zh) | 2010-07-20 | 2011-07-20 | 用于在指示应用代码的执行中使用的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20120023483A1 (zh) |
EP (1) | EP2410429A1 (zh) |
JP (1) | JP2012027912A (zh) |
CN (1) | CN102339224A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107003828A (zh) * | 2014-12-15 | 2017-08-01 | 英特尔公司 | 图形指令的仪器化 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9672139B2 (en) * | 2015-07-21 | 2017-06-06 | Successfactors, Inc. | Debugging in a production environment |
US10996936B2 (en) * | 2017-06-27 | 2021-05-04 | Intel Corporation | Techniques for distributing code to components of a computing system |
US11487643B1 (en) * | 2018-11-12 | 2022-11-01 | Xilinx, Inc. | Debugging for integrated scripting applications |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6079032A (en) * | 1998-05-19 | 2000-06-20 | Lucent Technologies, Inc. | Performance analysis of computer systems |
US20050028036A1 (en) * | 2003-07-30 | 2005-02-03 | Kohsaku Shibata | Program debug apparatus, program debug method and program |
CN101073054A (zh) * | 2004-12-06 | 2007-11-14 | 德国捷德有限公司 | 加载格式的程序代码的产生以及可执行程序代码的提供 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0792771B2 (ja) * | 1986-04-01 | 1995-10-09 | 株式会社日立製作所 | プログラム実行状況表示システム |
US4910663A (en) * | 1987-07-10 | 1990-03-20 | Tandem Computers Incorporated | System for measuring program execution by replacing an executable instruction with interrupt causing instruction |
DE69026379T2 (de) * | 1990-08-07 | 1996-08-29 | Bull Hn Information Syst | Nachrichtenorientierte Fehlerbeseitigungsverfahren |
US5446838A (en) * | 1992-11-13 | 1995-08-29 | International Business Machines Corporation | Floating highlights on a computer program code display |
JPH07160531A (ja) * | 1993-12-03 | 1995-06-23 | Fujitsu Ltd | プログラム実行経路表示装置 |
JPH09114699A (ja) * | 1995-10-16 | 1997-05-02 | Hitachi Ltd | 範囲指示によるプログラムチューニング方式 |
US5901315A (en) * | 1997-06-13 | 1999-05-04 | International Business Machines Corporation | Method for debugging a Java application having native method dynamic load libraries |
US6223144B1 (en) * | 1998-03-24 | 2001-04-24 | Advanced Technology Materials, Inc. | Method and apparatus for evaluating software programs for semiconductor circuits |
US6230313B1 (en) * | 1998-12-23 | 2001-05-08 | Cray Inc. | Parallelism performance analysis based on execution trace information |
US6826746B2 (en) * | 2001-03-08 | 2004-11-30 | International Business Machines Corporation | Debugger probe for object oriented programming |
US7010785B2 (en) * | 2001-03-23 | 2006-03-07 | International Business Machines Corporation | Eliminating cold register store/restores within hot function prolog/epilogs |
US20040205720A1 (en) * | 2001-04-30 | 2004-10-14 | Robert Hundt | Augmenting debuggers |
US7533374B2 (en) * | 2003-06-12 | 2009-05-12 | Intel Corporation | Adaptively storing system code in non-volatile storage |
US7519953B2 (en) * | 2003-09-30 | 2009-04-14 | Microsoft Corporation | Method and system for automatically testing a software build |
US7299319B2 (en) * | 2004-03-22 | 2007-11-20 | International Business Machines Corporation | Method and apparatus for providing hardware assistance for code coverage |
US20060225051A1 (en) * | 2005-04-05 | 2006-10-05 | Cisco Technology, Inc. | Method and system for code coverage |
US7926042B2 (en) * | 2005-10-31 | 2011-04-12 | Hewlett-Packard Development Company, L.P. | System and method for dynamic instrumentation |
US8001481B2 (en) * | 2007-04-30 | 2011-08-16 | International Business Machines Corporation | Implementation of an interactive progress bar in a test application environment |
US9285946B2 (en) * | 2008-02-29 | 2016-03-15 | Red Hat, Inc. | Generation of a progress notification in a software loop |
US8572577B2 (en) * | 2008-06-20 | 2013-10-29 | International Business Machines Corporation | Monitoring changes to data within a critical section of a threaded program |
US20100169602A1 (en) * | 2008-12-29 | 2010-07-01 | Jared E Hulbert | Method and Apparatus for Efficient Memory Placement |
-
2010
- 2010-07-20 US US12/839,779 patent/US20120023483A1/en not_active Abandoned
-
2011
- 2011-07-14 EP EP11173927A patent/EP2410429A1/en not_active Withdrawn
- 2011-07-14 JP JP2011155292A patent/JP2012027912A/ja active Pending
- 2011-07-20 CN CN2011102145514A patent/CN102339224A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6079032A (en) * | 1998-05-19 | 2000-06-20 | Lucent Technologies, Inc. | Performance analysis of computer systems |
US20050028036A1 (en) * | 2003-07-30 | 2005-02-03 | Kohsaku Shibata | Program debug apparatus, program debug method and program |
CN101073054A (zh) * | 2004-12-06 | 2007-11-14 | 德国捷德有限公司 | 加载格式的程序代码的产生以及可执行程序代码的提供 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107003828A (zh) * | 2014-12-15 | 2017-08-01 | 英特尔公司 | 图形指令的仪器化 |
Also Published As
Publication number | Publication date |
---|---|
EP2410429A1 (en) | 2012-01-25 |
US20120023483A1 (en) | 2012-01-26 |
JP2012027912A (ja) | 2012-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102339253B (zh) | 用于指示应用代码的执行的系统和方法 | |
CN103246602B (zh) | 代码覆盖率确定方法及系统、代码覆盖检测方法及系统 | |
CN101553769B (zh) | 用于跟踪并监控计算机应用的系统和方法 | |
US20180107198A1 (en) | Augmented manufacturing system | |
CN104040445A (zh) | 跨分布式控制系统服务器的实时事件查看 | |
WO2008097912A2 (en) | Event-based process configuration | |
CN102402214A (zh) | 用于显示过程控制信息的方法和装置 | |
CN102736582A (zh) | 一种用于管理多个过程控制资源的方法和装置 | |
CN102129372A (zh) | 通过事件相关来进行根本原因问题标识 | |
CN102840879A (zh) | 用于在监视旋转装置的操作中使用的系统和方法 | |
CN102419578A (zh) | 显示过程控制信息的方法和装置 | |
CN102339224A (zh) | 用于在指示应用代码的执行中使用的系统和方法 | |
CN108664461A (zh) | 一种网页表单自动填写方法及装置 | |
US11630751B2 (en) | Device for providing visitor behavior analysis data of dynamic webpage, and method for providing visitor behavior analysis data of web she using same | |
CN101685420B (zh) | 多线程调试方法和装置 | |
CN110908915B (zh) | 一种测试覆盖率的展示方法、装置及计算机系统 | |
US20200327181A1 (en) | Device for providing visitor behavior analysis data of dynamic webpage, and method for providing visitor behavior analysis data of website using same | |
CN112256575A (zh) | 一种代码质量管理方法、系统及相关设备 | |
WO2021230394A1 (ko) | 소프트웨어 개발 및 테스트 자동화 프레임워크 | |
CN109240928A (zh) | 一种测试方法、装置、设备及存储介质 | |
CN103593429A (zh) | 一种检测商品模板失效的方法及装置 | |
CN107291614B (zh) | 文件异常检测方法和电子设备 | |
KR101394225B1 (ko) | 다중 언어로 개발된 어플리케이션을 위한 프로파일링 수행 시스템 및 이를 이용한 프로파일링 방법 | |
US11733689B2 (en) | Control system, programmable logic controller, and information processing method | |
CN110597536B (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 |
Application publication date: 20120201 |