CN104145249B - 用于调试计算机程序的方法和系统 - Google Patents

用于调试计算机程序的方法和系统 Download PDF

Info

Publication number
CN104145249B
CN104145249B CN201280070982.0A CN201280070982A CN104145249B CN 104145249 B CN104145249 B CN 104145249B CN 201280070982 A CN201280070982 A CN 201280070982A CN 104145249 B CN104145249 B CN 104145249B
Authority
CN
China
Prior art keywords
track
character string
substring
unusual
computer
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.)
Expired - Fee Related
Application number
CN201280070982.0A
Other languages
English (en)
Other versions
CN104145249A (zh
Inventor
亚历山德鲁·吉卡
拉兹万·约内斯库
拉杜-维克托·萨尔马沙格
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NXP USA Inc
Original Assignee
Freescale Semiconductor Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Freescale Semiconductor Inc filed Critical Freescale Semiconductor Inc
Publication of CN104145249A publication Critical patent/CN104145249A/zh
Application granted granted Critical
Publication of CN104145249B publication Critical patent/CN104145249B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0775Content or structure details of the error report, e.g. specific table structure, specific error fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

提出了一种用于调试计算机程序的方法。所述方法包括:在计算机(2.1)上运行至少一部分所述计算机程序,从而促使所述计算机执行指令序列(ABDACDABCD)并生成与所述执行的指令序列相对应的轨迹(ABDACDABCD);以及当所述程序已经生成了异常时,基于所述轨迹选择一组一个或多个异常字符串(BD,AC,BC,ABD,BDA,DAC,ACD,DAB,ABC,BCD),使得每个所述异常字符串是所述轨迹(2.2)的独特子串;以及向用户或调试工具(2.3)指示所述异常字符串。所述一组异常字符串尤其可包括所述轨迹的最终最短独特子串(BC)。也描述了计算机程序产品。

Description

用于调试计算机程序的方法和系统
技术领域
本发明涉及一种用于调试计算机程序的方法并且涉及计算机程序产品。
背景技术
程序测试和误差消除几乎是任何计算机程序开发期间的重要部分。程序开发者通常在计算机上运行程序并且分析计算机的输出以验证程序是否按照我们期望的进行,并识别可能出现的错误(漏洞)。然后程序员可修改程序以便移除此类漏洞。这被称为调试。
各种调试工具是本领域已知的。调试工具或调试器是被设计成帮助程序员发现计算机程序中的漏洞的硬件或软件设备。例如,调试器可使程序员能够在计算机程序的运行期间监视变量的值。而且,调试器可指示程序源代码中的指令,其中异常在程序的运行期间发生。异常可指示、代表、或可以是不期望在正常执行期间发生的任何类型的错误。异常可包括,例如,诸如除以0的禁止数学运算、诸如堆栈溢出错误的内存错误和分段故障。
大多数调试程序的最常用方法涉及分析运行程序时由计算机所生成的轨迹。轨迹可被定义为在执行程序期间积累的数据的任何集合。轨迹可例如包括在程序流不同阶段的变量的值。替代地或另外,轨迹可指示在程序流期间执行的指令的名称。这样的指令可以在轨迹中指示不同程度的精确度。例如,如果程序已经以一种模块化的方式被写入,涉及诸如函数或子例程的模块,程序可例如被设计成仅仅写出更高级别模块的名称,但不写出包含在高级别模块中或由其调用的更低级别模块的名称。例如,当子例程被处理器调用的时候,程序可被配置成使得子例程A的名称被添加到轨迹,而当子例程B被执行为子例程A的一部分的时候,包含在子例程A中的子例程B的名称不被添加到轨迹。替代地,计算机可被配置成使得属于不同模块化级别的模块的名称在轨迹中被说明。通过分析轨迹,当程序在计算机上被执行的时候,程序员可重建发生的程序流。
发明内容
正如所附权利要求中所描述的,本发明提供了一种用于调试计算机程序的方法和计算机程序产品。
本发明的具体实施例在从属权利要求中被陈述。
根据下文中描述的实施例,本发明的这些或其它方面将会很明显并且被阐述。
附图说明
根据附图,仅仅通过举例的方式,本发明的进一步细节、方面和实施例将被描述。在附图中,相似的参考符号被用于表示相同或功能相似的元素。为了简便以及清晰,附图中的元素不一定按比例绘制。
图1示意性地示出了计算机程序的实施例的例子的图表。
图2示出了用于调试计算机程序的方法的例子的流程图。
图3示意性地表示时间顺序的例子,其中可以按该顺序分析给定字符串。
图4示意性地示出了计算机程序产品的实施例的例子。
具体实施方式
由于本发明说明的实施例可以大部分是通过使用本领域所属技术人员所熟知的电子元素和电路被实施,所以不会在比上述所说明的认为有必要的程度大的任何程度上解释细节。对本发明基本概念的理解以及认识是为了不混淆或偏离本发明所教之内容。
图1的图表图示了计算机程序的例子。在该例子中,计算机程序包括指令A、B、C和D。通常,计算机程序当然可包括很多指令。指令可以是基本指令或是包括几个或甚至非常大量的基本指令的更复杂的指令。基本指令可例如是可以由处理器在单一时钟周期内执行的指令。图1所示的程序从指令A开始。然后,程序流继续指令B或指令C。例如,指令A可包括用于评估依赖一个多个变量的布尔函数的一个或多个指令。这样的变量可包括例如输入变量或位于存储器单元中的内部数据,或两者。例如,如果布尔函数的结果是“是”,则程序流可继续指令B,而如果布尔函数返回“否”,则程序流可继续指令C。从指令B,程序流可继续指令C或指令D。从指令D,程序流可返回到指令A。
因此,单一周期或程序的运行可由以下指令序列组成:ABD,ABCD和ACD。在该例子中,当程序在计算机上执行的时候,因此有三个不同指令序列可能出现。更复杂的程序可能涉及更大数目的不同可能的指令序列。
程序以及运行程序的计算机或两者可被配置成在计算机上运行程序的过程中生成轨迹。例如,轨迹功能可在其自身程序集成或例如借助于专门的轨迹单元在硬件中实施。例如,在软件或硬件或两者中实施的轨迹功能可被配置成使得当计算机开始执行程序中的指令的时候,指令标识符被添加到轨迹。因此,轨迹可反映了执行程序的各种指令的时间顺序。通常,指令标识符或文字可例如是字母数字常数和/或字符或分配给和/或被定义以表示特定指令的字符组合。该标识符可例如是在程序的源代码中被定义的指令的名称。该标识符可例如是函数名或子例程名。因此,图1所示的示例程序的运行可以产生例如以下轨迹:ABDACDABCD。该示例轨迹指示指令A、B、C和D以这个顺序,即ABDACDABCD被执行。该示例轨迹因此表示3个周期或循环,每个循环从相同的第一指令A开始。更具体地,在该例子中,第一、第二和第三周期分别包括序列ABD、ACD和ABCD。该程序的单一运行当然可涉及三个以上周期。
已发现异常,例如,溢出错误,常常可以归因于在这个意义上的指令的特定序列,该特定序列产生了异常,而其它序列不产生异常。例如,仍考虑图1的流程图,程序可包含漏洞,只有当计算机执行指令序列ABCD的时候,该漏洞导致异常,而序列ABD和ACD不导致异常。换句话说,在该例子中,该漏洞可归因于序列ABCD。
更详细地考虑示例序列ABCD,可进一步观察到它包含在不产生异常之前执行的指令和指令序列。在当前例子中,序列ABCD包含在没有生成异常之前执行的以下序列:AB和CD。事实上,序列AB和CD在最终序列ABCD之前出现在轨迹中。在当前例子中,因此,专注于序列BC以试图找到程序中的错误是合法的。
然而,已经发现错误很可能起因于多种因素的组合,不仅涉及子序列,例如,组合BC,而且,例如,整个序列ABCD或甚至更早的指令。例如,它可能证明只有上面指出的序列ABDACDABCD产生了异常,而序列ABCD当被只执行一次或多次不产生异常。然而,已经发现包含在轨迹中的最短独特子序列很可能是异常生成的原因。还已经发现,在轨迹中的最终最短独特子序列很可能是原因,因为引起异常的错误更可能是在指令序列末端附近的指令,即,在异常发生之前不久被执行的指令。例如,上面介绍的轨迹包含以下最短独特子序列:BD、AC和BC。在这些子序列中,BC是最后或最终的一个,因此,相比于BD和AC,BC有助于异常的概率可能更高。
在当前描述中,子序列被理解为由第二序列的连续元素形成的第一序列,中的元素出现在相同的顺序在第二序列构成的第一序列。这个定义与子序列的通常数学定义的不同之处在于它需要子序列的元素是第二序列的连续元素。因此,这里定义的子序列就是通常被称为的子串。为了避免与子序列的通常数学概念的任何可能混淆,词语“子串”将在下面被使用。序列也可被称为字符串。而且,指令或指令标识符可被称为文字。例如,指令A、B、C和D的序列ABCD相当于文字A、B、C和D的字符串ABCD。而且,不一定进行指令的执行序列和反映了指令的序列的对应轨迹之间的区分,因为指令的执行序列和对应的轨迹之间有一对一的关系。通常,序列、子序列、字符串或子串可被认为是代表了一个或多个执行指令,其可由文字和/或指令标识符表示和/或根据它们的执行顺序和/或时间顺序排列。可认为序列、子序列、字符串或子串代表了轨迹或执行计算机程序的轨迹的至少一部分。特别是,轨迹可由序列或文字字符串或指令标识符来表示。
现在参照图2,图2描述了一种用于调试计算机程序的方法。该方法可以包括在计算机上,即通过能够执行包含在计算机程序中的指令的装置,运行至少部分计算机程序(框2.1),确定一组一个或多个异常字符串(框2.2)以及向用户或调试工具指示该异常字符串(框2.3)。通过运行至少部分计算机程序(框2.1),计算机可被提示执行指令序列并生成与执行的指令序列相对应的轨迹。该轨迹可以是文字的字符串,每个文字对应于这些指令中的一个。每个文字可例如由单个字符、一连串字符或字母数字常数提供。注意,轨迹可以是更大轨迹的一部分或当运行程序或部分程序时由计算机产生的其它输出数据的一部分。
当程序已经生成异常,一组一个或多个异常字符串可由计算机基于轨迹来确定,其中每个异常字符串是轨迹的独特子串。
在该背景下,独特子串是轨迹的子串,其只有一次出现在轨迹中。例如,示例轨迹ABDACDABCD包含以下独特子串:BD、AC、BC并且轨迹的所有子串包括这些最短独特子串的至少一个。注意,具有独特子串的字符串也是独特的。除了其本身没有包含独特字符串的独特子串被称为最短独特子串,或者等同地,被称为基本独特子串。基本独特子串因此是基本的,在某种意义上,它的真正子串不是独特的。给定字符串的真正子串是比给定字符串本身更短的那个字符串的子串。
然后,可以向用户或调试工具指示异常字符串。例如,可通过以人类可感知的形式在用户界面进行输出而向用户指示异常字符串。可例如通过将其作为调试工具能够接收并进一步处理的一种类型的信号传送它们而向调试工具指示该异常字符串。因此,用户或调试工具被提供有指示至少一个异常字符串的信息。每个异常字符串对应于执行的指令序列中的独特子串并且因此对应于程序中潜在错误源。因此,程序员能够特别关注实施了在异常字符串中出现的指令的他的源代码或硬件的部分,并且例如修改或调整源代码或硬件以避免异常发生或以特定应用程序能够接受的方式处理异常,诸如执行错误处理例程。
异常字符串尤其可被确定成使得异常字符串由轨迹中的最短独特子串组成。在参考图1在上面介绍的示例轨迹中,最短独特子串是BD、AC和BC。事实上,该轨迹的所有其它独特子串,例如,ACD,比这些最短独特子串更长。而且,该一组异常字符串可排除了不是最短独特子串的任何字符串。已经发现,仅向用户指示最短独特子串允许减小用户或调试工具必须处理的信息量并只给用户或调试工具提供有意义的信息。
该一组异常字符串尤其可被确定成使得异常字符串由轨迹的最终最短独特子串组成。轨迹的最终最短独特子串对应于指令的最后最短序列,其在异常之前被执行并且之前没有被执行。假定在轨迹的所有最短独特子串当中,最终最短独特子串是具有有助于或引起异常的最高概率可以被认为是合理的。因此,向用户或调试工具指示轨迹的最终最短独特子串可能特别有利。再次参考图1在上面介绍的示例轨迹,最终最短独特子串是字符串BC,对应于在指令C后的指令B。
轨迹可以是用于确定一个或多个异常字符串的唯一输入数据。然而,根据情况,可以考虑附加数据或信息。例如,可以基于到目前为止已经被考虑在内的轨迹,即导致了异常的程序运行的轨迹和异常不会发生的相同程序另一个运行的轨迹来确定一个或多个异常字符串。所述一组“可疑”子串可能因此而减少。更通常地,除了与异常相关联的轨迹,可通过考虑一个或多个安全字符串来确定所述一组异常字符串。在该背景下的安全字符串是与指令序列相对应的指令标识符序列,其中所述指令序列在该指令序列不产生异常的意义上被假定是安全的。换句话说,可基于轨迹以及基于一个或多个附加字符串来确定所述一组一个或多个异常字符串,使得没有异常字符串是任何一个附加字符串的子串。每个附加字符串可以是安全字符串,或被引入以从所述一组异常字符串排除特定字符串的某个其它字符串。
如果所述一组异常字符串包含一个以上的异常字符串,则可向用户或调试工具指示异常字符串在轨迹中出现的顺序。例如,再次考虑参照图1介绍的示例轨迹ABDACDABCD,最短独特子串BD、AC和BC可被确定为异常字符串并以该顺序指示,使得用户或调试工具将了解BC是最终的,因此是最短独特子串BD、AC和BC当中的最可疑的一个。通常,可例如通过根据它们在轨迹中出现的顺序对异常字符串编号来明确地指示顺序或者通过以它们在轨迹中出现的顺序指示它们而隐含地指示顺序。例如,异常字符串可以以顺序列表的形式被呈现。
对于每个异常字符串或至少对于一些异常字符串,上下文字符串可被确定并且因此所确定的上下文字符串可被指示给用户或调试工具。在这方面,异常字符串的上下文字符串是轨迹的真子串并且包含相应异常字符串作为真子串。换句话说,相应异常字符串是其关联上下文字符串的真子串,并且关联上下文字符串是轨迹的真子串。由此定义的上下文字符串连同包含在其中的相应异常字符串可被呈现给用户或调试工具。例如,上下文字符串可被定义为连同一个或多个前面的文字和一个或多个后续文字的异常字符串。上下文字符串可例如在屏幕或监视器或其它类型的显示器上被指示,其中异常字符串包含在与剩余上下文字符串不同格式化的特定上下文字符串中。例如,每个上下文字符串可被呈现为由在第一颜色中格式化的第一链组成的字符链,接着是异常字符串在第二颜色中格式化,接着是终端部分在第一颜色中格式化。例如,轨迹ABDACDABCD的最终最短独特子串BC可连同异常字符串BC前面的文字和异常字符串BC之后的文字D被指示。在该例子中,上下文字符串是ABCD。A和D可被格式化为例如黑色,而异常字符串BD被显示为红色。因此,使得程序员能够看到在哪个上下文中异常字符串出现在轨迹中。
正如参考图1在上面提到的,程序可以是重复的。在这种情况下-但不一定局限于这种情况-轨迹可包括一连串一个或多个主要子串。每个主要子串可从初始文字开始,该初始文字对于所有主要子串都是相同的,并且只在相应主要子串的开始出现在每个主要子串中。例如,轨迹ABDACDABCD是一连串以下主要子串:ABD、ACD和ABCD,其中每个主要子串从相同初始文字A开始,其中A只在相应主要子串的开始出现在每个主要子串中。然后可选择所述一个或多个异常字符串,使得每个异常字符串是一个主要子串的子串。换句话说,可从所述一组异常字符串排除延伸过不止一个主要子串的任何字符串。所述一组异常字符串和用于识别所述异常字符串的计算量因而可以被减小。初始文字可以例如识别程序内的循环中的初始指令。
可例如通过将轨迹的一个或多个候选字符串与轨迹的一个或多个其它子串进行比较以确定相应的候选字符串是否是独特的来确定所述一组一个或多个异常字符串。例如,为了确定BC在轨迹ABDACDABCD中是否是独特的,BC可与该轨迹的所有其它子串进行比较。如果BC与其他子串中的一个相匹配(这不是本实例的情况),则BC不是独特的;否则,BC是独特的。此过程可能涉及相当大的计算量。这种计算量可能会增加N2,其中N是轨迹中文字的总数。参考图3在下面描述一种用于确定一组一个或多个异常字符串的系统化方法的例子。
图3示意性地图示了时间顺序的例子,其中给定字符串,例如轨迹的各个子串可被检查以查明他们是否是独特的(即,只有一次被包含在字符串中)。在该示例中,将要被分析的轨迹是由字符串S(1,6)表示的。轨迹的子串表示S(I,J),其中S(I,J)被定义为从第I个文字开始并结束于字符串S(1,6)的第J个文字的子串。在该图中,每个子串由一条水平线表示。子串的每个文字由一条长度为1的水平线表示。因此,表示子串的水平线是由表示相应的子串中的文字的水平单元行组成。
各个子串可以列表符号(I,J)所指示的顺序以及以表示时间流的向下箭头被检查。因此,该过程可能从字符串S(1,6),即,完整的轨迹开始,并终止于子串S(1,1),其中该子串S由轨迹S(1,6)的第一文字组成。所指示的顺序被选择,使得轨迹的子串不是必须被测试独特性。在所示的示例中,这可以是通过检查轨迹的给定子串,例如,字符串S(4,4)来实现的,只要包括了在当前例子中作为子串的所关注的给定字符串S(4,4)的每个子串是独特的。例如,在所示的例子中,仅在确定了每个下面的字符串S(3,4)、S(2,4)、S(1,4)、S(4,5)、S(3,5)等等是独特的之后,可针对独特性测试字符串S(4,4)。
在一些情况下,从被检查独特性的该一组子串中排除轨迹的一些子串可能是有利的。所述一组子串还可被称为所述一组候选字符串,其中在所述一组子串当中选择异常字符串。换句话说,所述一组一个或多个异常字符串是所述一组一个或多个候选字符串的子集。所述一组候选字符串可包括轨迹的所有子串,但这不是必然的情况。以一种顺序检查候选字符串可以是有利的,使得任何给定候选字符串S(I,J)只在字符串S(I-K,J+L)之后出现,其中K和L是非负整数,其中K+1大于或等于1。换句话说,所有候选字符串在给定字符串S(I,J)之前出现,其中候选字符串包括作为子串的给定字符串S(I,J)。
这种顺序可例如根据在J上从初始值JMAX下至最终值JMIN的外部循环和在I上从初始值IMIN上至J的内部循环定义的。例如,IMIN=1,JMIN=1,JMAX=N,其中N是轨迹的长度。通过在每个周期减少J来执行外部循环意味着是从末尾而不是从开头搜索该轨迹。该顺序确保了异常字符串可以以它们在轨迹中出现的相反顺序被发现,使得轨迹末尾附近的异常字符串可以在轨迹开头附近异常字符串之前被发现。特别是,轨迹的最终最短独特字符串因此可以被首先发现。已经发现,轨迹的最终最短独特子串可以是特别有希望的候选以包含引起异常的错误。而且,这允许在发现轨迹的最终最短独特子串之后立即终止搜索。在后一种情况下,所述一组异常字符串将只包含轨迹的最终最短独特子串。
图4示意性地示出了计算机程序产品的实施例的例子。该产品可包括短暂的或非短暂的存储介质4.1,其中可执行指令4.2用于指令计算机(未示出)执行参考图1、图2和图3如上所述的调试方法。存储介质4.1还可携带要被调试的计算机程序(未示出)。用于实现调试方法的调试指令可被集成在计算机程序中。替代地,计算机程序和调试指令可以是单独程序。这些单独程序可在相同存储介质或在单独存储介质上被提供。
本发明可以因此在用于在计算机系统上运行的计算机程序中被实现,至少包括用于当在可编程的装置上运行或使得可编程的装置能够执行根据本发明的设备或系统的功能时,执行根据本发明的方法步骤的代码部分。在这方面,应当观察到,在上文中,术语“计算机”已被用于通常包括任何可编程的或不可编程的信息处理系统。不可编程的计算机的例子是能够执行程序的装置,其中该程序是在硬件中,诸如在逻辑电路中或永久附接到微处理器的不可修改的存储器中实施中。可编程信息处理系统可以例如是移动电话、嵌入式车载系统、通用计算机、网络服务器或其它可编程装置。
计算机程序是一系列指令,诸如特定应用和/或操作系统。计算机程序可以例如包括以下中的一个或多个:子例程、函数、程序、对象方法、对象实现、可执行的应用、小程序、小服务程序、源代码、对象代码、共享库/动态装载库和/或设计用于在计算机系统上的执行的其他指令序列。
计算机程序可以在计算机可读存储介质上被内部地存储或经由计算机可读传输介质传输到计算机系统。所有或者一些计算机程序可以被永久地、可移除地提供在计算机可读介质或远程地耦合到信息处理系统。计算机可读介质可以包括,例如但不限于任何数目的以下:包括磁盘和磁带存储介质的磁存储介质;光学存储介质,诸如光盘介质(例如,CD-ROM、CD-R等等)以及数字视盘存储介质;非易失性存储器存储介质,包括基于半导体存储器单元,诸如闪存存储器、EEPROM、EPROM、ROM;铁磁数字存储器;MRAM;易失性存储介质,包括寄存器、缓冲器或缓存、主存储器、等等;以及数字传输介质,包括计算机网络、点对点通信设备、以及载波传输介质,仅举几例。计算机程序或可例如是集成开发循环境(IDE)(也被成为集成设计循环境、集成调试循环境或交互开发循环境),例如给计算机程序员提供综合设施以进行软件开发的软件应用程序。IDE可能例如包括一个或多个,例如包括了以下内容的所有组:源代码编辑程序、编译程序和/或注释器、构建自动化工具、调试器。
计算机处理通常地包括执行(运行)程序或程序的一部分,当前的程序值和状态信息,以及通过操作系统用于管理处理的执行的资源。操作系统(OS)是管理计算机的资源共享以及提供给程序员用于访问那些资源的接口的软件。操作系统处理系统数据和用户输入,以及通过分配和管理任务以及内部系统资源作为系统对用户和程序的一项服务来作出响应。
计算机系统可以例如包括至少一个处理单元、关联存储器和大量的输入/输出(I/O)设备。当执行计算机程序时,计算机系统根据计算机程序处理信息并且经由I/O设备产生所得到的输出信息。
在前面的说明中,参照本发明实施例的特定示例已经对本发明进行了描述。然而,将明显的是,在不脱离如所附权利要求中所阐述的本发明的更宽范围的情况下,可做出各种修改和变化,本发明的更宽范围因此并不限于具体示例。
此外,本领域所属技术人员将认识到以上描述的操作之间的界限只是说明性的。多个操作可以组合成单一的操作,单一的操作可以分布在附加操作中并且可以至少部分地在时间上重叠地执行操作。而且,替代实施例可以包括特定操作的多个示例,并且操作的顺序在各种其他实施例中可以更改。
然而,其它修改、变化和替代也是可能的。说明书和附图相应地被认为是从说明性的而不是严格意义上来讲的。例如,执行计算机程序的计算机可是以包括了多个组件的系统,诸如微处理器或执行计算机程序的其它逻辑电路、存储器或以其它方式,并且所述方法不需要由计算机的单一组件来执行。例如,微处理器或其它逻辑电路可执行计算机程序,而另一个组件监视该执行并生成轨迹以及执行选择。
在权利要求中,放置在括号之间的任何参考符号不得被解释为限制权利要求。单词“包括”不排除除了权利要求中列出的那些之外的其它元件或步骤的存在。此外,如在此使用的词语“一”或“一个”被定义为一个或不止一个。而且,即使当同一权利要求包括介绍性短语“一个或多个”或“至少一个”以及诸如“一”或“一个”的不定冠词时,在权利要求中诸如“至少一个”以及“一个或多个”的介绍性短语的使用也不应该被解释成暗示通过不定冠词“一”或“一个”引入的其它权利要求元素将包括这样介绍的权利要求元素的任何特定权利要求限制成仅包含这样的元素的发明。对于定冠词的使用也是如此。除非另有说明,使用诸如“第一”以及“第二”的术语来任意地区分这样的术语描述的元素。因此,这些术语不一定旨在指示这样的元素的时间或其它优先次序。在相互不同的权利要求中记载某些措施的事实并不指示这些措施的组合不能被用于获取优势。

Claims (12)

1.一种用于调试计算机程序的方法,包括:
在计算机(2.1)上运行至少一部分所述计算机程序,从而促使所述计算机执行指令序列并生成与所述执行的指令序列相对应的轨迹,所述轨迹是在执行所述计算机程序期间积累的数据的任何集合;以及
当所述程序已经生成了异常时,由所述计算机基于所述轨迹选择一组一个或多个异常字符串,使得每个所述异常字符串是所述轨迹的独特子串,所述独特子串是只有一次出现在所述轨迹中的所述轨迹的子串;以及
向用户或调试工具(2.3)指示所述异常字符串。
2.根据权利要求1所述的方法,其中所述一组异常字符串包括所述轨迹的一个或多个最短独特子串或所述轨迹的所有最短独特子串。
3.根据权利要求1所述的方法,其中所述一组异常字符串包括所述轨迹的最终最短独特子串。
4.根据权利要求1、2或3所述的方法,其中所述选择所述一组一个或多个异常字符串基于所述轨迹和基于一个或多个附加字符串被执行,使得没有所述异常字符串是所述附加字符串中的任何一个的子串。
5.根据权利要求1-3中的一项所述的方法,还包括:
指示所述异常字符串在所述轨迹中出现的顺序。
6.根据权利要求1-3中的一项所述的方法,还包括:
对于每个所述异常字符串,选择上下文字符串,使得相应的异常字符串是相应的上下文字符串的真子串并且所述上下文字符串是所述轨迹的真子串;以及
向所述用户或向所述调试工具指示所述上下文字符串。
7.根据权利要求1-3中的一项所述的方法,其中所述轨迹包括一连串一个或多个主要子串,每个所述主要子串从初始文字开始,所述初始文字对于所有所述主要子串是相同的并且仅在相应的主要子串的开始出现在每个所述主要子串中,其中每个所述一个或多个异常字符串是所述主要子串中的一个的子串。
8.根据权利要求7所述的方法,其中所述计算机程序包括循环并且所述初始文字识别了所述循环中的起始指令。
9.根据权利要求1-3中的一项所述的方法,其中所述选择所述异常字符串包括:
在一个或多个候选字符串当中选择所述异常字符串,其中通过对于每个所述候选字符串确定相应的候选字符串是否是独特子串,每个候选字符串是所述轨迹的子串。
10.根据权利要求9所述的方法,其中对于所述候选字符串以一种顺序连续地执行所述确定,使得在确定第二候选字符串是独特之后针对独特性检查是第二候选字符串的子串的任何第一候选字符串。
11.根据权利要求10所述的方法,其中所述候选字符串被表示为S(I,J),所述候选字符串S(I,J)从所述轨迹的第I个文字开始并且在第J个文字结束,其中所述顺序是由在J上从初始值JMAX下至最终值JMIN的外部循环和在I上从初始值IMIN上至J的内部循环定义的。
12.一种用于调试计算机程序的系统,包括:
用于在计算机(2.1)上运行至少一部分所述计算机程序从而促使所述计算机执行指令序列并生成与所述执行的指令序列相对应的轨迹的装置,所述轨迹是在执行所述计算机程序期间积累的数据的任何集合;以及
用于当所述程序已经生成了异常时由所述计算机基于所述轨迹选择一组一个或多个异常字符串、使得每个所述异常字符串是所述轨迹的独特子串的装置,所述独特子串是只有一次出现在所述轨迹中的所述轨迹的子串;以及
用于向用户或调试工具(2.3)指示所述异常字符串的装置。
CN201280070982.0A 2012-02-29 2012-02-29 用于调试计算机程序的方法和系统 Expired - Fee Related CN104145249B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2012/050948 WO2013128238A1 (en) 2012-02-29 2012-02-29 Debugging method and computer program product

Publications (2)

Publication Number Publication Date
CN104145249A CN104145249A (zh) 2014-11-12
CN104145249B true CN104145249B (zh) 2017-08-15

Family

ID=49081708

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280070982.0A Expired - Fee Related CN104145249B (zh) 2012-02-29 2012-02-29 用于调试计算机程序的方法和系统

Country Status (4)

Country Link
US (1) US9489284B2 (zh)
EP (1) EP2820547B1 (zh)
CN (1) CN104145249B (zh)
WO (1) WO2013128238A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6618304B2 (ja) * 2015-06-30 2019-12-11 キヤノン株式会社 乳房撮影装置
US9921946B2 (en) 2015-09-16 2018-03-20 Nxp Usa, Inc. Method and system to display and browse program trace using source code decoration
FR3073302A1 (fr) * 2017-11-08 2019-05-10 STMicroelectronics (Grand Ouest) SAS Procede et dispositif de surveillance d'au moins une activite d'un objet connecte

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101968767A (zh) * 2010-10-15 2011-02-09 北京数码大方科技有限公司 基于宏程序的代码调试及仿真的方法和装置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4005405A (en) 1975-05-07 1977-01-25 Data General Corporation Error detection and correction in data processing systems
JPH0795271B2 (ja) 1989-06-20 1995-10-11 富士通株式会社 分岐命令実行装置
US6230313B1 (en) * 1998-12-23 2001-05-08 Cray Inc. Parallelism performance analysis based on execution trace information
US6611924B1 (en) * 1999-07-16 2003-08-26 Lucent Technologies Inc. Reducing code size of debug output statements
JP3645452B2 (ja) * 1999-08-04 2005-05-11 株式会社東芝 プログラムデバッグ装置及びプログラムを記録した記録媒体
US8312435B2 (en) * 2000-12-26 2012-11-13 Identify Software Ltd. (IL) System and method for conditional tracing of computer programs
US6768991B2 (en) * 2001-05-15 2004-07-27 Networks Associates Technology, Inc. Searching for sequences of character data
US7257630B2 (en) * 2002-01-15 2007-08-14 Mcafee, Inc. System and method for network vulnerability detection and reporting
WO2003065173A2 (en) * 2002-02-01 2003-08-07 Fairweather John A system and method for managing knowledge
AU2002953555A0 (en) * 2002-12-23 2003-01-16 Canon Kabushiki Kaisha Method for presenting hierarchical data
US7916739B2 (en) * 2003-06-24 2011-03-29 Ntt Docomo, Inc. Location privacy for internet protocol networks using cryptographically protected prefixes
US7149735B2 (en) * 2003-06-24 2006-12-12 Microsoft Corporation String predicate selectivity estimation
US7404180B2 (en) * 2003-12-11 2008-07-22 Sap Ag Trace management in client-server applications
US7383540B2 (en) * 2003-12-12 2008-06-03 International Business Machines Corporation Altering execution flow of a computer program
US7478279B2 (en) 2005-06-23 2009-01-13 Cisco Technology, Inc. System and method for debugging an application
US7506217B2 (en) 2005-12-30 2009-03-17 Intel Corporation Apparatus and method for software-based control flow checking for soft error detection to improve microprocessor reliability
US7689610B2 (en) * 2006-12-01 2010-03-30 Computer Associates Think, Inc. Automated grouping of messages provided to an application using string similarity analysis
US7865778B2 (en) 2007-02-20 2011-01-04 International Business Machines Corporation Method and system for detecting synchronization errors in programs
US8122436B2 (en) * 2007-11-16 2012-02-21 Microsoft Corporation Privacy enhanced error reports
JP5167984B2 (ja) * 2008-06-26 2013-03-21 富士通株式会社 命令トレース生成プログラム、命令トレース生成装置および命令トレース生成方法
US20100125834A1 (en) * 2008-11-19 2010-05-20 Sap Ag Dynamic Tracing on Java Exceptions
US8595709B2 (en) * 2009-12-10 2013-11-26 Microsoft Corporation Building an application call graph from multiple sources
US20110314337A1 (en) * 2010-06-18 2011-12-22 International Business Machines Corporation Method and Apparatus for Locating Input-Model Faults Using Dynamic Tainting
US20150234730A1 (en) * 2014-02-18 2015-08-20 Zerodee, Inc. Systems and methods for performing software debugging

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101968767A (zh) * 2010-10-15 2011-02-09 北京数码大方科技有限公司 基于宏程序的代码调试及仿真的方法和装置

Also Published As

Publication number Publication date
EP2820547A1 (en) 2015-01-07
US9489284B2 (en) 2016-11-08
WO2013128238A1 (en) 2013-09-06
US20150026523A1 (en) 2015-01-22
EP2820547A4 (en) 2015-10-21
CN104145249A (zh) 2014-11-12
EP2820547B1 (en) 2019-04-17

Similar Documents

Publication Publication Date Title
Zhang et al. Which configuration option should I change?
US6941546B2 (en) Method and apparatus for testing a software component using an abstraction matrix
US9317401B2 (en) Prioritizing test cases using multiple variables
US8091075B2 (en) Method and apparatus for breakpoint analysis of computer programming code using unexpected code path conditions
US8627290B2 (en) Test case pattern matching
US8495581B2 (en) Code evaluation based on failure prediction
Wang et al. Automated path generation for software fault localization
US8448147B2 (en) Heterogenic Coverage Analysis
US9311077B2 (en) Identification of code changes using language syntax and changeset data
US20130179867A1 (en) Program Code Analysis System
CN103324568A (zh) 用于测试程序的方法和装置
CN104145249B (zh) 用于调试计算机程序的方法和系统
US11042466B2 (en) Exception prediction before an actual exception during debugging
US8661293B2 (en) Test architecture based on intelligent test sequence
CN117453437A (zh) 数据库语句处理方法、装置、计算机设备和存储介质
US10579761B1 (en) Method and system for reconstructing a graph presentation of a previously executed verification test
US6611924B1 (en) Reducing code size of debug output statements
Gaber Abd El-Wahab et al. Graph mining for software fault localization: An edge ranking based approach
CN112527265A (zh) 一种日志自动注入的方法和计算机设备
Rajarathinam et al. Test suite prioritisation using trace events technique
US20240045658A1 (en) Reducing code path permutations
Cheng et al. Revisiting Test-Case Prioritization on Long-Running Test Suites
Harrold et al. Fault Prediction, Localization, and Repair (Dagstuhl Seminar 13061)
Fei Practical runtime identification of program errors

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: Texas in the United States

Patentee after: NXP America Co Ltd

Address before: Texas in the United States

Patentee before: Fisical Semiconductor Inc.

CP01 Change in the name or title of a patent holder
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170815

Termination date: 20210228

CF01 Termination of patent right due to non-payment of annual fee