CN101714098A - 通过修改跟踪操作减少跟踪开销 - Google Patents
通过修改跟踪操作减少跟踪开销 Download PDFInfo
- Publication number
- CN101714098A CN101714098A CN200910179752A CN200910179752A CN101714098A CN 101714098 A CN101714098 A CN 101714098A CN 200910179752 A CN200910179752 A CN 200910179752A CN 200910179752 A CN200910179752 A CN 200910179752A CN 101714098 A CN101714098 A CN 101714098A
- Authority
- CN
- China
- Prior art keywords
- tracking
- data
- code
- modification
- computer program
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
- G06F8/4435—Detection or removal of dead or redundant code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- 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/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- 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/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明名称为“通过修改跟踪操作减少跟踪开销”。公开了一种编译计算机程序以提高跟踪效率的方法。计算机程序包括用于触发由所述计算机程序生成的跟踪数据的输出的多个跟踪操作,并且编译的方法包括以下步骤:将所述计算机程序变换成形成所述计算机程序的中间版本的代码;分析所述变换的代码;将所述跟踪操作的至少一些替代为修改的跟踪操作;将所述代码变换成适合在数据处理系统上执行的代码;以及生成将所述修改的跟踪操作关联到它们替代的所述跟踪操作的转换数据。
Description
技术领域
本发明涉及数据处理的领域,并且特别涉及程序行为监视的领域。
背景技术
数据处理设备变得越来越复杂,并且因此,在未提取和分析大量数据的情况下,为优化或故障查找而分析其性能变得越来越困难。
一种用于监视程序行为的熟知技术是收集可由硬件或插入程序中的代码生成的跟踪数据。因此,在响应跟踪调用的程序执行的某些点上,将输出对应于跟踪调用的跟踪数据。此跟踪数据可指示在该点的处理器的状态、特定变量的值和/或此跟踪调用发生的时间。
然而,以此方式监视程序的行为有多个缺陷。将跟踪调用插入程序中能改变其行为和使其行为失真,而插入的代码增大了程序的大小和它执行所用的时间。此外,以此方式会很容易生成大量数据,而通常用于从硬件传送跟踪数据的带宽是有限的。
最好是能够在仍收集有用的跟踪数据的同时减轻这些缺点中的至少一些。
发明内容
本发明的第一方面是提供一种编译计算机程序的方法,所述计算机程序包括用于触发由所述计算机程序生成的跟踪数据的输出的多个跟踪操作,所述编译的方法包括以下步骤:将所述计算机程序变换成形成所述计算机程序的中间版本的代码;分析所述变换的代码;将所述跟踪操作的至少一些替代为修改的跟踪操作;将所述代码变换成适合在数据处理系统上执行的代码;以及生成将所述修改的跟踪操作关联到它们替代的所述跟踪操作的转换数据。
本发明认识到,当计算机程序被编译以生成代码的表示或中间版本时,至少一些代码的排序被更改。在计算机程序代码包含跟踪操作的情况下,则这些跟踪操作也可在代码内移动,并且这可更改其效力。本发明认识到,代码的此中间版本的分析使得能够识别和在适当之处去除可能是由于代码的重新组织而产生的跟踪操作中的冗余。因此,在分析之后,某些识别的跟踪操作被替代为修改的跟踪操作,例如,生成冗余数据的跟踪操作可以被去除或与其它跟踪操作合并。代码的分析和在此阶段修改跟踪操作能促使代码内的跟踪操作的数量减少,使它更类似于无任何跟踪操作的不测试的代码,它也可减少需要处理的跟踪操作的量,由此减少目标系统的处理开销,并且它可减少生成的冗余数据量,从而减少输出跟踪数据所需的带宽。本发明也认识到,跟踪操作的修改可能使分析跟踪数据的系统不能理解它们,并且因此,它生成指示已如何修改跟踪操作的转换数据。此转换数据允许修改的跟踪操作输出的跟踪数据与它们替代的跟踪操作相关,并且因此,修改的代码输出通过使用转换数据能理解的跟踪数据。因此,本发明允许在编译器阶段修改跟踪操作,使得能够更有效地生成和输出跟踪数据。
在一些实施例中,所述方法分析所述变换的代码以确定所述至少一些跟踪操作,其替代为修改的跟踪操作将减少所述跟踪操作的执行的成本,并且依据所述分析来选择要替代的所述至少一些跟踪操作。
在分析如何修改跟踪操作时,本发明的实施例寻求减少跟踪操作的执行的成本,并由此提高在执行跟踪时跟踪的效率。通过在编译器阶段修改跟踪操作,不但能生成更少的跟踪数据,而且能减少跟踪操作的数量,这能减少处理能力、使用的能量和执行时间。因此,本发明寻求减少与跟踪相关联的成本,这些成本可包括生成的跟踪数据量、执行的跟踪操作的数量、执行时间和生成跟踪所需的功率和能量。
在一些实施例中,所述替代步骤包括将至少所述跟踪操作的两个替代为至少一个修改的跟踪操作。
虽然修改的跟踪操作可替代单个原跟踪操作,但修改的跟踪操作可能生成更少跟踪数据,在一些实施例中,修改的跟踪操作是通过合并几个跟踪操作来生成的。因此,两个跟踪操作可替代为单个修改的跟踪操作,或者多个跟踪操作可替代为更少的修改的跟踪操作。这减少了执行的跟踪操作的数量,并且在被替代的几个跟踪操作的一些操作输出相同数据时,也可减少输出的跟踪数据量。
在一些实施例中,所述分析步骤包括识别代码的所述中间版本的基本块内的至少两个跟踪操作,所述基本块是代码块,在其内如果执行一个指令,则将执行所述指令的所有指令,并且所述替代步骤包括将所述至少两个跟踪操作替代为所述修改的跟踪操作的至少一个。
能合并的跟踪操作的示例是在代码的中间版本的基本块内的跟踪操作。基本块是代码块,在其中如果执行一个指令,则将执行所有指令。因此,在同一基本块中存在的跟踪操作将全部被执行,并因此能合并成更少的跟踪操作。
在一些实施例中,所述替代步骤包括将所述跟踪操作的至少一个替代为至少一个修改的跟踪操作和相关联的时间戳校正数据,所述时间戳校正数据指示相对于所述修改的跟踪操作的执行,所述至少一些跟踪操作何时将执行。
跟踪数据可包含时间戳,指示执行跟踪操作的时间。因此,如果原跟踪操作将包含时间戳数据,则与修改的跟踪操作相关联的转换数据也包含时间戳数据,指示相对于修改的跟踪操作的执行,修改的跟踪操作替代的原跟踪操作将何时执行,会是有利的。
在一些实施例中,生成转换数据的所述步骤包括生成在所述跟踪操作的每个和替代它们的所述修改的跟踪操作的执行之间周期的数量的估计。
计算相对于修改的跟踪操作,原跟踪操作何时将执行的一种方式是估计操作之间的周期的数量并在转换数据中包括此估计。因此,如果修改的跟踪操作包括时间戳数据,则能做出各个跟踪操作原本将何时产生其跟踪数据的估计。
在一些实施例中,所述替代步骤包括将所述跟踪操作的至少一个替代为修改的跟踪操作,该修改的跟踪操作输出的数据比所述至少一个跟踪操作输出的更少。
修改的跟踪操作替代其它跟踪操作以便减少跟踪操作的执行的成本,并且这可以是通过输出比原跟踪操作所输出的更少的数据来实现。在中间版本阶段代码的分析可识别一些输出的数据是冗余数据,即,与已经输出的数据是相同的数据,或能从已经输出的数据计算得出的数据。如果情况是这样,此数据无需输出(假如生成的转换数据使得它能够从输出的数据推导出)。
在一些实施例中,所述替代步骤包括将所述跟踪操作的至少一个替代为修改的跟踪操作,该修改的跟踪操作需要所述计算机程序执行的处理步骤比所述至少一个跟踪操作需要的更少。
能减少的另一成本是由于处理步骤产生的成本,并且修改的跟踪操作可能使得它需要计算机执行的处理步骤比它替代的跟踪操作更少。例如,跟踪操作可能需要输出两个变量的乘积,这意味着目标系统将需要计算此值。如果目标系统上的处理能力是非常珍贵的,则单独输出两个值并在分析跟踪数据的系统上计算乘积会是有利的。
在一些实施例中,所述跟踪操作的至少一个包括标记数据,指示在所述跟踪操作被替代为所述修改的跟踪操作之一时能移动的程度,在确定要替代的跟踪操作时,所述替代的步骤响应所述标记数据。
标记数据可能与跟踪操作相关联。此标记数据是向编译器提供提示或指令的数据,并且在代码的最终编译版本中不存在。此标记数据可包括在修改期间能移动跟踪操作的程度的数据指示。当分析代码的中间版本并将跟踪操作替代为修改的跟踪操作时,考虑此标记数据,使得替代具有标记数据的原跟踪操作的修改的跟踪操作不会远于此原跟踪操作允许的量。
在一些实施例中,所述计算机程序包括屏障(barrier)指示,跟踪操作不能跨越所述屏障指示移动来形成修改的跟踪操作。
作为对编译器的指示或指令存在的其它信息可能是屏障指示,这些指示能采用多种形式,并且可例如是指令。这些指示能插入程序中以指示编译器不要跨越它们移动跟踪操作。类似于标记数据,这些指示从编译的代码的最终版本中删除,但由编译器用于帮助它以正确的方式重新组织代码。
在一些实施例中,所述方法包括在所述变换的程序内包括代码以用于控制执行所述代码的处理器输出所述转换数据的又一步骤。
生成的转换数据与变换的代码一起输出是可以的,在这种情况下,变换的代码将包括控制执行代码的处理器输出转换数据的步骤。这样,转换代码将经执行编译的代码的处理器可供分析器使用。在其它实施例中,转换数据以不同方式变得可用于分析器,例如,经数据存储。此后一种方式可以是其中编译代码和分析跟踪数据的设备是相同设备的情况。备选地,转换数据可嵌入在程序二进制码内,但在执行时不输出。例如,它可以是与从分析跟踪数据的分析器上的二进制码的单独副本读取的二进制码相关联的调试表的形式。
在一些实施例中,所述方法还包括两个步骤:在将所述至少一些跟踪操作替代为修改的跟踪操作的所述步骤后,分析所述修改的代码;将所述跟踪操作的至少一些或修改的跟踪操作替代为修改的跟踪操作;以及重复所述两个步骤,直至分析所述修改的代码的所述步骤指示,当与所述以前修改的代码相比时,所述修改的代码未显著减少所述跟踪操作的执行的成本。
跟踪操作的修改能以递归方式完成,以便它们被修改,并且修改的代码被分析,并且进行进一步修改,直至进一步修改不再产生显著成本节约的点为止。应注意的是,在进一步的步骤中替代的跟踪操作可以是原跟踪操作和/或在以前步骤中已经修改的那些操作。通过比较需要的处理步骤的数量并发现它们并未减少,或者比较执行的速度并发现这未被减少大于预定的量(这被判定为是不重要的),则能够断定进一步修改不再产生显著成本节约的点。
本发明的第二方面提供一种监视程序行为的方法,包括:接收跟踪数据和转换数据,所述跟踪数据是响应由正在被监视的所述程序执行的跟踪操作而输出的跟踪数据,所述转换数据包括对应于所述跟踪操作的至少一些的数据,所述跟踪操作的所述至少一些是修改的跟踪操作;识别响应所述修改的跟踪操作而生成的跟踪数据;以及使用所述转换数据来转换所述识别的跟踪数据以生成转换的跟踪数据,所述转换的跟踪数据表示由所述程序在它被修改前的版本中存在的跟踪操作原本将输出的跟踪数据。
通过使用也由本发明的第一方面生成的转换数据,能理解和分析已根据本发明的第一方面编译的程序生成的跟踪数据。因此,修改的跟踪操作生成的跟踪数据被识别,并且相关的转换数据被发现,并且修改的跟踪数据随后能被重新构建以形成表示由程序在它被修改前的版本中存在的跟踪操作原本将输出的跟踪数据的跟踪数据。随后,能分析此跟踪数据。
虽然表示由程序在它被修改前的版本中存在的跟踪操作原本将输出的跟踪数据的转换的跟踪数据能够采用多种形式(假设转换的跟踪数据与原跟踪数据足够类似,以使得它能够由预期原数据的工具来分析),但在一些实施例中,除可能稍微不同的时间戳外,它在所有方面与原跟踪数据相同,而且在一些实施例中,可能可保证这些时间戳也是相等的。
在一些实施例中,方法包括使用所述跟踪数据来分析所述程序行为的又一步骤。
一旦跟踪数据已修正成类似于原跟踪数据的形式,它便能够由预期原跟踪数据的常规工具来分析,或者由用于分析此特定编译的代码的工具来分析。
在一些实施例中,从正在被监视的所述系统接收所述转换数据与所述跟踪数据,而在其它实施例中,转换数据存储在分析系统上,或者它放入在准许的位置的文件中,或者放入可执行文件的节(section)中,或者它能够是分析系统引用的程序的存储器映像的一部分。
本发明的第三方面提供一种分析在嵌入式系统上执行的计算机程序的行为的方法,所述计算机程序包括用于触发由所述计算机程序生成的跟踪数据的输出的多个跟踪操作,所述方法包括以下步骤:将所述计算机程序变换成形成所述计算机程序的中间版本的代码;分析所述变换的代码;将所述跟踪操作的至少一些替代为修改的跟踪操作;将所述代码变换成适合在数据处理系统上执行的代码;以及生成将所述修改的跟踪操作关联到它们替代的所述跟踪操作的转换数据,以允许解释响应所述修改的跟踪操作而输出的跟踪数据;将所述变换的代码输出到所述数据处理系统;将所述转换数据输出到程序监视设备;在所述数据处理系统上执行所述变换的代码;在所述程序监视设备从所述数据处理系统接收跟踪数据;识别所述跟踪数据内响应所述修改的跟踪操作而生成的跟踪数据;使用所述转换数据来转换所述识别的跟踪数据以生成表示由所述程序在它被修改前的版本中存在的跟踪操作原本将输出的跟踪数据的跟踪数据;使用所述跟踪数据来分析所述程序行为。
代码的编译及随后对生成的跟踪数据的分析能在单个设备上执行。
本发明的第四方面提供一种用于控制数据处理设备以执行本发明第一方面的方法的步骤的计算机程序。
本发明的第五方面提供一种用于控制数据处理设备以执行本发明第二方面的方法的步骤的计算机程序。
本发明的第六方面提供一种用于编译计算机程序的编译器,该计算机程序包括用于触发由所述计算机程序生成的跟踪数据的输出的多个跟踪操作,所述编译器包括:变换电路,用于将所述计算机程序变换成形成所述计算机程序的中间版本的代码;分析电路,用于分析所述变换的代码;其中所述变换电路响应所述分析电路执行的分析,将至少一些跟踪操作替代为修改的跟踪操作,并将所述代码变换成适合在数据处理系统上执行的代码,以及生成将所述修改的跟踪操作关联到它们替代的所述跟踪操作的转换数据。
本发明的第七方面提供一种用于监视程序行为的分析设备,包括:输入,用于接收跟踪数据和转换数据,所述跟踪数据是响应由正在被监视的所述程序执行的跟踪操作而输出的跟踪数据,所述转换数据包括对应于所述跟踪操作的至少一些的数据,所述跟踪操作的所述至少一些是修改的跟踪操作;识别电路,用于识别响应所述修改的跟踪操作而生成的跟踪数据;转换电路,用于使用所述接收的转换数据来转换所述识别的跟踪数据以生成转换的跟踪数据,所述转换的跟踪数据表示由所述程序在它被修改前的版本中存在的跟踪操作原本将输出的跟踪数据。
结合附图阅读下面说明性实施例的详细说明,将明白本发明的上述和其他目的、特征和优点。
附图说明
图1示意示出用于监视由嵌入式系统处理的计算机程序的行为的数据处理设备;
图2示出用于编译包括跟踪操作的代码的数据处理设备;
图3示出被修改以形成修改的跟踪操作的跟踪操作的一些示例;
图4是示出在用于在分析修改的跟踪数据前将其转换成常规跟踪数据的方法中的步骤的流程图;以及
图5是示出用于在计算机程序的编译期间修改跟踪数据的方法中的步骤的流程图。
具体实施方式
图1示出用于监视由嵌入式系统20正在执行的计算机程序的行为的数据处理设备10。要分析的程序由编译器40编译。
计算机程序在程序代码内具有跟踪操作,其在被处理时触发跟踪数据的输出。这些操作可以是许多不同事务,包括“跟踪调用”指令、函数调用、内联函数调用、宏和特殊机器代码指令、根据跟踪操作的跟踪数据输出。
在编译器40编译期间,程序被变换成代码的表示或中间版本。此变换可涉及在代码内来回移动函数和指令。
除重新布置代码以将它设置成适合的形式以便由嵌入式系统20执行外,编译器40修改至少一些跟踪操作以尝试减少与它们相关联的开销。这些开销可包括生成的跟踪数据量、跟踪操作的数量和需要的处理能力。
开销的此减少涉及避免或至少减少冗余跟踪数据的生成,将跟踪操作合并在一起,以及在一些实施例中更改跟踪数据输出以减少在目标系统上的处理要求。因此,由于程序代码的重新布置,现在在同一基本块内出现于彼此附近的跟踪调用能合并以形成单个修改的跟踪调用。此外,如果两个自变量x和y由一个跟踪调用输出,并且随后其乘积由第二跟踪调用输出,则这两个跟踪调用能合并,以便只有第一跟踪调用被输出,并且两个值的相乘由分析跟踪的分析器(主机调试器)而不是目标系统20来执行。跟踪调用的此类合并具有加快目标系统20处理代码的速度并使代码的执行更类似于无跟踪操作的原程序的执行的优点。
因此,编译器40编译要测试的程序并修改代码内的跟踪操作。跟踪操作的修改可以递归方式进行,因为可几次修正修改的跟踪操作的集合,并且分析变换的代码,直至发现无进一步的或仅无关紧要的与跟踪相关联的成本节约。这些成本节约是在跟踪操作的执行的成本方面的节约,并且包括在生成的跟踪数据、跟踪操作的数量、处理能力、使用的能量及执行时间方面的减少。编译的代码随后由编译器40输出并发送到嵌入式系统20以用于执行。除产生带有修改的跟踪操作的编译的代码外,编译器40也生成转换表,该表包含将修改的跟踪操作关联到它们从其生成的跟踪操作的信息。在此实施例中,此转换表直接发送到数据处理设备10上的数据存储50。在其它实施例中,它可与编译的代码一起发送到嵌入式系统20。在代码在一个系统上编译,并在不同系统上分析的情况下,这可能是适当的。
编译的代码随后由嵌入式系统20执行,并且由编译的代码内的跟踪操作生成的跟踪数据从嵌入式系统输出并且在接口60接收。此跟踪数据随后由数据处理设备10内的分析器70分析。分析器70还访问在数据存储50中存储的转换表。因此,分析器70查看跟踪数据,并且它使用数据存储50中存储的转换表将对应于它未预期的跟踪调用(即原代码中不存在的跟踪调用)的任何跟踪数据重新构建成某种形式,该种形式与在如果跟踪调用未被修改的情况下将生成的形式有关,并且因此它能理解。重新构建的跟踪数据可以是与未修改的跟踪调用将输出的跟踪数据相同,或者它可以除时间戳数据外是相同的。随后,它能使用常规分析技术分析此跟踪数据。
为了能够识别转换表内的适当转换数据,识别修改的跟踪操作的数据与它生成的跟踪数据一起输出,此识别数据也与转换数据一起存储在转换表中。
通过以此方式修改跟踪操作,编译器40减少进行的跟踪调用的数量的至少一些、输出的跟踪数据及嵌入式系统20的处理开销。
虽然在此实施例中未示出,但另外的压缩技术可用于减少嵌入式系统20输出的数据。
图2示出本发明的备选实施例,其中,数据处理设备12中的编译器40编译数据存储55中存储的程序,并且在编译程序的同时以类似于图1的设备的方式修改程序的跟踪操作。然而,在此实施例中,编程程序的数据处理设备12不是分析它的设备。因此,生成作为修改的跟踪调用的码本的转换表由编译器40经接口60与编译的代码一起输出到嵌入式系统20。编译的代码包含指示处理器输出转换表的指令。因此,在经输出22连接到分析系统时,嵌入式系统20运行编译的代码,并响应此代码,经跟踪输出22将转换表与生成的跟踪数据一起输出。此跟踪数据随后能由此单独的系统使用转换表来分析。
在一些实施例中,该单独的系统是带有另外的块的常规跟踪分析器,该块使用转换表将由修改的跟踪操作生成的跟踪数据转换成本例将由原跟踪操作输出的跟踪数据。一旦此转换已执行,则常规跟踪分析器能分析跟踪数据。
图3示出被修改以形成修改的跟踪操作的跟踪操作的一些示例。图3A示出三个跟踪事件,在此实施例中,这些事件是在编译器已生成的代码的中间表示内的基本块中。认识到这三个事件在同一基本块内,使得如果执行一个事件,则将执行所有事件,并且它们包含在各个跟踪调用的执行之间将不改变的自变量,编译器组合这些跟踪调用以生成新的压缩跟踪调用,在这个示例中它表示为C跟踪19,x,y。19是用于此修改的跟踪调用的识别数据,而x和y是输出的自变量。这些自变量是由原三个跟踪调用输出的自变量。
除生成此压缩的跟踪调用外,编译器还创建表,该表允许将修改的跟踪数据转换回未修改的程序原本将传送的跟踪数据。在这个示例中,对应于此修改的跟踪调用的表条目如果转换成人可读形式,将看上去如图3A所示。因此,它识别19为修改的跟踪调用,并且AB为它输出的自变量。因此,在收到标记为19的跟踪事件及两个自变量(AB)时,分析器能将这些与它预期的事件1进行匹配,并生成5和第一自变量A的跟踪数据,作为对应于原未修改的跟踪调用事件1的跟踪数据。也能将它与预期的第二跟踪调用事件2进行匹配,并生成与修改的跟踪调用一起接收的两个自变量A和B(对应于x和y)的跟踪数据。也能将它与预期的第三跟踪调用事件3进行匹配,并且将输出第二自变量(即B)和数字7。
通常,跟踪数据还附加有时间戳,并且系统可要求时间戳是唯一的或反映跟踪操作的原来表达的顺序。此类情况下,在将修改的跟踪数据转换回原形式时,分析器可将额外的字段添加到与该修改的跟踪事件一起接收的时间戳。因此,如果修改的跟踪事件19具有时间戳2000,则为三个原跟踪调用生成的时间戳能够对于事件1是2000.1,对于事件2是2000.2,并且对于事件3是2000.3。备选地,在其它实施例中,编译器可估计未修改的代码中单独调用之间的周期数量,并且在如图3B所示的表中包括该信息。此处,估计事件1为在修改的跟踪指令事件19之前5个周期发生,而估计事件2为在2个周期前发生,事件3在3个周期后发生。因此,在修改的跟踪数据具有时间戳,指示它在2000发生时,原跟踪数据能如图所示重新构建。
像这样来估计时间能导致一些时间戳和单独的修改事件重叠,因此,在此类情况下可能需要一种机制来调节时序以保存事件的正确排序。此类调节能内置到编译器中。
能修改的备选跟踪调用如图3C所示,这些调用与减少输出的数据量有关,并且也与正在测试的目标系统需要的处理的量有关。在这个示例中,编译器认识到输出数据xy和x+y不是必要的,并且只输出x和y及指示原跟踪调用将输出xy和x+y的转换数据使得调试主机能够从输出的减少的数据生成另外的数据。
在跟踪调用需要自变量加特定值或相乘的两个自变量一起输出的其它实施例中,可能最好是单独输出这些值,并在调试主机而不是目标系统上执行组合它们的处理步骤。在一些情况下,这能导致输出的跟踪数据量增大,但在重点是减少目标系统的处理要求的情况下,这可能是可接受的。应注意的是,如果由于非跟踪的某一原因,程序需要自变量的相乘值,则在此类情况下,相乘的值应被输出,因为目标系统反正也需要执行这些相乘步骤,并且输出相乘的值减少了在调试主机上输出的数据和执行的处理。
转换数据的压缩也能够执行。例如,如果转换的事件42对应于原事件X、Y、Z,并且转换的事件53对应于转换的事件X、Y、Z、P、Q,则图3D示出能如何通过使用为事件42存在的信息来减少表示事件53需要的转换表数据。
图4示出一个流程图,其示出将修改的跟踪数据转换成常规跟踪数据并随后分析它的方法。跟踪数据与转换表一起被接收。随后,分析跟踪数据,并且检查由跟踪调用生成的每个跟踪数据集或段以查看它是否对应于在原程序中存在的跟踪调用。如果是,则检查下一跟踪数据段。如果不是,则读取转换表,并且访问对应于此操作的转换数据,以及将跟踪数据修改为对应原程序原本将输出的跟踪数据。应注意,可不将它修改为与原跟踪调用原本将输出的跟踪数据相同,但它将足够类似,以便预期原跟踪数据的工具能分析它。例如,如果跟踪数据包含时间戳,则可能是这些时间戳与原调用原本将输出的时间戳不完全相同,然而,对于要分析的代码,它们足够类似。
图5示出修改代码中的跟踪调用以减少代码中的跟踪调用的数量和输出的跟踪数据的方法的一些步骤。应注意,所示步骤不一定按示出的顺序执行,并且一些步骤可相互并行执行。在所示示例中,基本块中的多个跟踪调用被合并以形成单个修改的跟踪调用,由此减少在代码中跟踪调用的数量并可能减少输出的数据量。此外,输出冗余数据的跟踪调用也被识别和修改,以便不输出冗余数据。
未示出的其它优化步骤可在代码上执行。例如,可检测到标记为等幂的跟踪事件,并且在有同一事件的相邻实例的情况下,只需要发射它们之一,因而能删除其它实例。应注意的是,这可能已经通过常规合并过程处理。此外,可能有对某些跟踪操作的屏障指示或标记,指示不应移动这些操作到其之外的限制。在决定有关合并跟踪调用时,不进行超出这些指定的限制之外的合并。另外,一些跟踪事件可具有指示它们是要打开还是关闭及何时修改跟踪调用的标记,这些标记被分析,如果跟踪调用要被关闭,则它从代码中删除。
在一些实施例中,可能有关于跟踪数据能发射的事件的数量的限制,并且生成修改的跟踪事件可能增大事件的数量。在此限制成为问题的情况下,当确定要修改哪些跟踪事件或调用时,可执行图中所示的那些步骤外的另外步骤以防止超出限制。在此类情况下,编译器分析代码并计算各种事件的频率,以便它能最有效地利用可用事件代码,只产生较频繁发生的或减少大量的跟踪操作或输出的跟踪数据的修改的事件。这样做是为了尝试从编码空间获得最佳值。
虽然在本文参照附图已详细描述本发明的说明性实施例,但要理解,本发明并不限于那些具体的实施例,并且在不脱离如所附权利要求定义的本发明范围和精神的情况下,本领域的技术人员可实现其不同的更改和修改。例如,在不脱离本发明范围的情况下,所附从属权利要求的特征可与独立权利要求的特征进行各种组合。
Claims (21)
1.一种编译计算机程序的方法,所述计算机程序包括用于触发由所述计算机程序生成的跟踪数据的输出的多个跟踪操作,所述编译的方法包括以下步骤:
将所述计算机程序变换成形成所述计算机程序的中间版本的代码;
分析所述变换的代码;
将所述跟踪操作的至少一些替代为修改的跟踪操作;
将所述代码变换成适合于在数据处理系统上执行的代码;以及
生成将所述修改的跟踪操作关联到它们替代的所述跟踪操作的转换数据。
2.如权利要求1所述的方法,其中所述方法分析所述变换的代码以确定所述至少一些跟踪操作,其替代为修改的跟踪操作将减少所述跟踪操作的执行的成本,并且依据所述分析来选择要替代的所述至少一些跟踪操作。
3.如权利要求1所述的方法,其中所述替代步骤包括将所述跟踪操作的至少两个替代为至少一个修改的跟踪操作。
4.如权利要求3所述的方法,其中所述分析步骤包括识别代码的所述中间版本的基本块内的至少两个跟踪操作,所述基本块是代码的块,在其内如果执行一个指令,则将执行所述指令的所有指令,并且所述替代步骤包括将所述至少两个跟踪操作替代为所述修改的跟踪操作的至少一个。
5.如权利要求1所述的方法,其中所述替代步骤包括将所述跟踪操作的至少一个替代为至少一个修改的跟踪操作和相关联的时间戳校正数据,所述时间戳校正数据指示相对于所述修改的跟踪操作的执行,所述至少一些跟踪操作何时将执行。
6.如权利要求1所述的方法,其中生成转换数据的所述步骤包括生成在所述跟踪操作的每个和替代它们的所述修改的跟踪操作的执行之间的周期的数量的估计。
7.如权利要求2所述的方法,其中所述替代步骤包括将所述跟踪操作的至少一个替代为修改的跟踪操作,所述修改的跟踪操作输出的数据比所述至少一个跟踪操作输出的数据更少。
8.如权利要求2所述的方法,其中所述替代步骤包括将所述跟踪操作的至少一个替代为修改的跟踪操作,所述修改的跟踪操作需要所述计算机程序执行的处理步骤比所述至少一个跟踪操作需要的更少。
9.如权利要求1所述的方法,其中所述跟踪操作的至少一个包括标记数据,所述标记数据指示所述跟踪操作当被替代为所述修改的跟踪操作之一时能移动的程度,在确定哪些跟踪操作要替代时,所述替代的步骤响应所述标记数据。
10.如权利要求1所述的方法,其中所述计算机程序包括屏障指示,跟踪操作不能跨越所述屏障指示移动来形成修改的跟踪操作。
11.如权利要求1所述的方法,包括在所述变换的程序内包括代码以用于控制执行所述代码的处理器输出所述转换数据的又一步骤。
12.如权利要求2所述的编译计算机程序的方法,所述方法还包括两个步骤:
在将所述至少一些跟踪操作替代为修改的跟踪操作的所述步骤后,分析所述修改的代码;
将所述跟踪操作的至少一些或修改的跟踪操作替代为修改的跟踪操作;
以及重复所述两个步骤,直至分析所述修改的代码的所述步骤指示,当与所述以前修改的代码相比时,所述修改的代码未显著减少所述跟踪操作的执行的成本。
13.一种监视程序行为的方法,包括:
接收跟踪数据和转换数据,所述跟踪数据是响应由正在被监视的所述程序执行的跟踪操作而输出的跟踪数据,所述转换数据包括对应于所述跟踪操作的至少一些的数据,所述跟踪操作的所述至少一些是修改的跟踪操作;
识别响应所述修改的跟踪操作而生成的跟踪数据;
使用所述转换数据来转换所述识别的跟踪数据以生成转换的跟踪数据,所述转换的跟踪数据表示由所述程序在它被修改前的版本中存在的跟踪操作原本将输出的跟踪数据。
14.如权利要求13所述的监视程序行为的方法,其中除任何时间戳数据外,所述转换的跟踪数据与由所述程序在它被修改前的版本中存在的跟踪操作原本将输出的跟踪数据相同。
15.如权利要求13所述的监视程序行为的方法,包括使用所述跟踪数据来分析所述程序行为的又一步骤。
16.如权利要求13所述的监视程序行为的方法,其中从正在被监视的所述系统接收所述转换数据和所述跟踪数据。
17.一种分析在嵌入式系统上执行的计算机程序的行为的方法,所述计算机程序包括用于触发由所述计算机程序生成的跟踪数据的输出的多个跟踪操作,所述方法包括以下步骤:
将所述计算机程序变换成形成所述计算机程序的中间版本的代码;
分析所述变换的代码;
将所述跟踪操作的至少一些替代为修改的跟踪操作;
将所述代码变换成适合于在数据处理系统上执行的代码;
生成将所述修改的跟踪操作关联到它们替代的所述跟踪操作的转换数据,以允许解释响应所述修改的跟踪操作而输出的跟踪数据;
将所述变换的代码输出到所述数据处理系统;
将所述转换数据输出到程序监视设备;
在所述数据处理系统上执行所述变换的代码;
在所述程序监视设备从所述数据处理系统接收跟踪数据;
识别所述跟踪数据内响应所述修改的跟踪操作而生成的跟踪数据;
使用所述转换数据来转换所述识别的跟踪数据以生成表示由所述程序在它被修改前的版本中存在的跟踪操作原本将输出的跟踪数据的跟踪数据;
使用所述跟踪数据来分析所述程序行为。
18.一种用于控制数据处理设备以执行如权利要求1所述方法的步骤的计算机程序。
19.一种用于控制数据处理设备以执行如权利要求13所述方法的步骤的计算机程序。
20.一种用于编译计算机程序的编译器,所述计算机程序包括用于触发由所述计算机程序生成的跟踪数据的输出的多个跟踪操作,所述编译器包括:
变换电路,用于将所述计算机程序变换成形成所述计算机程序的中间版本的代码;
分析电路,用于分析所述变换的代码;其中
所述变换电路响应由所述分析电路执行的分析,将所述跟踪操作的至少一些替代为修改的跟踪操作,并将所述代码变换成适合于在数据处理系统上执行的代码,以及生成将所述修改的跟踪操作关联到它们替代的所述跟踪操作的转换数据。
21.一种用于监视程序行为的分析设备,包括:
输入,用于接收跟踪数据和转换数据,所述跟踪数据是响应由正在被监视的所述程序执行的跟踪操作而输出的跟踪数据,所述转换数据包括对应于所述跟踪操作的至少一些的数据,所述跟踪操作的所述至少一些是修改的跟踪操作;
识别电路,用于识别响应所述修改的跟踪操作而生成的跟踪数据;
转换电路,用于使用所述接收的转换数据来转换所述识别的跟踪数据以生成转换的跟踪数据,所述转换的跟踪数据表示由所述程序在它被修改前的版本中存在的跟踪操作原本将输出的跟踪数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/285,016 US20100083237A1 (en) | 2008-09-26 | 2008-09-26 | Reducing trace overheads by modifying trace operations |
US12/285016 | 2008-09-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101714098A true CN101714098A (zh) | 2010-05-26 |
Family
ID=42059078
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910179752A Pending CN101714098A (zh) | 2008-09-26 | 2009-09-25 | 通过修改跟踪操作减少跟踪开销 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20100083237A1 (zh) |
JP (1) | JP2010079894A (zh) |
CN (1) | CN101714098A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678117A (zh) * | 2012-09-25 | 2014-03-26 | 日本电气株式会社 | 数据转换跟踪设备以及数据转换跟踪方法 |
CN103713996A (zh) * | 2012-10-02 | 2014-04-09 | 德州仪器公司 | 使用下游相关进行调试跟踪流盖时间戳 |
CN105159195A (zh) * | 2015-08-28 | 2015-12-16 | 中广核工程有限公司 | 冗余dcs系统及用于降低冗余dcs系统的核级cpu负荷的方法 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2370892B1 (en) * | 2008-12-02 | 2020-11-04 | Ab Initio Technology LLC | Mapping instances of a dataset within a data management system |
US8495587B2 (en) * | 2009-01-13 | 2013-07-23 | International Business Machines Corporation | Method, apparatus or software for selectively activating a trace function |
US9129056B2 (en) * | 2009-12-04 | 2015-09-08 | Sap Se | Tracing values of method parameters |
US9639446B2 (en) * | 2009-12-21 | 2017-05-02 | International Business Machines Corporation | Trace monitoring |
US9141351B2 (en) * | 2012-05-01 | 2015-09-22 | Oracle International Corporation | Indicators for resources with idempotent close methods in software programs |
US9612877B1 (en) * | 2012-07-12 | 2017-04-04 | Cisco Technology, Inc. | High performance computing in a virtualized environment |
GB2532285A (en) * | 2014-11-17 | 2016-05-18 | Ibm | Request monitoring |
US10296436B2 (en) * | 2016-09-08 | 2019-05-21 | International Business Machines Corporation | Adjusting trace points based on overhead analysis |
US10209962B2 (en) | 2017-02-06 | 2019-02-19 | International Business Machines Corporation | Reconstructing a high level compilable program from an instruction trace |
US9875167B1 (en) | 2017-03-29 | 2018-01-23 | Google Inc. | Distributed hardware tracing |
US10365987B2 (en) | 2017-03-29 | 2019-07-30 | Google Llc | Synchronous hardware event collection |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1271896A (zh) * | 1999-04-23 | 2000-11-01 | 太阳微系统有限公司 | 调试优化代码的方法和设备 |
US6145121A (en) * | 1997-04-17 | 2000-11-07 | University Of Washington | Trace based method for the analysis, benchmarking and tuning of object oriented databases and applications |
US20020032804A1 (en) * | 1998-10-02 | 2002-03-14 | Hunt Galen C. | Heavyweight and lightweight instrumentation |
US6546548B1 (en) * | 1997-12-12 | 2003-04-08 | International Business Machines Corporation | Method and system for compensating for output overhead in trace data using initial calibration information |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6507805B1 (en) * | 1997-12-12 | 2003-01-14 | International Business Machines Corporation | Method and system for compensating for instrumentation overhead in trace data by detecting minimum event times |
US6349406B1 (en) * | 1997-12-12 | 2002-02-19 | International Business Machines Coporation | Method and system for compensating for instrumentation overhead in trace data by computing average minimum event times |
US6263491B1 (en) * | 1998-10-02 | 2001-07-17 | Microsoft Corporation | Heavyweight and lightweight instrumentation |
US6233678B1 (en) * | 1998-11-05 | 2001-05-15 | Hewlett-Packard Company | Method and apparatus for profiling of non-instrumented programs and dynamic processing of profile data |
US7137105B2 (en) * | 1999-05-12 | 2006-11-14 | Wind River Systems, Inc. | Dynamic software code instrumentation method and system |
US6598012B1 (en) * | 1999-10-07 | 2003-07-22 | International Business Machines Corporation | Method and system for compensating for output overhead in trace date using trace record information |
US6658471B1 (en) * | 2000-06-29 | 2003-12-02 | International Business Machines Corporation | Method and system for zero overhead software performance measurement instrumentation |
US6662359B1 (en) * | 2000-07-20 | 2003-12-09 | International Business Machines Corporation | System and method for injecting hooks into Java classes to handle exception and finalization processing |
US7093236B2 (en) * | 2001-02-01 | 2006-08-15 | Arm Limited | Tracing out-of-order data |
GB2389432B (en) * | 2002-06-07 | 2005-09-07 | Advanced Risc Mach Ltd | Instruction tracing in data processing systems |
US7165190B1 (en) * | 2002-07-29 | 2007-01-16 | Oracle International Corporation | Method and mechanism for managing traces within a computer system |
JP4469576B2 (ja) * | 2003-08-19 | 2010-05-26 | 株式会社東芝 | トレースデータ処理装置、トレースデータ処理方法およびトレースデータ処理プログラム |
US7587709B2 (en) * | 2003-10-24 | 2009-09-08 | Microsoft Corporation | Adaptive instrumentation runtime monitoring and analysis |
US7661094B2 (en) * | 2005-05-10 | 2010-02-09 | Alcatel-Lucent Usa Inc. | Real-time software diagnostic tracing |
US7779399B2 (en) * | 2005-05-16 | 2010-08-17 | Armorize Technologies, Inc. | System and method for securing web application code and verifying correctness of software |
US7447947B2 (en) * | 2005-06-03 | 2008-11-04 | Microsoft Corporation | System and method for economizing trace operations |
US7694281B2 (en) * | 2005-09-30 | 2010-04-06 | Intel Corporation | Two-pass MRET trace selection for dynamic optimization |
US7797517B1 (en) * | 2005-11-18 | 2010-09-14 | Oracle America, Inc. | Trace optimization via fusing operations of a target architecture operation set |
US8769511B2 (en) * | 2006-02-16 | 2014-07-01 | The Regents Of The University Of California | Dynamic incremental compiler and method |
US20080126828A1 (en) * | 2006-06-07 | 2008-05-29 | Janice Marie Girouard | Dynamic enablement and customization of tracing information in a data processing system |
US8108839B2 (en) * | 2006-11-30 | 2012-01-31 | International Business Machines Corporation | Method and apparatus for tracing execution of computer programming code using dynamic trace enablement |
US8490073B2 (en) * | 2007-03-30 | 2013-07-16 | International Business Machines Corporation | Controlling tracing within compiled code |
US8543683B2 (en) * | 2007-09-26 | 2013-09-24 | Microsoft Corporation | Remote monitoring of local behavior of network applications |
US8108513B2 (en) * | 2007-09-26 | 2012-01-31 | Microsoft Corporation | Remote monitoring of local behavior of network applications |
-
2008
- 2008-09-26 US US12/285,016 patent/US20100083237A1/en not_active Abandoned
-
2009
- 2009-09-09 JP JP2009208221A patent/JP2010079894A/ja not_active Withdrawn
- 2009-09-25 CN CN200910179752A patent/CN101714098A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6145121A (en) * | 1997-04-17 | 2000-11-07 | University Of Washington | Trace based method for the analysis, benchmarking and tuning of object oriented databases and applications |
US6546548B1 (en) * | 1997-12-12 | 2003-04-08 | International Business Machines Corporation | Method and system for compensating for output overhead in trace data using initial calibration information |
US20020032804A1 (en) * | 1998-10-02 | 2002-03-14 | Hunt Galen C. | Heavyweight and lightweight instrumentation |
CN1271896A (zh) * | 1999-04-23 | 2000-11-01 | 太阳微系统有限公司 | 调试优化代码的方法和设备 |
Non-Patent Citations (1)
Title |
---|
JEFFREY K.HOLLINGSWORTH,BARTON P.MILLER,MARCELO J.R.GONCALVES: "MDL: A Language and Compiler for Dynamic Program Instrumentation", 《INTERNATIONAL CONFERENCE ON PARALLEL ARCHITECTURES AND COMPILATION TECHNIQUES(PACT)》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678117A (zh) * | 2012-09-25 | 2014-03-26 | 日本电气株式会社 | 数据转换跟踪设备以及数据转换跟踪方法 |
CN103678117B (zh) * | 2012-09-25 | 2017-11-03 | 日本电气株式会社 | 数据转换跟踪设备以及数据转换跟踪方法 |
CN103713996A (zh) * | 2012-10-02 | 2014-04-09 | 德州仪器公司 | 使用下游相关进行调试跟踪流盖时间戳 |
CN105159195A (zh) * | 2015-08-28 | 2015-12-16 | 中广核工程有限公司 | 冗余dcs系统及用于降低冗余dcs系统的核级cpu负荷的方法 |
CN105159195B (zh) * | 2015-08-28 | 2018-09-07 | 中广核工程有限公司 | 冗余dcs系统及用于降低冗余dcs系统的核级cpu负荷的方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2010079894A (ja) | 2010-04-08 |
US20100083237A1 (en) | 2010-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101714098A (zh) | 通过修改跟踪操作减少跟踪开销 | |
US7240343B2 (en) | System and method for handling an exception in a program | |
US7784039B2 (en) | Compiler, compilation method, and compilation program | |
US20020059567A1 (en) | Programmable controller, and control-program-development supporting apparatus | |
US20130318504A1 (en) | Execution Breakpoints in an Integrated Development Environment for Debugging Dataflow Progrrams | |
JPH11212797A (ja) | プログラム変換方法、プログラム変換装置及びプログラム変換プログラムを記憶した記憶媒体 | |
WO2002010909A2 (en) | Methods and apparatus for compiling computer programs using partial function inlining | |
Tokumoto et al. | MuVM: Higher order mutation analysis virtual machine for C | |
CN101980546B (zh) | 智能网平台、业务执行方法和分析业务异常的方法 | |
CN112882718A (zh) | 编译处理方法、装置、设备及存储介质 | |
CN115269393A (zh) | 一种基于硬件的程序动态函数调用序列追踪方法和装置 | |
Binkley et al. | Observation-based slicing | |
US6983457B2 (en) | Compile method for storing source code within object code | |
CN111813672A (zh) | 一种针对多种处理器架构的非侵入式覆盖率统计方法 | |
Bandyopadhyay et al. | Translation validation for PRES+ models of parallel behaviours via an FSMD equivalence checker | |
JP2001166948A (ja) | プログラム変換方法、プログラム変換装置及びプログラム変換プログラムを記憶した記憶媒体 | |
Benveniste et al. | The SIGNAL declarative synchronous language: controller synthesis and systems/architecture design | |
JP2005071135A (ja) | 変数の統計処理を行うコンパイル処理プログラム、およびその記録媒体、およびその処理方法ならびにその処理装置 | |
US8370797B2 (en) | Data processing apparatus, method therefor, and computer program | |
CN113535545A (zh) | 一种用于程序动态分析的二进制插桩方法 | |
US6968523B2 (en) | Design method of logic circuit using data flow graph | |
CN112162932A (zh) | 一种基于线性规划预测的符号执行优化方法及装置 | |
JPH0887417A (ja) | コンパイラ装置 | |
JP3226172B2 (ja) | インライン展開システム | |
KR101442659B1 (ko) | 벌크 dml 처리가 가능한 psm 컴파일러 최적화 장치 및 방법 |
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: 20100526 |