CN100481021C - 用于标识计算机程序的未响应部分的方法、系统和装置 - Google Patents

用于标识计算机程序的未响应部分的方法、系统和装置 Download PDF

Info

Publication number
CN100481021C
CN100481021C CNB2005100996579A CN200510099657A CN100481021C CN 100481021 C CN100481021 C CN 100481021C CN B2005100996579 A CNB2005100996579 A CN B2005100996579A CN 200510099657 A CN200510099657 A CN 200510099657A CN 100481021 C CN100481021 C CN 100481021C
Authority
CN
China
Prior art keywords
timer
computer program
response
execution
termination
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
CNB2005100996579A
Other languages
English (en)
Other versions
CN1755648A (zh
Inventor
B·E·康宁
C·C·怀特
T·S·库恩
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN1755648A publication Critical patent/CN1755648A/zh
Application granted granted Critical
Publication of CN100481021C publication Critical patent/CN100481021C/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/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/273Tester hardware, i.e. output processing circuits
    • G06F11/277Tester hardware, i.e. output processing circuits with comparison between actual response and known fault-free response
    • 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/0706Error 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 the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0748Error 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 the processing taking place on a specific hardware platform or in a specific software environment in a remote unit communicating with a single-box computer node experiencing an error/fault
    • 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/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • 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

Landscapes

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

Abstract

提供了用于标识计算机程序的不响应部分的一种方法、系统和装置。根据该方法,可潜在地导致不响应行为的程序代码被封装在计时器中。计时器在程序代码部分开始执行时就在背景线程上开启。该计时器设置为在指定阈值时间段期满后终止。确定计时器是否在程序代码部分的执行期间终止。如果计时器在程序代码部分的执行期间终止,中断执行并将程序代码部分标识为不响应,且系统状态信息被存储以在诊断计算机程序和纠正不响应行为时使用。实际存储的系统状态信息可由远程控制文件定义并可在计时器终止时或在其时间左右被存储。

Description

用于标识计算机程序的未响应部分的方法、系统和装置
背景技术
软件开发周期中最重要的阶段之一是在软件产品已运送给客户之后进行的调试阶段。因为软件产品用户的实际体验可在该阶段期间用来隔离程序错误、标识经常或不经常使用的特征、并使该软件产品更好并更稳定,所以该阶段是重要的。
发行后调试阶段中分析的主要焦点通常是标识最常发生的程序错误(也称为“缺陷”)。通过标识最常发生的缺陷并修复它们,可改进许多用户的使用体验。然而,还有通常是先前的发行后调试系统未解决的另一类分析。该类分析涉及标识计算机“暂停”(“hangs”)。暂停是软件停止响应用户输入并停止刷新屏幕的时间段。
尽管被暂停的计算机程序会继续执行,但程序通常对用户完全没有响应,因为未接收到输入也未更新显示屏。这对用户而言是非常令人沮丧的,因为用户并不清除程序是遇到了无法恢复的致命错误还是将完成处理并再次接收输入并更新显示屏。如果不响应阶段延长,则用户会相信计算机程序已遭遇了致命错误并选择中止该程序。以这样的方式中止暂停程序可导致数据丢失和系统状态不稳定。
如果可标识导致不响应行为的计算机程序部分,则可采取众多步骤的任一步骤来改进程序代码的响应。例如,可重新编写不响应部分来异步地或在背景处理线程上执行其处理。或者,如果不响应是由在程序的主消息环路上执行处理导致的,则可将该处理移出该消息环路。一旦已经标识导致不响应行为的计算机程序部分,可对该程序作其它类型的改变以改进计算机程序的响应性。因此,需要一种用于标识计算机程序的不响应部分的方法、系统和装置。还需要监视实际用户所遭遇的这种性能问题,并以不降级应用程序性能或用户体验的方式进行。
本发明的各个实施例就是基于这些和其它考虑而作出的。
发明内容
根据本发明一实施例,以上和其它问题通过用于标识计算机程序的不响应部分的方法和装置来解决。通过标识计算机程序的不响应部分可改变该程序,这些改变导致较少的不响应程序状态并因而增加客户对计算机程序的满意度。
根据本发明一方面,提供一种用于标识计算机程序不响应部分的方法。根据该方法,可能导致不响应行为的程序代码被封装在计时器中。特别地,计时器在程序代码部分执行之初就开启。该计时器设置为在指定阈值时间段期满后终止。当计时器在程序代码部分的执行期间终止时,执行由计时器调用的背景线程。
如果计时器在程序代码部分的执行期间终止,中断执行并收集有关该事件的数据。特别地,程序代码部分被标识为不响应,且系统状态信息被存储以在诊断计算机程序和纠正不响应行为时使用。为了捕捉计时器终止时而不是程序部分完成执行时的系统状态,可存储计时器终止时或终止左右时的系统状态信息。可不断收集少量数据,并可在特定性能问题需要进一步的调查时收集更多信息。
根据本发明一方面,可执行处理以确保计时器终止实际上是由要在阈值时间内完成执行的程序代码部分的失败导致的,而不是由另一原因导致。例如,如果程序代码部分从主存储器交换到备份存储器,则即使程序代码部分尚未执行到阈值时间段也可终止计时器。类似地,模式对话框的出现可导致代码部分不执行以及使计时器终止。为了防止这些情形导致计时器终止,确定实际花在执行计算机程序的时间量是否少于与计时器相关联的阈值。如果执行时间少于阈值,则可重新设置计时器的时间量等于计时器阈值减去实际花在执行程序代码部分的时间量。然后恢复程序代码部分的执行。
根据本发明其它方面,可用嵌套方式将计时器插入程序代码部分。这样,计时器可具有父或子计时器。为防止一个计时器的终止导致其父或子计时器的终止,在一实施例中,每个计时器可操作以在终止时通知其父或子计时器从而不造成该父或子计时器的伪终止。更具体地,子计时器可向父计时器通知子计时器所花的时间量,从而父计时器可从父计时器所化的时间总量中减去该时间。例如,如果父计时器具有花5秒进行处理的子计时器,且父计时器总共花了10秒,则将产生两个警报。一个警报在5秒时对子计时器产生。另一个警报将对父计时器产生,因为在减去子计时器所花时间之后父计时器仍然花了5秒。相反,如果父计时器总共仅花了5.5秒,则仅对子计时器而不对父计时器产生警报(假设一秒的计时器阈值)。
根据本发明另一实施例,可利用可操作来分配限量计时器的时间池。为了维护足够的性能水平,时间池可响应分配计时器的请求,并仅允许当计时器在池中存在时分配计时器。当已完成计时器的使用时,可将计时器返回到池中。
参阅以下详细描述和附图,表征本发明的这些和各个其它特征、以及优点将显而易见。
附图说明
图1是示出用来体现本发明各方面的计算机网络各方面的网络图;
图2是示出在本发明各实施例中使用并由其提供的计算机系统的计算机系统体系结构图;
图3是根据本发明各实施例示出用于将工作(assert)计时器添加到各个计算机程序部分的过程的程序代码框图;
图4和5是示出在本发明各实施例中使用并由其提供的用于标识计算机程序的不响应部分的过程的流程图。
具体实施方式
现在参看附图,其中相同标号表示相同元件,将描述本发明各方面。图1和相应讨论旨在提供一种本发明各实施例可在其中实现的适当计算环境的简要一般描述。尽管本发明将在结合运行于个人计算机操作系统上的应用程序执行的程序模块的一般上下文中进行说明,本领域技术人员将理解本发明也可结合其它类型的计算机系统和程序模块实现。
通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构、以及其它类型的结构。此外,本领域技术人员将理解本发明可在其它计算机系统配置中实践,包括手持式装置、多处理器系统、基于微处理器的或可编程的电器消费品、小型计算机、大型计算机等等。本发明还可在任务由经通信网络链接的远程处理装置执行的分布式计算环境中实践。在分布式计算环境中,程序模块可被置于本地和远程存储器存储设备中。现在参看附图,其中若干附图中相同标号表示相同元件,将描述本发明各方面和示例性操作环境。
图1示出用于本发明各实施例的说明性操作环境。如图1所示,客户计算机2在本发明各实施例中使用。客户计算机包括可用来执行一个或多个程序模块的标准桌面或服务器计算机。客户计算机2还可装备有用于监视在客户计算机2上执行的应用程序的性能以及用于确定应用程序的响应的程序模块。如在以下将要详细描述的,客户计算机2可操作以执行用于标识使应用程序变得不响应的应用程序代码部分的代码。不响应的计算机程序包括在执行处理时不接收用户输入或不更新显示屏的程序。
为了标识不响应的程序并纠正不响应行为,客户计算机2可与出错报告服务器(“ERS”)计算机10通过接口相连。出错报告服务器计算机10包括维护并通过LAN4或因特网8可访问的常规服务器计算机。ERS 10通常由应用程序软件的开发者操作来监视响应。客户计算机10可操作以在已标识包含不响应程序代码的程序时或在已遇到其它类型的出错条件时向ERS 10报告。通过报告给ERS 10的信息,开发者可更改程序代码以消除不响应程序状态或校正其它程序缺陷。已更改的程序代码可在下一次更新时传送给终端用户。
为帮助不响应程序代码的标识,客户计算机2可周期性地接收来自ERS 10的远程控制文件。远程控制文件包含定义应被记录的失败的条件的信息。特别地,远程控制文件可包括用于确定程序是否不响应的时间阈值。远程控制文件还可包含当程序的一部分被标识为不响应时是否应收集系统信息以及应收集的信息类型的信息。有关远程控制文件的内容和使用的其它细节将在下面提供。
现在参看图2,将描述用于客户计算机2的说明性计算机体系结构。图2中所示的计算机体系结构示出常规的台式或膝上型计算机,包括中央处理单元5(“CPU”)、包括随机存取存储器9(“RAM”)和只读存储器(“ROM”)11的系统存储器7、以及将存储器耦合到CPU 5的系统总线12。包含有助于如起动时在计算机元件间传送信息的基本例程的基本输入/输出系统(BIOS)存储在ROM 11中。计算机2还包括用于存储操作系统16、应用程序18和其它程序模块的大容量存储装置14,该大容量存储装置将在下面进行更详细的描述。
大容量存储装置14通过连接到总线12的大容量存储控制器(未示出)连接到CPU 5。大容量存储装置14及其相关联计算机可读介质提供计算机2的非易失性存储。尽管包含在此的计算机可读介质的描述指向诸如硬盘或CD-ROM的大容量存储装置,本领域技术人员应理解计算机可读介质可以是计算机2能访问的任何可用介质。
作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现、用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性介质、可移动和不可移动介质。计算机存储介质包括但不限于RAM、ROM、EPROM、EEPROM、闪存或其它固态存储器技术、CD-ROM、数字多功能盘(“DVD”)或其它光学存储技术、磁盒、磁带、磁盘存储器或其它磁性存储设备、或任何其它可用于存储所需信息并可由计算机2访问的介质。
根据本发明各实施例,计算机2可使用通过诸如因特网的网络8与远程计算机的逻辑连接在网络化环境中操作。客户计算机2可通过与总线12连接的网络接口单元20与网络8相连。应理解,网络接口单元20也可被用于与其它类型的网络和远程计算机系统相连。计算机2还可包括输入/输出控制器22,用于接收和处理来自包括键盘、鼠标或电子笔(未在图1中示出)的众多其它装置的输入。类似地,输入/输出控制器22可提供对显示屏、打印机、或其它类型输出装置的输出。
如上简述,众多程序模块和数据文件可被存储于计算机2的大容量存储装置14和RAM 9中,包括适于控制网络化个人计算机的操作系统16,诸如来自华盛顿州Redmond微软公司的Windows XP操作系统。大容量存储装置14和RAM 9还可存储一个或多个程序模块。特别地,大容量存储装置14和RAM 9可存储一个或多个应用程序18。大容量存储装置14和RAM 9还可存储应用程序性能监视器应用程序24。如在此更详细描述地,应用程序性能监视器24可操作来监视应用程序的操作并确定应用程序的各部分是否未响应。如果应用程序不响应,则应用程序性能监视器还可操作以存储用于诊断并纠正不响应行为的系统状态信息。系统状态信息可传送给ERS 10以由应用程序的开发者使用。
大容量存储装置14和RAM 9还可存储远程控制文件26。远程控制文件26的内容可周期性地更新并从ERS 10传送给客户计算机2。如上简述,远程控制文件可存储定义应记录失败的条件的数据,。特别地,远程控制文件可包括用于确定程序是否不响应的时间阈值。远程控制文件还可包含当程序的一部分被标识为不响应时是否应收集系统信息以及应收集的信息类型的信息。应理解,远程控制文件36可存储其它数据并可用来以其它方法控制客户计算机2的操作。有关远程控制文件的内容和使用的更多信息可在共同待批的申请号为10/304,282题为“Methodand System for Remotely Controlling the Reporting of Events Occurring withinComputer System”(“用于远程控制发生在计算机系统内的事件的报告的方法和系统”)的美国专利申请中找到。有关应用程序性能监视器24的操作的其它细节将参照图3-5在下面提供。
现在参看图3,将描述用于将工作计时器添加到各个计算机程序部分的过程的程序代码图。如图3所示,计算机程序部分40可包括各个程序代码部分。例如,如图3所示,该部分40由程序代码部分46A-46D组成。这些部分可包括各个例程、子例程、函数、线程、进程或程序代码的任意部分。
为了确定各个程序代码部分的响应,用于创建和撤消计时器(在此也称为“工作计时器”)被插入程序代码。例如,如图3所示,工作计时器构造函数48A已插入程序代码。构造函数48A创建并开启该计时器。如以下详细描述的,背景进程监视该计时器并确定与该计时器相关联的阈值时段是否已经到期。如果计时器在程序代码的执行到达与构造函数48A相关联的工作计时器析构函数50A之前到期,则背景线程将捕捉计时器的终止并可收集有助于确定程序代码为什么未在计时器终止之前完成的系统状态信息。如果程序代码的执行在计时器终止之前到达析构函数50A,则析构函数50A释放计时器。
如图3所示,计时器可用嵌套方式插入程序代码的一部分。例如,如图3所示,通过使用构造函数48A和析构函数50B可将第一计时器置于程序代码部分44周围。第二计时器通过使用构造函数48B和析构函数50A置于部分42周围。由于第一计时器完全包括第二计时器,所以第一计时器可视为第二计时器的“父”计时器。类似地,第二计时器可视为第一计时器的“子”计时器。如以下将要详细描述的,为了防止一个计时器的终止导致其父或子定时器的终止,每个计时器可操作以在它终止时通知其父或子定时器。终止的计时器可提供作为超过阈值的所花时间量的指示。然后获得通知的计时器可从其阈值中减去该时间量从而不造成父或子计时器终止的伪终止。
现在参看图4,将描述示出用于标识计算机程序的不响应部分而执行的过程的说明性例程400。当阅读在此呈现的对各例程的讨论时,应理解本发明的各个实施例的逻辑操作被实现为(1)在计算系统上运行的计算机实现动作或程序模块的一序列和/或(2)计算系统内的相互连接的机器逻辑电路或电路模块。实现是依赖于实现本发明的计算系统的性能要求的选择。因此,在图4-5中示出并组成在此所述的本发明各实施例的逻辑操作被分别称为操作、结构化装置、动作和模块。本领域技术人员将认识到,可用软件、固件、专用数字逻辑、及其任意组合实现这些操作、结构化装置、动作以及模块,而不背离如所述权利要求中陈述的本发明的精神和范围。
例程400从操作420开始,其中执行众多初始化步骤。特别地,在步骤422,创建一工作计时器背景线程。工作背景线程可操作以捕捉计时器的终止并响应于计时器的终止执行某些处理。因此,工作计时器背景线程在操作428初始化并从操作430开始等待。如果计时器终止,则工作计时器背景线程继续代操作432,其中处理计时器的终止。用于处理计时器的终止的说明性例程500将参照图5描述。从操作434,工作计时器背景线程移到操作434,其中等待循环结束。
工作计时器池也可在操作424初始化。工作计时器池28(“池”)包括被授权将有限数量的计时器30A-30H之一分配给调用对象的对象。如果在该池中有计时器可用,则它将被分配给调用对象。如果没有计时器可用,则不进行分配。通过仅分配有限数量的计时器,可降低并发分配大量计时器对性能的可能影响。应理解,可在构造计时器时从池中分配计时器,而在析构计时器时将其返回到该池中。
对其监测响应并已用计时器编码的程序的执行如操作402-418所示。特别地,在操作402,遇到并执行工作计时器的构造函数。为了配置该计时器,可传递若干参数。特别地,可传递唯一标识特定计时器的工作标记标识符。还可传递计时器类型参数,该参数确定对计时器进行的定时类型以及与其相关联的缺省阈值时间。特别地,可指定进程定时,其中时间相对进程执行时间。或者,可指定线程定时,其中时间相对调用线程的执行时间。
一旦已构建计时器,例程400继续到操作404,其中可对重新设置计时器方法作另一调用,以真正返回运行的工作计时器对象。运行的工作计时器对象可检查远程控制文件以确定是否应在操作436利用不同的阈值。在执行期间,如果在调用和处理析构函数之前已达阈值时间,则运行的工作计时器对象可操作以调用带有警报的工作计时器背景线程。该过程在操作440上示出。
一旦计时器从操作404上开始运行,例程400继续到操作406,其中执行要测试响应的程序代码部分。如果计时器在操作406处定时的代码部分的执行完成之前终止,则该计时器调用工作计时器背景线程,且发生如下参照图5所述的处理。否则,例程400继续到操作408,其中处理析构函数32。特别地,在操作408处计时器被释放回工作计时器池28。
从操作408,例程400继续到操作410,其中确定计时器是否已发出指示已达阈值时间的警报。如果已经发出警报,则例程400分支到操作416,其中使工作计时器进入调试模式。通常这仅对应用程序的开发者进行,从而他们可得到通知这种情况已发生。
如果在操作410确定未发出警报,则例程400继续到操作412,其中确定计时器是否已终止。如果计时器已终止,则例程400分支到操作418,其中例程结束且应用程序的执行继续。如果在操作412确定计时器已终止,则例程400继续到操作414,其中工作计时器的终止用以下参照图5所述的方式来处理。例如如果计时器已终止但背景线程还未有机会处理计时器的终止,这种情形会发生。这样,析构函数启动如下参照图5所述的用于处理已终止计时器的过程。从操作414,例程400继续到操作416,其中如上所述使工作计时器进入调试模式。然后例程400继续到操作418,其中它结束且应用程序的执行继续。
现在参看图5,将描述用于处理计时器的终止的说明性例程500。例程500在操作502开始,其中确定所监视的程序部分的实际执行时间是否确实小于与该计时器相关联的阈值。执行该计算是为了确保计时器的终止实际上是由要在阈值时间内完成执行的程序代码部分的失败引起的,而非另一原因所导致。例如,如果程序代码部分从主存储器交换到备份存储器,则即使程序代码部分并未执行到阈值时间段,计时器仍然可终止。类似地,模式对话框的出现可导致代码部分不执行且计时器终止。为了防止这些导致计时器终止的情形,在操作502确定实际花在执行计算机程序上的时间量小于与该计时器相关联的阈值。此外,可确定模式对话框是否已向用户显示并正在等待输入。如果模式对话框出现,可从执行时间中减去等待用户关闭该对话框的时间。这是因为这样的事实:尽管对话框并不妨碍代码的执行,但在显示对话框时应用程序在等待用户,且应略去等待用户的执行时间。
如果在操作502确定执行时间大于阈值,则例程500分支到操作504。在操作504,确定与计时器相关联的析构函数目前是否在执行。如果析构函数现在在执行,则例程500分支到操作520,其中将计时器返回到池28。如果析构函数不在执行,则例程500继续到操作506,其中计时器的阈值重新设置到一时间量,该时间量等于计时器的阈值减去实际执行程序代码部分所花的时间量。然后程序代码部分的执行在操作508处恢复。
如果在操作502确定执行时间小于阈值,则例程500分支到操作510,其中确定是否应收集存储器信息转储以帮助诊断导致不响应状态的程序代码。是否应收集信息转储以及(如果应收集的话)要收集的信息转储类型可在远程控制文件26中指定。例如,在许多情形中当计时器终止时仅需收集少量的信息,诸如事件的ID和非常基本的系统信息。这就使得能快速确定关于哪些事件正以高频度发生。当事件需要进一步的调查时,可将远程控制文件26的内容定义成导致要收集特定失败情形的全部存储器信息转储。这样,在轻量级和重量级报告之间切换就很容易了。还应理解,因为计时器在阈值到期之后立即终止,所以信息转储在终止时间时或左右时间收集,而不是在所监视的程序代码部分已完成其执行时。
如果不用收集信息转储,则例程500从操作512分支到操作514。如果要收集信息转储,则例程500继续到操作512,其中收集存储器信息转储。然后例程500继续到操作514,其中更新用来更新远程控制文件26的内容的信息。从操作514,例程继续到操作516,其中设置指示已经收集存储器信息转储的标记。
从操作516,例程500继续到操作518,其中以上述方式向已终止计时器的父和子计时器通知终止。然后例程继续到操作520,其中将计时器返回到工作计时器池28。然后例程500继续到操作522,其中例程结束。
基于前述内容,应理解本发明各个实施例包括用于标识计算机程序的不响应部分的方法、系统、装置和计算机可读介质。以上说明书、示例和数据提供了对本发明组成的制造和使用的完整描述。因为可作出本发明的许多实施例而不背离本发明的精神和范围,本发明驻留于所附权利要求中。

Claims (13)

1.一种用于标识计算机程序的不响应部分的方法,其特征在于,所述方法包括:
在开始执行所述计算机程序的一部分时开启计时器;
确定所述计时器是否在所述计算机程序的所述一部分的执行期间终止;
确定花在执行所述计算机程序的所述一部分的时间量是否少于与所述计时器相关联的阈值;
响应于确定执行所述计算机程序的所述一部分所花的时间量少于所述阈值,将所述计时器重新设置为在等于所述阈值减去花在执行所述计算机程序的所述一部分的时间量的时间到期之后终止;以及
响应于所述计时器在所述计算机程序的所述一部分的执行期间终止,将所述计算机程序的所述一部分标识为不响应,并存储系统状态信息以用于诊断所述计算机程序,
其中,所述系统状态信息在所述定时器终止时被存储。
2.如权利要求1所述的方法,其特征在于,所述计时器具有一个或多个父计时器,且其中所述方法还包括响应于确定所述计时器已在所述计算机程序的所述一部分的执行期间终止而向所述父计时器通知所述终止。
3.如权利要求2所述的方法,其特征在于,所述计时器具有一个或多个子计时器,且其中所述方法还包括响应于确定所述计时器已在所述计算机程序的所述一部分的执行期间终止而向所述子计时器通知所述终止。
4.如权利要求3所述的方法,其特征在于,还包括从被授权分配有限数目计时器的计时器池中获取所述计时器。
5.如权利要求1所述的方法,其特征在于,被存储的用于在诊断所述计算机程序中使用的系统状态信息基于远程控制文件的内容。
6.如权利要求5所述的方法,其特征在于,所述远程控制文件定义是否应执行最少的数据收集或全部的存储器信息转储。
7.一种用于标识计算机程序的不响应部分的方法,其特征在于,所述方法包括:
在要测试响应的所述计算机程序的一部分的前面插入工作计时器构造函数;
在要测试响应的所述计算机程序的所述一部分的后面插入工作计时器析构函数;
执行所述构造函数来获取一计时器;
实例化所述计时器;
开始执行要测试响应的所述计算机程序的所述一部分;
确定所述计时器是否在完成所述计算机程序的所述一部分的执行之前终止;
确定花在执行所述计算机程序的所述一部分的时间量是否少于与所述计时器相关联的阈值;
响应于确定执行所述计算机程序的所述一部分所花的时间量少于所述阈值,将所述计时器重新设置为在等于所述阈值减去花在执行所述计算机程序的所述一部分的时间量的时间到期之后终止;
执行所述析构函数来释放所述计时器;以及
响应于确定所述计时器在完成所述计算机程序的所述一部分的执行之前终止,将所述计算机程序的所述一部分标识为不响应,并存储在诊断所述计算机程序中使用的系统状态信息。
8.如权利要求7所述的方法,其特征在于,所述系统状态信息在所述定时器终止时被存储。
9.如权利要求7所述的方法,其特征在于,还包括响应于确定所述计时器未终止,执行所述析构函数来释放所述计时器并继续执行所述计算机程序。
10.如权利要求7所述的方法,其特征在于,还包括在执行所述构造函数获取计时器之前,初始化被授权分配有限数目的计时器的计时器池,并启动工作计时器线程,用于监视从所述池分配的计时器是否已终止并用来响应于确定计时器已终止而调用终止例程。
11.如权利要求10所述的方法,其特征在于,获取计时器包括从所述计时器池中获取一计时器。
12.如权利要求7所述的方法,其特征在于,所述计时器具有一个或多个父计时器,且其中所述方法还包括响应于确定所述计时器已在所述计算机程序的所述一部分的执行期间终止向所述父计时器通知所述终止。
13.如权利要求12所述的方法,其特征在于,所述计时器具有一个或多个子计时器,且其中所述方法还包括响应于确定所述计时器已在所述计算机程序的所述一部分的执行期间终止向所述子计时器通知所述终止。
CNB2005100996579A 2004-09-30 2005-08-30 用于标识计算机程序的未响应部分的方法、系统和装置 Expired - Fee Related CN100481021C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/955,365 2004-09-30
US10/955,365 US7383470B2 (en) 2004-09-30 2004-09-30 Method, system, and apparatus for identifying unresponsive portions of a computer program

Publications (2)

Publication Number Publication Date
CN1755648A CN1755648A (zh) 2006-04-05
CN100481021C true CN100481021C (zh) 2009-04-22

Family

ID=35840052

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100996579A Expired - Fee Related CN100481021C (zh) 2004-09-30 2005-08-30 用于标识计算机程序的未响应部分的方法、系统和装置

Country Status (5)

Country Link
US (1) US7383470B2 (zh)
EP (1) EP1650661A3 (zh)
JP (1) JP2006107430A (zh)
KR (1) KR20060046281A (zh)
CN (1) CN100481021C (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8842555B2 (en) 2005-10-21 2014-09-23 Qualcomm Incorporated Methods and systems for adaptive encoding of real-time information in packet-switched wireless communication systems
US7640412B2 (en) * 2007-01-04 2009-12-29 Hitachi Global Storage Technologies Netherlands, B.V. Techniques for improving the reliability of file systems
US7979674B2 (en) * 2007-05-16 2011-07-12 International Business Machines Corporation Re-executing launcher program upon termination of launched programs in MIMD mode booted SIMD partitions
US8015180B2 (en) * 2007-05-18 2011-09-06 Oracle International Corp. Queries with hard time constraints
US7814295B2 (en) * 2007-05-18 2010-10-12 International Business Machines Corporation Moving processing operations from one MIMD booted SIMD partition to another to enlarge a SIMD partition
US7953728B2 (en) * 2007-05-18 2011-05-31 Oracle International Corp. Queries with soft time constraints
US7831803B2 (en) * 2007-07-19 2010-11-09 International Business Machines Corporation Executing multiple instructions multiple date (‘MIMD’) programs on a single instruction multiple data (‘SIMD’) machine
US8166464B2 (en) * 2008-06-27 2012-04-24 Microsoft Corporation Analysis and detection of soft hang responsiveness program errors
JP5335552B2 (ja) * 2009-05-14 2013-11-06 キヤノン株式会社 情報処理装置、その制御方法、及びコンピュータプログラム
KR101674934B1 (ko) * 2009-07-07 2016-11-10 엘지전자 주식회사 오류 보고 방법 및 장치
WO2011161301A1 (en) 2010-06-24 2011-12-29 Valtion Teknillinen Tutkimuskeskus State inference in a heterogeneous system
US8639991B2 (en) * 2010-12-17 2014-01-28 Sap Ag Optimizing performance of an application
US8549360B2 (en) * 2011-01-07 2013-10-01 International Business Machines Corporation Early collection of diagnostic information
US9389936B2 (en) 2011-09-23 2016-07-12 Microsoft Technology Licensing, Llc. Monitoring the responsiveness of a user interface
KR101338150B1 (ko) * 2011-11-14 2013-12-06 (주)네오위즈게임즈 프로그램의 비정상적 종료에 대한 데이터 제공 및 수집 방법과 그 장치
CN103135518B (zh) * 2011-12-02 2019-11-12 费希尔控制国际公司 程序流控制监控例程、与之相关的方法以及系统
JP6035909B2 (ja) * 2012-06-29 2016-11-30 富士通株式会社 ストレージシステムおよびストレージシステムの制御方法
US9910684B2 (en) * 2013-03-25 2018-03-06 Hewlett Packard Enterprise Development Lp Extensible firmware abstraction
CN103150226A (zh) * 2013-04-01 2013-06-12 山东鲁能软件技术有限公司 计算机模型异常转储与恢复系统及其转储与恢复方法
US9703552B2 (en) 2014-12-18 2017-07-11 International Business Machines Corporation Assertions based on recently changed code
US9823904B2 (en) 2014-12-18 2017-11-21 International Business Machines Corporation Managed assertions in an integrated development environment
US9747082B2 (en) * 2014-12-18 2017-08-29 International Business Machines Corporation Optimizing program performance with assertion management
US9678855B2 (en) 2014-12-30 2017-06-13 International Business Machines Corporation Managing assertions while compiling and debugging source code
US10798146B2 (en) * 2015-07-01 2020-10-06 Oracle International Corporation System and method for universal timeout in a distributed computing environment
US10719427B1 (en) * 2017-05-04 2020-07-21 Amazon Technologies, Inc. Contributed test management in deployment pipelines
CN108363580A (zh) * 2018-03-12 2018-08-03 平安普惠企业管理有限公司 应用程序安装方法、装置、计算机设备和存储介质
US11138198B2 (en) * 2018-10-19 2021-10-05 Oracle International Corporation Handling of unresponsive read only instances in a reader farm system
CN115017004B (zh) * 2021-12-27 2023-07-07 荣耀终端有限公司 进程监控方法及电子设备

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58192152A (ja) * 1982-05-07 1983-11-09 Hitachi Ltd プロセスの終了監視方式
JPS6133552A (ja) * 1984-07-25 1986-02-17 Nec Corp 情報処理装置
JPH0271338A (ja) * 1988-09-07 1990-03-09 Nec Corp 情報処理装置
JPH0395634A (ja) * 1989-09-08 1991-04-22 Oki Electric Ind Co Ltd 計算機システム再起動制御方式
JPH03246638A (ja) * 1990-02-23 1991-11-05 Fujitsu Ltd プログラム暴走検出方式
US5341497A (en) * 1991-10-16 1994-08-23 Ohmeda Inc. Method and apparatus for a computer system to detect program faults and permit recovery from such faults
JPH05108418A (ja) * 1991-10-21 1993-04-30 Toshiba Corp プログラム異常検出方式
EP0613085B1 (en) * 1993-02-26 1999-06-09 Denso Corporation Multitask processing unit
US5485574A (en) * 1993-11-04 1996-01-16 Microsoft Corporation Operating system based performance monitoring of programs
US5590277A (en) * 1994-06-22 1996-12-31 Lucent Technologies Inc. Progressive retry method and apparatus for software failure recovery in multi-process message-passing applications
US6067412A (en) * 1995-08-17 2000-05-23 Microsoft Corporation Automatic bottleneck detection by means of workload reconstruction from performance measurements
JPH09212389A (ja) * 1996-01-31 1997-08-15 Sumitomo Electric Ind Ltd コンピュータシステムの異常状態検出方法および装置
US5812780A (en) * 1996-05-24 1998-09-22 Microsoft Corporation Method, system, and product for assessing a server application performance
JPH1063544A (ja) * 1996-08-20 1998-03-06 Toshiba Corp タイムアウト監視方式
US6016466A (en) 1996-08-27 2000-01-18 Compuware Corporation Accurate profile and timing information for multitasking systems
US6332212B1 (en) * 1997-10-02 2001-12-18 Ltx Corporation Capturing and displaying computer program execution timing
US6205561B1 (en) * 1997-12-11 2001-03-20 Microsoft Corporation Tracking and managing failure-susceptible operations in a computer system
US6425093B1 (en) * 1998-01-05 2002-07-23 Sophisticated Circuits, Inc. Methods and apparatuses for controlling the execution of software on a digital processing system
JP3897897B2 (ja) * 1998-03-20 2007-03-28 富士通株式会社 ネットワークコンピューティング環境におけるトラブルシューティング装置及びトラブルシューティング方法並びにトラブルシューティングプログラムを記録したコンピュータ読取可能な記録媒体
US6633908B1 (en) * 1998-05-20 2003-10-14 International Business Machines Corporation Enabling application response measurement
US7275246B1 (en) * 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US6467052B1 (en) * 1999-06-03 2002-10-15 Microsoft Corporation Method and apparatus for analyzing performance of data processing system
JP2001101033A (ja) * 1999-09-27 2001-04-13 Hitachi Ltd オペレーティングシステム及びアプリケーションプログラムの障害監視方法
US6665758B1 (en) * 1999-10-04 2003-12-16 Ncr Corporation Software sanity monitor
US6745383B1 (en) * 1999-12-29 2004-06-01 Veritas Operating Corporation Early warning mechanism for enhancing enterprise availability
US6618825B1 (en) * 2000-04-20 2003-09-09 Hewlett Packard Development Company, L.P. Hierarchy of fault isolation timers
US6754612B1 (en) * 2000-06-29 2004-06-22 Microsoft Corporation Performance markers to measure benchmark timing of a plurality of standard features in an application program
JP2002132541A (ja) * 2000-10-25 2002-05-10 Nippon Signal Co Ltd:The 演算処理装置
US6789046B1 (en) * 2000-12-05 2004-09-07 Microsoft Corporation Performance logging solution
JP2002215433A (ja) * 2001-01-19 2002-08-02 Mitsubishi Electric Corp メモリダンプ装置
US6961928B2 (en) * 2001-10-01 2005-11-01 International Business Machines Corporation Co-ordinate internal timers with debugger stoppage
AU2002351911A1 (en) * 2001-11-07 2003-05-19 Harald Kuck Providing isolation through process attachable virtual machines
US6892331B2 (en) * 2002-01-17 2005-05-10 International Business Machines Corporation Method and system for error detection in a managed application environment
US20030226062A1 (en) * 2002-06-03 2003-12-04 Gender Thomas K. System and method for testing response to asynchronous system errors
US20040040013A1 (en) * 2002-08-26 2004-02-26 Mohit Kalra Time-based breakpoints in debuggers
US7207043B2 (en) * 2002-12-31 2007-04-17 International Business Machines Corporation Programmatic response-time based workload distribution techniques
US7702957B2 (en) * 2004-05-21 2010-04-20 Bea Systems, Inc. Systems and methods for timer service

Also Published As

Publication number Publication date
US7383470B2 (en) 2008-06-03
KR20060046281A (ko) 2006-05-17
JP2006107430A (ja) 2006-04-20
EP1650661A3 (en) 2009-09-09
CN1755648A (zh) 2006-04-05
US20060075304A1 (en) 2006-04-06
EP1650661A2 (en) 2006-04-26

Similar Documents

Publication Publication Date Title
CN100481021C (zh) 用于标识计算机程序的未响应部分的方法、系统和装置
CN1755644B (zh) 基于程序执行不稳定性状态为软件程序提供自定义产品支持的方法、系统和设备
CN103201724B (zh) 在高可用性虚拟机环境中提供高可用性应用程序
CN107832230B (zh) 基于数据调优的测试方法、设备以及系统
CN106201878B (zh) 测试程序的执行方法和装置
CN108595316B (zh) 分布式应用的生命周期管理方法、管理器、设备和介质
CN109656782A (zh) 可视化调度监控方法、装置及服务器
CN112241360B (zh) 一种测试用例生成方法、装置、设备及存储介质
CN101393626A (zh) 用于企业系统的健康状况检查框架
JP2006277115A (ja) 異常検出プログラムおよび異常検出方法
CN107357731A (zh) 进程产生core dump问题的监控、分析和处理方法
CN113157411A (zh) 一种基于Celery的可靠可配置任务系统及装置
CN111176869B (zh) 超时检测方法、装置、设备及存储介质
CN110109741B (zh) 循环任务的管理方法、装置、电子设备及存储介质
JP5623557B2 (ja) 診断データを収集するためのマルチスレッド化コンピューティング環境における方法、装置、およびコンピュータ・プログラム
US20100174947A1 (en) Damaged software system detection
CN109697112A (zh) 分布式集约化一站式作业系统和实现方法
CN113190427A (zh) 卡顿监控方法、装置、电子设备及存储介质
CN113760491A (zh) 一种任务调度系统、方法、设备及存储介质
CN105589787A (zh) 应用程序的健康检查方法及健康检查系统
CN109614330A (zh) 存储系统业务测试方法、装置、系统、存储控制器及介质
CN114356571A (zh) 一种处理方法及装置
CN111338609A (zh) 信息获取方法、装置、存储介质及终端
CN109995617A (zh) 主机管理特性的自动化测试方法、装置、设备及存储介质
CN116931965B (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
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150429

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150429

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

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

Granted publication date: 20090422

Termination date: 20160830