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

文档序号:6642779阅读:189来源:国知局
专利名称:用于标识计算机程序的未响应部分的方法、系统和装置的制作方法
背景技术
软件开发周期中最重要的阶段之一是在软件产品已运送给客户之后进行的调试阶段。因为软件产品用户的实际体验可在该阶段期间用来隔离程序错误、标识经常或不经常使用的特征、并使该软件产品更好并更稳定,所以该阶段是重要的。
发行后调试阶段中分析的主要焦点通常是标识最常发生的程序错误(也称为“缺陷”)。通过标识最常发生的缺陷并修复它们,可改进许多用户的使用体验。然而,还有通常是先前的发行后调试系统未解决的另一类分析。该类分析涉及标识计算机“暂停”(“hangs”)。暂停是软件停止响应用户输入并停止刷新屏幕的时间段。
尽管被暂停的计算机程序会继续执行,但程序通常对用户完全没有响应,因为未接收到输入也未更新显示屏。这对用户而言是非常令人沮丧的,因为用户并不清除程序是遇到了无法恢复的致命错误还是将完成处理并再次接收输入并更新显示屏。如果不响应阶段延长,则用户会相信计算机程序已遭遇了致命错误并选择中止该程序。以这样的方式中止暂停程序可导致数据丢失和系统状态不稳定。
如果可标识导致不响应行为的计算机程序部分,则可采取众多步骤的任一步骤来改进程序代码的响应。例如,可重新编写不响应部分来异步地或在背景处理线程上执行其处理。或者,如果不响应是由在程序的主消息环路上执行处理导致的,则可将该处理移出该消息环路。一旦已经标识导致不响应行为的计算机程序部分,可对该程序作其它类型的改变以改进计算机程序的响应性。因此,需要一种用于标识计算机程序的不响应部分的方法、系统和装置。还需要监视实际用户所遭遇的这种性能问题,并以不降级应用程序性能或用户体验的方式进行。
本发明的各个实施例就是基于这些和其它考虑而作出的。

发明内容
根据本发明一实施例,以上和其它问题通过用于标识计算机程序的不响应部分的方法和装置来解决。通过标识计算机程序的不响应部分可改变该程序,这些改变导致较少的不响应程序状态并因而增加客户对计算机程序的满意度。
根据本发明一方面,提供一种用于标识计算机程序不响应部分的方法。根据该方法,可能导致不响应行为的程序代码被封装在计时器中。特别地,计时器在程序代码部分执行之初就开启。该计时器设置为在指定阈值时间段期满后终止。当计时器在程序代码部分的执行期间终止时,执行由计时器调用的背景线程。
如果计时器在程序代码部分的执行期间终止,中断执行并收集有关该事件的数据。特别地,程序代码部分被标识为不响应,且系统状态信息被存储以在诊断计算机程序和纠正不响应行为时使用。为了捕捉计时器终止时而不是程序部分完成执行时的系统状态,可存储计时器终止时或终止左右时的系统状态信息。可不断收集少量数据,并可在特定性能问题需要进一步的调查时收集更多信息。
根据本发明一方面,可执行处理以确保计时器终止实际上是由要在阈值时间内完成执行的程序代码部分的失败导致的,而不是由另一原因导致。例如,如果程序代码部分从主存储器交换到备份存储器,则即使程序代码部分尚未执行到阈值时间段也可终止计时器。类似地,模式对话框的出现可导致代码部分不执行以及使计时器终止。为了防止这些情形导致计时器终止,确定实际花在执行计算机程序的时间量是否少于与计时器相关联的阈值。如果执行时间少于阈值,则可重新设置计时器的时间量等于计时器阈值减去实际花在执行程序代码部分的时间量。然后恢复程序代码部分的执行。
根据本发明其它方面,可用嵌套方式将计时器插入程序代码部分。这样,计时器可具有父或子计时器。为防止一个计时器的终止导致其父或子计时器的终止,在一实施例中,每个计时器可操作以在终止时通知其父或子计时器从而不造成该父或子计时器的伪终止。更具体地,子计时器可向父计时器通知子计时器所花的时间量,从而父计时器可从父计时器所化的时间总量中减去该时间。例如,如果父计时器具有花5秒进行处理的子计时器,且父计时器总共花了10秒,则将产生两个警报。一个警报在5秒时对子计时器产生。另一个警报将对父计时器产生,因为在减去子计时器所花时间之后父计时器仍然花了5秒。相反,如果父计时器总共仅花了5.5秒,则仅对子计时器而不对父计时器产生警报(假设一秒的计时器阈值)。
根据本发明另一实施例,可利用可操作来分配限量计时器的时间池。为了维护足够的性能水平,时间池可响应分配计时器的请求,并仅允许当计时器在池中存在时分配计时器。当已完成计时器的使用时,可将计时器返回到池中。
参阅以下详细描述和附图,表征本发明的这些和各个其它特征、以及优点将显而易见。


图1是示出用来体现本发明各方面的计算机网络各方面的网络图;图2是示出在本发明各实施例中使用并由其提供的计算机系统的计算机系统体系结构图;图3是根据本发明各实施例示出用于将工作(assert)计时器添加到各个计算机程序部分的过程的程序代码框图;图4和5是示出在本发明各实施例中使用并由其提供的用于标识计算机程序的不响应部分的过程的流程图。
具体实施例方式
现在参看附图,其中相同标号表示相同元件,将描述本发明各方面。图1和相应讨论旨在提供一种本发明各实施例可在其中实现的适当计算环境的简要一般描述。尽管本发明将在结合运行于个人计算机操作系统上的应用程序执行的程序模块的一般上下文中进行说明,本领域技术人员将理解本发明也可结合其它类型的计算机系统和程序模块实现。
通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构、以及其它类型的结构。此外,本领域技术人员将理解本发明可在其它计算机系统配置中实践,包括手持式装置、多处理器系统、基于微处理器的或可编程的电器消费品、小型计算机、大型计算机等等。本发明还可在任务由经通信网络链接的远程处理装置执行的分布式计算环境中实践。在分布式计算环境中,程序模块可被置于本地和远程存储器存储设备中。现在参看附图,其中若干附图中相同标号表示相同元件,将描述本发明各方面和示例性操作环境。
图1示出用于本发明各实施例的说明性操作环境。如图1所示,客户计算机2在本发明各实施例中使用。客户计算机包括可用来执行一个或多个程序模块的标准桌面或服务器计算机。客户计算机2还可装备有用于监视在客户计算机2上执行的应用程序的性能以及用于确定应用程序的响应的程序模块。如在以下将要详细描述的,客户计算机2可操作以执行用于标识使应用程序变得不响应的应用程序代码部分的代码。不响应的计算机程序包括在执行处理时不接收用户输入或不更新显示屏的程序。
为了标识不响应的程序并纠正不响应行为,客户计算机2可与出错报告服务器(“ERS”)计算机10通过接口相连。出错报告服务器计算机10包括维护并通过LAN 4或因特网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,其中例程结束。
基于前述内容,应理解本发明各个实施例包括用于标识计算机程序的不响应部分的方法、系统、装置和计算机可读介质。以上说明书、示例和数据提供了对本发明组成的制造和使用的完整描述。因为可作出本发明的许多实施例而不背离本发明的精神和范围,本发明驻留于所附权利要求中。
权利要求
1.一种用于标识计算机程序的不响应部分的方法,其特征在于,所述方法包括在开始执行所述计算机程序部分时开启计时器;确定所述计时器是否在所述计算机程序部分的执行期间终止;以及响应于所述计时器在所述计算机程序部分的执行期间的终止,将所述计算机程序部分标识为不响应,并存储系统状态信息以用于诊断所述计算机程序。
2.如权利要求1所述的方法,其特征在于,所述系统状态信息在所述定时器终止时或在其左右时间被存储。
3.如权利要求2所述的方法,其特征在于,还包括在将所述计算机程序部分标识为不响应并存储系统状态信息之前确定花在执行所述计算机程序部分的时间量是否少于与所述计时器相关联的阈值;以及响应于确定执行所述计算机程序部分所花的时间少于阈值,将所述计时器重新设置为在等于所述阈值减去花在执行所述计算机程序的时间量的时间到期之后终止。
4.如权利要求2所述的方法,其特征在于,还包括在将所述计算机程序部分标识为不响应并存储系统状态信息之前确定在所述计算机程序部分的执行期间是否显示了模式对话框;以及响应于确定显示了模式对话框,将所述计时器重新设置为在等于所述阈值减去花在显示所述模式对话框的时间量的时间到期之后终止。
5.如权利要求2所述的方法,其特征在于,所述计时器具有一个或多个父计时器,且其中所述方法还包括响应于确定所述计时器已在所述计算机程序部分的执行期间终止而向所述父计时器通知所述终止。
6.如权利要求5所述的方法,其特征在于,所述计时器具有一个或多个子计时器,且其中所述方法还包括响应于确定所述计时器已在所述计算机程序部分的执行期间终止而向所述子计时器通知所述终止。
7.如权利要求6所述的方法,其特征在于,还包括从被授权分配有限数目计时器的计时器池中获取所述计时器。
8.如权利要求1所述的方法,其特征在于,被存储用于在诊断所述计算机程序中使用的系统状态信息是基于远程控制文件的内容。
9.如权利要求8所述的方法,其特征在于,所述远程控制文件定义是否应执行最少的数据收集或全部的存储器信息转储。
10.一种用于标识计算机程序的不响应部分的方法,其特征在于,所述方法包括在要测试响应的所述计算机程序部分前面插入工作计时器构造函数;在要测试响应的所述计算机程序部分后面插入工作计时器析构函数;执行所述构造函数来一获取计时器;实例化所述计时器;开始执行要测试响应的所述计算机程序部分;确定所述计时器是否在完成所述计算机程序部分的执行之前终止;执行所述析构函数来释放所述计时器;以及响应于确定所述计时器在完成所述计算机程序部分的执行之前终止,将所述计算机程序部分标识为不响应,并存储在诊断所述计算机程序中使用的系统状态信息。
11.如权利要求10所述的方法,其特征在于,所述系统状态信息在所述定时器终止时或在其左右时间被存储。
12.如权利要求10所述的方法,其特征在于,还包括响应于确定所述计时器未终止,执行所述析构函数来释放所述计时器并继续执行所述计算机程序。
13.如权利要求10所述的方法,其特征在于,还包括在执行所述构造函数获取计时器之前,初始化被授权分配有限数目的计时器的计时器池,并启动工作计时器线程,用于监视从所述池分配的计时器是否已终止并用来响应于确定计时器已终止而调用终止例程。
14.如权利要求13所述的方法,其特征在于,获取计时器包括从所述事件计时器池中获取一计时器。
15.如权利要求14所述的方法,其特征在于,还包括在将所述计算机程序部分标识为不响应并存储系统状态信息之前确定花在执行所述计算机程序部分的时间量是否少于与所述计时器相关联的阈值;以及响应于确定执行所述计算机程序部分所花的时间少于阈值,将所述计时器重新设置为在等于所述阈值减去花在执行所述计算机程序的时间量的时间到期之后终止。
16.如权利要求15所述的方法,其特征在于,所述计时器具有一个或多个父计时器,且其中所述方法还包括响应于确定所述计时器已在所述计算机程序部分的执行期间终止向所述父计时器通知所述终止。
17.如权利要求16所述的方法,其特征在于,所述计时器具有一个或多个子计时器,且其中所述方法还包括响应于确定所述计时器已在所述计算机程序部分的执行期间终止向所述子计时器通知所述终止。
18.一种具有存储其上的计算机可执行指令的计算机可读介质,其特征在于,所述计算机可执行指令在由计算机执行时使所述计算机初始化工作计时器池,使其可操作以分配有限数目的可等待计时器;初始化工作计时器线程,使其可操作以在背景线程上监视一个或多个工作计时器的操作,并响应于确定工作计时器已终止而调用工作计时器终止例程;调用工作计时器构造函数以从所述工作计时器池中获取一工作计时器,并重新设置所述工作计时器开始其执行;执行所述计算机程序内的程序代码;通过所述工作计时器线程确定所述工作计时器是否已在所述程序代码执行期间终止;以及响应于确定所述工作计时器已在所述程序代码的执行期间终止而调用所述工作计时器终止例程。
19.如权利要求18所述的计算机可读介质,其特征在于,所述工作计时器终止例程的执行包括确定花在执行所述计算机程序部分的时间量是否少于与所述计时器相关联的阈值;以及响应于确定执行所述计算机程序部分所花的时间少于阈值,将所述计时器重新设置为在等于所述阈值减去花在执行所述计算机程序的时间量的时间到期之后终止。
20.如权利要求19所述的计算机可读介质,其特征在于,所述工作计时器终止例程的执行还包括响应于确定执行所述计算机程序部分所花的时间不少于阈值,将所述程序代码标识为不响应,并存储系统状态信息以在诊断所述计算机程序中使用。
21.如权利要求20所述的计算机可读介质,其特征在于,所述工作计时器终止例程的执行还包括将所述已分配的工作计时器返回到所述工作计时器池。
全文摘要
提供了用于标识计算机程序的不响应部分的一种方法、系统和装置。根据该方法,可潜在地导致不响应行为的程序代码被封装在计时器中。计时器在程序代码部分开始执行时就在背景线程上开启。该计时器设置为在指定阈值时间段期满后终止。确定计时器是否在程序代码部分的执行期间终止。如果计时器在程序代码部分的执行期间终止,中断执行并将程序代码部分标识为不响应,且系统状态信息被存储以在诊断计算机程序和纠正不响应行为时使用。实际存储的系统状态信息可由远程控制文件定义并可在计时器终止时或在其时间左右被存储。
文档编号G06F11/36GK1755648SQ20051009965
公开日2006年4月5日 申请日期2005年8月30日 优先权日2004年9月30日
发明者B·E·康宁, C·C·怀特, T·S·库恩 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1