当前位置: 首页 > 专利查询>微软公司专利>正文

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

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

【技术实现步骤摘要】

技术介绍
软件开发周期中最重要的阶段之一是在软件产品已运送给客户之后进行的调试阶段。因为软件产品用户的实际体验可在该阶段期间用来隔离程序错误、标识经常或不经常使用的特征、并使该软件产品更好并更稳定,所以该阶段是重要的。发行后调试阶段中分析的主要焦点通常是标识最常发生的程序错误(也称为“缺陷”)。通过标识最常发生的缺陷并修复它们,可改进许多用户的使用体验。然而,还有通常是先前的发行后调试系统未解决的另一类分析。该类分析涉及标识计算机“暂停”(“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的远程控制文件。远程控制文件包含定义应被记录的失败的条件的信息。特别地,远程控制文件可包括用于确定程序是否不响应的时间阈值。远程控制文件还可包含当程序的一部分被标识为不响应时是否应收集系统信息以及应收集的信息类型本文档来自技高网
...

【技术保护点】
一种用于标识计算机程序的不响应部分的方法,其特征在于,所述方法包括:在开始执行所述计算机程序部分时开启计时器;确定所述计时器是否在所述计算机程序部分的执行期间终止;以及响应于所述计时器在所述计算机程序部分的执行期间的 终止,将所述计算机程序部分标识为不响应,并存储系统状态信息以用于诊断所述计算机程序。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:BE康宁CC怀特TS库恩
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1