CN100442245C - 用于分析运行时存储器访问错误的方法和系统 - Google Patents

用于分析运行时存储器访问错误的方法和系统 Download PDF

Info

Publication number
CN100442245C
CN100442245C CNB2006101470279A CN200610147027A CN100442245C CN 100442245 C CN100442245 C CN 100442245C CN B2006101470279 A CNB2006101470279 A CN B2006101470279A CN 200610147027 A CN200610147027 A CN 200610147027A CN 100442245 C CN100442245 C CN 100442245C
Authority
CN
China
Prior art keywords
memory access
access errors
runtime memory
computer program
user
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
CNB2006101470279A
Other languages
English (en)
Other versions
CN1991785A (zh
Inventor
T·沃拉
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1991785A publication Critical patent/CN1991785A/zh
Application granted granted Critical
Publication of CN100442245C publication Critical patent/CN100442245C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • 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/3624Software debugging by performing operations on the source code, e.g. via a compiler

Abstract

一种分析计算机程序中运行时存储器访问错误的方法,该方法可以包括利用运行时分析代码插装所述计算机程序并且检测已插装的计算机程序的运行时存储器访问错误。响应于检测所述运行时存储器访问错误,该方法还可以包括动态地设置监测点。

Description

用于分析运行时存储器访问错误的方法和系统
版权所有的资料中的权利保留
本发明文件公开的部分含有受版权保护的资料。当本专利文件或本专利公开出现于专利和商标局的专利案卷或记录中的时候,版权所有者不反对任何人对本专利文件或本专利公开的复制,然而在别的方面却保留无论何种权利的所有版权。
技术领域
本发明涉及软件开发,并且更具体地,涉及计算机程序的运行时存储器分析。
背景技术
许多现代程序设计语言不支持防止运行时存储器访问错误的程序设计结构。运行时存储器访问错误可以包括、但不限于从未初始化的存储器读取或写入、超出所定义的数组的范围读取或写入、存储器泄漏、空闲存储器访问等。不支持防止这样的动作的构造的现代程序设计语言的一个例子是C或C++程序设计语言。当编译以C或C++编写的程序时,通常未检测到诸如以上所指出的运行时存储器访问错误。
举例来说,在C/C++内,开发者可能定义特定大小的数组并且然后访问超过该数组大小的元素。考虑图1中所示的代码实例。如所示出的,对a[21]的访问针对的不是由程序所分配的存储器部分,并且因此可能是堆(heap)上未分配的存储器或者是由另一段程序所分配的存储器。这样的动作是非法的,但却通常未被常规的C/C++编译器检测到。
然而,一些运行时分析工具,例如那些利用目标代码插入(OCI)技术的工具,可以检测这些类别的错误。OCI是在计算机程序的目标文件内插入校验指令的技术。具有这种插入其中的校验指令的程序被称作插装程序(instrumented program)。校验指令实现各种有关存储器使用的监控和/或跟踪功能。可以在访问(reference)存储器的程序指令之间插入校验指令,即监控读取和写入操作以及存储器分配和解除分配。
扩展与运行时存储器访问错误的检测有关的运行时分析工具的功能会是有益的。
发明内容
本文所公开的实施例提供了与计算机程序的运行时存储器分析有关的方法和制品(article of manufacture)。本发明的一个实施例可以包括分析计算机程序中运行时存储器访问错误方法。所述方法可以包括利用运行时分析代码插装(instrument)计算机程序并且检测已插装的计算机程序的运行时存储器访问错误。响应于检测运行时存储器访问错误,所述方法还可以包括动态地设置监测点,其中,所述监测点指的是能够指出指定的数据或存储器部分何时改变的监控程序或函数。
本发明的另一实施例可以包括分析计算机程序中运行时存储器访问错误的方法,所述方法包括检测所述计算机程序中的运行时存储器访问错误、为运行时存储器访问错误确定上下文信息,并且将上下文信息与用户规定的属性进行比较。如果上下文信息与用户指定的属性匹配,则可以为所述计算机程序自动地设置监测点,其中,所述监测点指的是能够指出指定的数据或存储器部分何时改变的监控程序或函数。
本发明的另一实施例可以包括分析计算机程序中运行时存储器访问错误的系统,所述系统包括用于利用运行时分析代码插装所述计算机程序的装置,用于检测所述已插装的计算机程序的运行时存储器访问错误的装置,以及响应于检测所述运行时存储器访问错误,用于动态地设置监测点的装置,其中,所述监测点指的是能够指出指定的数据或存储器部分何时改变的监控程序或函数。
本发明的另一实施例可以包括分析计算机程序中运行时存储器访问错误的系统,所述系统包括用于检测计算机程序中的运行时存储器访问错误的装置,用于为所述运行时存储器访问错误确定上下文信息的装置,用于将所述上下文信息与用户指定的属性进行比较的装置,以及当所述上下文信息与用户指定的属性匹配的时候,用于为所述计算机程序动态地设置监测点的装置,其中,所述监测点指的是能够指出指定的数据或存储器部分何时改变的监控程序或函数。而本发明的另一实施例可以包括机器可读存储器,所述机器可读存储器上具有存储于其上的多个使得该机器执行本文所公开的各种步骤和/或功能的代码区段。
附图说明
附图中示出了目前优选的实施例;然而,应当理解到本发明不限于所示出的明确的装置和手段。
图1描述了对理解本文所公开的实施例有用的示范性源代码。
图2是对理解本文所公开的实施例有用的示范性源代码。
图3是关于根据图2所描述的错误由运行时分析工具所产生的示例输出。
图4是描述依照本发明的一个实施例的运行时存储器分析方法的流程图。
具体实施方式
尽管本说明书以规定了被认为是新颖的本发明的特征的权利要求作为结论,但是可以认为考虑根据结合附图的描述将更好地理解本发明。如所需的,本文公开了本发明的具体实施例;然而,应当认识到,所公开的实施例仅是本发明的示范,其可以以各种形式实施。因此,不认为本文所公开的特定结构的和功能的细节是限制,而仅认为是用于权利要求的基本原理以及用于教导本领域的技术人员以实际上任何适当的具体结构来多样地使用本发明装置的代表性基本原理。此外,本文所使用的术语和惯用语并不打算限制而仅是提供本发明的可理解的描述。
本文所公开的实施例提供了用于在计算机程序中动态地设置监测点的技术。依照本文所公开的发明装置,用户或开发者可以设立各种条件。如果条件满足,就可以动态地创建监测点。此外,当满足设立的条件并且创建了监测点时就可以自动地执行一个或多个程序动作。
使用软件分析工具可以实现本文所描述的各种功能。例如,在一个实施例中,可以将本文所描述的各种功能实现为Rational PurifyPlus系列软件分析工具的一个或多个成员的扩展,其中来自纽约阿蒙克(Armonk)的国际商业机器公司(IBM)的Rational PurifyPlus系列软件分析工具是商业上可用的。PurifyPlus是为软件开发者和测试者提供运行时分析功能的计算机程序系列。一般而言,运行时分析指的是使用在执行处于测试中的程序期间所收集的数据来理解应用行为的实践。使用PurifyPlus可以分析的各种开发活动可以包括、但不限于本机C/C++应用中的存储器损坏检测和存储器剖析(memory profiling)、Java和NET管理代码应用中的存储器剖析、识别慢的或无效的代码部分的性能剖析、代码覆盖分析以及运行时跟踪。
本文所公开的产品意图提供用于教导本领域的技术人员更好地理解本文所公开的发明装置的基本原理。然而,应当认识到,本发明可以实现为独立的应用、更大的应用的一部分或者以实际上任何适当的具体结构、计算机程序和/或其部分来实现。
图2是对理解本文所公开的实施例有用的示范性源代码。使用本文所描述的运行时分析工具来执行图2中所描述的程序会导致第10行所报告的“空闲存储器读”(FMR)错误的检测。FMR类型的运行时存储器访问错误指的是数组在被访问之前已经被释放的情形。
图3是关于根据图2所描述的错误由运行时分析工具所产生的示例输出。在所提供的关于运行时存储器访问错误的上下文信息的不同项目中,该输出指出了堆栈跟踪信息。堆栈跟踪信息指出使用对源于“calloc”内的“malloc”的调用来分配存储块,其中从“main”调用“calloc”,而从“_start”调用“main”。
依照本发明的一个实施例,该上下文信息可以用于动态地创建和/或设置监测点。更具体地,该上下文信息可以与用户规定的信息,即指令的一个或多个属性进行比较。用户指定的属性指出动态地创建监测点的环境。如果上下文信息与用户指定的属性匹配,那么可以自动地设置监测点。按照可能由属性所指定的,可以执行另外的一个或多个程序动作。
监测点指的是能够指出指定的数据或存储器部分何时改变的监控程序或函数。例如,Purify中的监测点是通过监控程序执行时其进行加载和存储的地址来实现的。Purify可以报告有关读取、写入、分配、释放、进入函数入口范围以及离开函数出口范围的每次存储器访问的准确原因和结果。
在本发明的一个实施例中,用户指定的属性可以包括于运行时分析工具的配置文件内。例如,关于Purify,指令可以包括于指出特定环境的配置文件内,在该特定环境下监测点被自动地创建或者视具体情况而被调用。
这样的指令的例子可以是watch_on_error<error type><stack trace><re-start flag>。当在Purify的情况下将该指令放入配置文件中的时候,该指令引起针对由该指令的参数所指出的环境而设置或调用监测点。<errortype>属性指定了会引起调用监测点功能的特定类型的存储器访问错误。对于该属性来说可以指定的可能的运行时存储器访问错误可以包括、但不限于空闲存储器读错误、空闲存储器写错误、存储器泄漏错误、未初始化存储器读错误、数组边界读错误、数组边界写错误等。提供不同类型的运行时存储器访问错误的清单只是为了说明。同样地,本文所公开的实施例并不打算受限于所提供的实例。应当认识到,OCI工具能够识别的任何类型的运行时存储器访问错误都可以用作error type属性的可能值。
指令中的下一属性,<stack trace>属性可以指定为了调用监测点而要从运行时存储器访问错误检测的堆栈跟踪信息。例如,指令的堆栈跟踪信息可以指出下次检测对malloc的调用,其中从calloc调用malloc,从main调用calloc,从_start调用main,假定该指令的其他条件也满足,则自动地设置监测点。<re-start flag>属性指定了当调用监测点时是否要重新启动处于测试中的程序。在另一实施例中,可以提供另外的属性,其指出当设置监测点时是否要在调试器以及要使用的特定调试器中重新启动程序。
因此,当检测到运行时存储器访问错误的时候,可以将从运行时分析工具收集的信息,即根据图3所描述的上下文信息,与配置文件中所包括的用户指定的指令进行比较。如果检测到的运行时存储器访问错误的上下文信息与指令的属性匹配,则可以自动地创建对应于匹配指令的监测点。至于Purify运行时分析工具,视具体情况而定,可以将指定了从上下文信息或指令所提取的属性的指示插入到指示文件(directive file)。如所指出的,处于测试中的程序依照指令属性所指定的可选地可以随或不随调试器重新启动。
图4是说明依照本发明的一个实施例的运行时存储器分析方法400的流程图。例如,方法400可以开始于这样的状态,即在该状态下已将本文所讨论的各种指令中的一个或多个插入到诸如Purify的运行时分析工具的配置文件。如所指出的,指令的属性可以指定将要调用或设置监测点功能的环境。
因此,方法400可从步骤402开始,在步骤402中读取来自配置文件的指令。在步骤405中,基于OCI的运行时分析工具可以利用运行时存储器分析函数插装计算机程序。例如,Purify插装程序以自动地将每个存储器访问截取为其动态错误检测的一部分。可以将对运行时例程的一个或多个调用插入到程序,所述对运行时例程的一个或多个调用是运行时分析函数库部分,而不是处于测试中的程序的原始部分。可以在程序内包括、但不限于函数入口和/或出口点的位置插入这些函数以监控本文所描述的各种类型的存储器访问。在步骤410中,运行时分析工具可以读取来自指示文件的任何指示,所述指示文件已由于处于测试中的计算机程序的一次或多次先前的运行而被启用。可以利用已标识的指示实现存储器访问监控。
在步骤415中,可以执行插装程序。在步骤420中,可以进行关于是否遇到停止条件的确定。例如,程序可以自然地终止、遇到致命的故障或断点等。如果没有遇到停止条件,则该方法可以前进到步骤425。在步骤425中,可以进行关于是否遇到运行时存储器访问错误的确定。如果没有,则该方法可以返回到步骤415继续执行。如果检测到运行时存储器访问错误,则该方法可以前进到步骤430。
在步骤430中,可以通过OCI工具来收集上下文信息。例如,可以确定诸如引起运行时存储器访问错误的功能和/或模块的信息以及被访问的特定的存储器地址。还可以识别堆栈跟踪信息以及检测的存储器访问错误的类型,所述堆栈跟踪信息指定了通向造成运行时存储器访问错误的函数的调用链。
在步骤435中,可以进行关于检测到的运行时存储器访问错误是否与配置文件中所指定的一个或多个指令的属性一致的确定。例如,可以在步骤430中所收集的上下文信息和用户指定指令的一个或多个用户指定的属性之间进行比较。可以在检测到的运行时存储器访问错误的类型和指令中所指定的类型之间、在对引起运行时存储器访问错误有责任的函数和指令中所指定的函数之间、和/或在检测到的堆栈跟踪信息或调用链和指令中所指定的堆栈跟踪信息或调用链之间进行比较。如果检测到的运行时存储器访问错误与配置文件中的指令之一所指定的属性一致或匹配,则该方法可以前进到步骤440。如果不一致或不匹配,则该方法可以返回到步骤415继续执行。
应当认识到,可以从指令中省略本文所讨论的有关指示的一个或多个属性或者将其指定为通配符。例如,开发者可以省略对引起运行时存储器访问错误有责任的函数或者将属性指定为通配符。无论哪种情况,指令都指出有责任的函数与是否触发监测点无关。如果满足其他参数,则会动态地设置监测点而不考虑引起运行时存储器访问错误的特定函数。例如,得到的监测点会监控特定类型的存储器访问错误而不考虑触发错误的函数。类似地,运行时存储器访问错误的类型可以被忽略或被指定为通配符。在这种情况下,例如,可以识别如指令所指定的特定函数和/或调用链所触发的任何类别的运行时存储器访问错误,从而实现配置的监测点监控所指出的函数的访问。
总之,在步骤440中,可以动态地设置或创建监测点。可以将指定了用户指令的参数、并且因此指定了上下文信息的指示插入到指示文件。例如,如果指令是“watch_on_error FMM foo;*1”,则该指令指定如果在名为“foo”的函数中检测出空闲存储器失配(FMM)错误,则应当动态地设置监测点。通配符“*”指出可以从任何地方调用函数“foo”。属性“1”指示将使用可以由开发者在其它地方指定的特定调试器来重新启动程序。得到的可以被插入到指示文件的监测点命令或指示可以采取purify_watch_n(<address-of-array>,<size-of-array>,“rw”)的形式,该形式告诉运行时分析工具在用于任何的读、写和/或自由访问的地址监视存储器。
因此,在步骤445中,可以自动地执行指令中指定的一个或多个程序动作。例如,如果指令中指定了的话则可以自动地重新启动程序。另外,如果指令这样指出了,则可以在用户指定的调试器内重新启动程序。也就是说,可以自动地运行调试器并且可以自动地加载和执行程序。
当程序重新启动的时候,最近创建的监测点成为有效的并且监控对目标存储器位置的和/或通过目标函数的存储器访问。可以为进一步的分析收集并且存储运行时存储器访问信息和/或以别的方式使其对于用户可用。
本文所公开的方法描述了本发明的一个实施例,并且同样地,其不打算以任何的方式来限制本发明。本发明的其它实施例,如可以由本领域的技术人员所设想的也在本发明的范围之内。作为一个例子,诸如多线程、面向对象的程序设计等程序设计习惯的应用可能导致不同的步骤以不同于所提供的次序而被并发地执行,或者以一些其它的方式而被改变。然而,这样的差异并不背离本发明的精神。
可以以硬件、软件或者硬件和软件的结合来实现本发明。可以在一个计算机系统中以集中式的方式或者在不同的元件分散于几个互连的计算机系统的情况下以分布式的方式来实现本发明。适于实现本文所描述的方法的任何类型的计算机系统或其它的装置都是适合的。硬件和软件的典型的结合可以是具有计算机程序的通用计算机系统,当加载和执行该计算机程序的时候,其控制计算机系统从而使得该计算机系统实现本文所描述的方法。还可以将本发明嵌入到计算机程序产品中,其包括能实现本文所描述的方法的全部特征,并且当加载到计算机系统的时候其能够实现这些方法。
在当前上下文中,术语“计算机程序”、“软件”、“应用”、其变型和/或组合,表示这样一组指令以任何语言、代码或符号的任何表达,即该组指令想要使得具有信息处理能力的系统直接地或者在下述其一或二者之后执行特定的功能:a)转换成另一种语言、代码或符号;b)以不同材料的形式再现。例如,计算机程序可以包括、但不限于子例程、函数、过程、对象方法、对象实现、可执行应用、小应用程序、小服务程序、源代码、目标代码、共享库/动态负载库和/或设计用于在计算机系统上执行的其它指令序列。
术语“一”和“一个”,如本文所使用的,被定义为一个或多于一个。术语“多个”,如本文所使用的,被定义为两个或多于两个。术语“另一个”,如本文所使用的,被定义为至少第二个或更多。术语“包含”和/或“具有”,如本文所使用的,被定义为包括(即开放语言)。术语“连接”,如本文所使用的,尽管不一定直接连接,也不一定机械连接,但仍被定义为连接,即通过通信通道或路径或另一组件或系统进行通信链接。
可以以其它的形式实施本发明而不背离本发明的精神或实质属性。因此,当指出本发明的范围的时候,应当参考下面的权利要求,而不是前述的说明书。

Claims (26)

1.一种分析计算机程序中运行时存储器访问错误的方法,所述方法包括:
利用运行时分析代码插装所述计算机程序;
检测所述已插装的计算机程序的运行时存储器访问错误;以及
响应于检测所述运行时存储器访问错误,动态地设置监测点,其中,所述监测点指的是能够指出指定的数据或存储器部分何时改变的监控程序或函数。
2.根据权利要求1的方法,所述检测步骤进一步包括:
为所述运行时存储器访问错误确定上下文信息;以及
将所述上下文信息与用户指定的属性进行比较。
3.根据权利要求2的方法,所述动态地设置步骤进一步包括至少部分地根据所述比较步骤选择性地设置所述监测点。
4.根据权利要求2的方法,其中,所述上下文信息包括一类检测到的运行时存储器访问错误并且所述属性包括用户指定类型的运行时存储器访问错误,所述比较步骤进一步包括将检测到的运行时存储器访问错误的类型与用户指定的运行时存储器访问错误的类型进行比较。
5.根据权利要求2的方法,其中,所述上下文信息包括用于检测到的运行时存储器访问错误的堆栈跟踪信息并且所述属性包括用户指定的堆栈跟踪信息,所述比较步骤进一步包括将用于检测到的运行时存储器访问错误的堆栈跟踪信息与用户指定的堆栈跟踪信息进行比较。
6.根据权利要求1的方法,其进一步包括选择性地重新启动具有被启用的监测点的已插装的计算机程序。
7.根据权利要求1的方法,其进一步包括利用调试器来选择性地重新启动具有被启用的监测点的已插装的计算机程序。
8.一种分析计算机程序中运行时存储器访问错误的方法,所述方法包括:
检测计算机程序中的运行时存储器访问错误;
为所述运行时存储器访问错误确定上下文信息;
将所述上下文信息与用户指定的属性进行比较;以及
如果所述上下文信息与用户指定的属性匹配,则为所述计算机程序动态地设置监测点,其中,所述监测点指的是能够指出指定的数据或存储器部分何时改变的监控程序或函数。
9.根据权利要求8的方法,其中,所述上下文信息包括一类检测到的运行时存储器访问错误并且所述属性指定了用户指定类型的运行时存储器访问错误,所述比较步骤进一步包括将检测到的运行时存储器访问错误的类型与用户指定的运行时存储器访问错误的类型进行比较。
10.根据权利要求8的方法,其中,所述上下文信息包括用于检测到的运行时存储器访问错误的堆栈跟踪信息并且所述属性指定了用户指定的堆栈跟踪信息,所述比较步骤进一步包括将用于所述检测到的运行时存储器访问错误的堆栈跟踪信息与所述用户指定的堆栈跟踪信息进行比较。
11.根据权利要求8的方法,其进一步包括选择性地重新启动具有被启用的监测点的已插装的计算机程序。
12.根据权利要求8的方法,其进一步包括利用调试器来选择性地重新启动具有被启用的监测点的已插装的计算机程序。
13.根据权利要求8的方法,其进一步包括利用运行时分析代码插装所述计算机程序。
14.一种分析计算机程序中运行时存储器访问错误的系统,所述系统包括:
用于利用运行时分析代码插装所述计算机程序的装置;
用于检测所述已插装的计算机程序的运行时存储器访问错误的装置;以及
响应于检测所述运行时存储器访问错误,用于动态地设置监测点的装置,其中,所述监测点指的是能够指出指定的数据或存储器部分何时改变的监控程序或函数。
15.根据权利要求14的系统,所述用于检测的装置进一步包括:
用于为所述运行时存储器访问错误确定上下文信息的装置;以及
用于将所述上下文信息与用户指定的属性进行比较的装置。
16.根据权利要求15的系统,所述用于动态地设置监测点的装置进一步包括用于至少部分地根据所述比较结果选择性地设置所述监测点的装置。
17.根据权利要求15的系统,其中,所述上下文信息包括一类检测到的运行时存储器访问错误并且所述属性包括用户指定类型的运行时存储器访问错误,所述用于比较的装置进一步包括用于将检测到的运行时存储器访问错误的类型与用户指定的运行时存储器访问错误的类型进行比较的装置。
18.根据权利要求15的系统,其中,所述上下文信息包括用于检测到的运行时存储器访问错误的堆栈跟踪信息并且所述属性包括用户指定的堆栈跟踪信息,所述用于比较的装置进一步包括用于将用于检测到的运行时存储器访问错误的堆栈跟踪信息与用户指定的堆栈跟踪信息进行比较的装置。
19.根据权利要求14的系统,其进一步包括用于选择性地重新启动具有被启用的监测点的已插装的计算机程序的装置。
20.根据权利要求14的系统,其进一步包括用于利用调试器来选择性地重新启动具有被启用的监测点的已插装的计算机程序的装置。
21.一种分析计算机程序中运行时存储器访问错误的系统,所述系统包括:
用于检测计算机程序中的运行时存储器访问错误的装置;
用于为所述运行时存储器访问错误确定上下文信息的装置;
用于将所述上下文信息与用户指定的属性进行比较的装置;以及
当所述上下文信息与用户指定的属性匹配的时候,用于为所述计算机程序动态地设置监测点的装置,其中,所述监测点指的是能够指出指定的数据或存储器部分何时改变的监控程序或函数。
22.根据权利要求21的系统,其中,所述上下文信息包括一类检测到的运行时存储器访问错误并且所述属性指定了用户指定类型的运行时存储器访问错误,所述用于比较的装置进一步包括用于将检测到的运行时存储器访问错误的类型与用户指定的运行时存储器访问错误的类型进行比较的装置。
23.根据权利要求21的系统,其中,所述上下文信息包括用于检测到的运行时存储器访问错误的堆栈跟踪信息并且所述属性指定了用户指定的堆栈跟踪信息,所述用于比较的装置进一步包括用于将用于所述检测到的运行时存储器访问错误的堆栈跟踪信息与所述用户指定的堆栈跟踪信息进行比较的装置。
24.根据权利要求21的系统,其进一步包括用于选择性地重新启动具有被启用的监测点的已插装的计算机程序的装置。
25.根据权利要求21的系统,其进一步包括用于利用调试器来选择性地重新启动具有被启用的监测点的已插装的计算机程序的装置。
26.根据权利要求21的系统,其进一步包括用于利用运行时分析代码插装所述计算机程序的装置。
CNB2006101470279A 2005-12-27 2006-11-13 用于分析运行时存储器访问错误的方法和系统 Expired - Fee Related CN100442245C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/306,391 2005-12-27
US11/306,391 US7774761B2 (en) 2005-12-27 2005-12-27 Use of memory watch points and a debugger to improve analysis of runtime memory access errors

Publications (2)

Publication Number Publication Date
CN1991785A CN1991785A (zh) 2007-07-04
CN100442245C true CN100442245C (zh) 2008-12-10

Family

ID=38195389

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101470279A Expired - Fee Related CN100442245C (zh) 2005-12-27 2006-11-13 用于分析运行时存储器访问错误的方法和系统

Country Status (2)

Country Link
US (1) US7774761B2 (zh)
CN (1) CN100442245C (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7831882B2 (en) 2005-06-03 2010-11-09 Rambus Inc. Memory system with error detection and retry modes of operation
US9459960B2 (en) 2005-06-03 2016-10-04 Rambus Inc. Controller device for use with electrically erasable programmable memory chip with error detection and retry modes of operation
US7562285B2 (en) 2006-01-11 2009-07-14 Rambus Inc. Unidirectional error code transfer for a bidirectional data link
US20070271495A1 (en) * 2006-05-18 2007-11-22 Ian Shaeffer System to detect and identify errors in control information, read data and/or write data
US8352805B2 (en) 2006-05-18 2013-01-08 Rambus Inc. Memory error detection
US8291379B2 (en) * 2006-12-13 2012-10-16 International Business Machines Corporation Runtime analysis of a computer program to identify improper memory accesses that cause further problems
US20080148102A1 (en) * 2006-12-15 2008-06-19 International Business Machines Corporation Method for enhancing debugging of runtime memory access errors by using an integrated visualization tool and a runtime memory error detection tool
US9495278B2 (en) * 2006-12-27 2016-11-15 International Business Machines Corporation Dynamic discovery of data segments within instrumented code
CN101398781B (zh) * 2007-09-30 2010-11-10 英业达股份有限公司 一种快速诊断系统软件缺陷的系统及方法
US20120151450A1 (en) * 2010-12-09 2012-06-14 Microsoft Corporation Platform-Agnostic Diagnostic Data Collection and Display
RU2458386C1 (ru) * 2011-04-07 2012-08-10 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Способ определения ошибочного использования памяти
US10025693B2 (en) 2011-10-31 2018-07-17 International Business Machines Corporation Pseudo hardware watch points for remote debugging of non-initialized processors
US9720668B2 (en) 2012-02-29 2017-08-01 Red Hat, Inc. Creating and maintaining multi-tenant applications in a platform-as-a-service (PaaS) environment of a cloud computing system
US9058198B2 (en) 2012-02-29 2015-06-16 Red Hat Inc. System resource sharing in a multi-tenant platform-as-a-service environment in a cloud computing system
US9047107B2 (en) 2012-02-29 2015-06-02 Red Hat, Inc. Applying a custom security type label to multi-tenant applications of a node in a platform-as-a-service environment
US9038128B2 (en) 2012-02-29 2015-05-19 Red Hat, Inc. Applying security category labels to multi-tenant applications of a node in a platform-as-a-service environment
US10176239B2 (en) * 2012-04-24 2019-01-08 International Business Machines Corporation Automation-assisted curation of technical support information
US10365953B2 (en) 2012-05-01 2019-07-30 Red Hat, Inc. Tracking and utilizing facts about a node of a multi-tenant cloud hosting environment
US9665411B2 (en) 2012-05-01 2017-05-30 Red Hat, Inc. Communication between a server orchestration system and a messaging system
US9245111B2 (en) 2012-05-01 2016-01-26 Red Hat, Inc. Owner command execution in a multi-tenant cloud hosting environment
US9317325B2 (en) * 2012-05-01 2016-04-19 Red Hat, Inc. Application idling in a multi-tenant cloud-based application hosting environment
US9842002B2 (en) 2012-05-01 2017-12-12 Red Hat, Inc. Node selection for a new application in a multi-tenant cloud hosting environment
US8850514B2 (en) 2012-05-01 2014-09-30 Red Hat, Inc. Cartridges in a multi-tenant platforms-as-a-service (PaaS) system implemented in a cloud computing environment
US8978035B2 (en) 2012-09-06 2015-03-10 Red Hat, Inc. Scaling of application resources in a multi-tenant platform-as-a-service environment in a cloud computing system
CN103455364B (zh) * 2013-09-05 2016-08-17 北京航空航天大学 一种多核环境并行程序Cache性能在线获取系统及方法
WO2019190866A1 (en) 2018-03-26 2019-10-03 Rambus Inc. Command/address channel error detection
US11599403B2 (en) * 2018-10-03 2023-03-07 SK Hynix Inc. Logging mechanism for memory system
CN109510873A (zh) * 2018-11-29 2019-03-22 江苏徐工信息技术股份有限公司 一种bug实时监控沟通系统及方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758061A (en) * 1995-12-15 1998-05-26 Plum; Thomas S. Computer software testing method and apparatus
CN1188933A (zh) * 1998-02-06 1998-07-29 深圳市华为技术有限公司 程序设计中内存操作错误的识别方法
US5905855A (en) * 1997-02-28 1999-05-18 Transmeta Corporation Method and apparatus for correcting errors in computer systems
CN1243580A (zh) * 1997-01-15 2000-02-02 西门子公司 监控软件程序按规定执行的方法
CN1540517A (zh) * 2003-04-21 2004-10-27 微软公司 Just-My-Code调试技术

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5193180A (en) 1991-06-21 1993-03-09 Pure Software Inc. System for modifying relocatable object code files to monitor accesses to dynamically allocated memory
US6105148A (en) 1995-06-16 2000-08-15 Lucent Technologies Inc. Persistent state checkpoint and restoration systems
US5842019A (en) 1996-09-13 1998-11-24 Parasoft Corporation Method and system for dynamically detecting leaked memory space in a computer program
US5987626A (en) * 1997-08-25 1999-11-16 Cray Research, Inc. Precise detection of errors using hardware watchpoint mechanism
US6311327B1 (en) * 1998-03-02 2001-10-30 Applied Microsystems Corp. Method and apparatus for analyzing software in a language-independent manner
US6351845B1 (en) 1999-02-04 2002-02-26 Sun Microsystems, Inc. Methods, apparatus, and articles of manufacture for analyzing memory use
US6634020B1 (en) 2000-03-24 2003-10-14 International Business Machines Corporation Uninitialized memory watch
US6658653B1 (en) 2000-06-08 2003-12-02 International Business Machines Corporation Debugging methods for heap misuse
US20040015876A1 (en) 2001-05-24 2004-01-22 Applin John R. Method and structure of implementing a safe pointer
US6892378B2 (en) 2001-09-17 2005-05-10 Hewlett-Packard Development Company, L.P. Method to detect unbounded growth of linked lists in a running application
US7395458B2 (en) * 2004-05-21 2008-07-01 Bea Systems, Inc. Diagnostic instrumentation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758061A (en) * 1995-12-15 1998-05-26 Plum; Thomas S. Computer software testing method and apparatus
CN1243580A (zh) * 1997-01-15 2000-02-02 西门子公司 监控软件程序按规定执行的方法
US5905855A (en) * 1997-02-28 1999-05-18 Transmeta Corporation Method and apparatus for correcting errors in computer systems
CN1188933A (zh) * 1998-02-06 1998-07-29 深圳市华为技术有限公司 程序设计中内存操作错误的识别方法
CN1540517A (zh) * 2003-04-21 2004-10-27 微软公司 Just-My-Code调试技术

Also Published As

Publication number Publication date
CN1991785A (zh) 2007-07-04
US7774761B2 (en) 2010-08-10
US20070150872A1 (en) 2007-06-28

Similar Documents

Publication Publication Date Title
CN100442245C (zh) 用于分析运行时存储器访问错误的方法和系统
US7316005B2 (en) Data race detection using sequential program analysis
US6634020B1 (en) Uninitialized memory watch
US8091075B2 (en) Method and apparatus for breakpoint analysis of computer programming code using unexpected code path conditions
US7644394B2 (en) Object-oriented creation breakpoints
US5490249A (en) Automated testing system
US8762971B2 (en) Servicing a production program in an integrated development environment
CN100440163C (zh) 对计算机程序进行运行时分析的方法和系统
US8418149B2 (en) Differential comparison system and method
US10241894B2 (en) Data-scoped dynamic data race detection
US7900198B2 (en) Method and system for parameter profile compiling
US9183114B2 (en) Error detection on the stack
US20130318504A1 (en) Execution Breakpoints in an Integrated Development Environment for Debugging Dataflow Progrrams
US20050071813A1 (en) Program analysis tool presenting object containment and temporal flow information
CN111756575A (zh) 存储服务器的性能分析方法及装置、电子设备
US10255158B2 (en) Monitoring and diagnostics of business transaction failures
US20100275185A1 (en) System and Method for High Performance Coverage Analysis
US20140298302A1 (en) Method and system for detecting memory leaks in a program
CN100388234C (zh) 一种基于有限状态机的对内存变量改写进行监控的方法
CN104252402A (zh) 一种程序调试方法及装置
US20170075789A1 (en) Method and apparatus for generating, capturing, storing, and loading debug information for failed tests scripts
US20070283330A1 (en) Method and System for Performing Thread-Specific Display of Breakpoints
US7657792B2 (en) Identifying race conditions involving asynchronous memory updates
CN105117332A (zh) 一种栈溢出位置的检测方法
US20130152053A1 (en) Computer memory access monitoring and error checking

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20081210

Termination date: 20151113

EXPY Termination of patent right or utility model