专利名称:立即延迟跟踪器工具的制作方法
技术领域:
本发明涉及跟踪引用中的事件的方法和系统。
背景技术:
用户界面使得用户能够与软件应用进行交互。用户界面设备可以是通过键盘、鼠标、触摸屏显示器等来接受用户的动作或输入的图形用户界面。可以使用诸如窗口、菜单、图标、按钮、指针、框等对象来构造图形用户界面。用户可以使用这些对象来输入数据、执行命令以及一般与软件应用进行交互。 对用户动作的慢响应时间影响对软件应用的使用。响应时间应该尽可能的快。某些用户动作可能是关键的,并需要立即响应。用户动作和应用响应间的延迟可给予用户该应用软件没有瞬时地反应的感知。因此,改进用户界面的响应时间增强了用户对软件应用的整体体验。
发明内容
提供本发明内容以便以简化形式介绍将在以下具体实施方式
中进一步描述的一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。用户通过严重依赖于可能需要立即响应的用户输入或用户动作的用户界面与诸如集成开发环境(IDE)等应用进行交互。这些用户动作经常由管理IDE的用户界面的用户界面(UI)线程来处理。对用户动作的响应中的延迟影响用户对应用的体验。立即延迟跟踪器工具跟踪n线程对在返回响应时具有超过预期响应时间的延迟的用户动作的处理。立即延迟跟踪器工具获取用户定义的指示感兴趣的事件、每一事件的延迟阈值和每一事件的跟踪长度的设置文件。立即延迟跟踪器工具监听超过延迟阈值的事件的发生,并随后记录系统中运行的所有进程和线程的控制流的系统范围跟踪达由跟踪长度定义的时间长度。立即延迟跟踪器工具在记录系统范围跟踪之前等待第一次发生超过延迟阈值的事件,该事件可引起在后用户动作经历相同的延迟。通过这种方式,被记录的数据的量被最小化。随后可过滤并分析所记录的数据以得到延迟的源。通过阅读下面的详细描述并参考相关联的附图,这些及其他特点和优点将变得显而易见。应该理解,前面的概括说明和下面的详细描述只是说明性的,不会对所要求保护的各方面形成限制。附图简述
图1示出了用于跟踪用户动作的立即延迟的示例性系统。图2是示出了对具有超过延迟阈值的流逝时间的键盘输入的跟踪的流程图。图3是示出用于跟踪立即延迟的第一示例性方法的流程图。图4A-4B是示出用于跟踪立即延迟的第二示例性方法的流程图。图5是示出操作环境的框图。
图6是示出示例性计算设备的框图。图7是示出示例性服务器的框图。
具体实施例方式各个实施例涉及用于跟踪响应于要求立即响应的用户输入的延迟的机制。在一个或多个实施例中,可以向提供使用户能够构建、测试和/或执行软件应用的工具和服务的集成开发环境输入用户输入。用户通过严重依赖于可要求立即响应的用户输入和动作的用户界面与IDE进行交互。立即延迟跟踪器工具是跟踪在这样的用户动作的响应时间中的延迟,使得该延迟的源可被标识出并被补救的机制。在一个或多个实施例中,立即延迟跟踪器工具可跟踪显示从键盘键入的字符的延迟或在显示器上打开菜单的延迟。立即用户动作可以是键盘敲击或对用户输入的菜单选项的点击。存在处理这些事件时应该瞬时响应的期望。立即用户动作经常由管理IDE用户界面的UI线程来处理。用户界面事件被表示成被存储在消息队列中直到被UI线程处理的消息。UI线程可以被实现为从消息队列检索消息并据此处理它们的消息泵或循环。UI线程的目标是持续从消息队列中检索消息,该消息在本领域中又被称为抽取消息。通过这种方式,触发这些消息的动作被响应,以由此快速改进用户动作的响应时间。立即延迟跟踪器工具获取指示感兴趣的事件、延迟阈值和跟踪长度的设置文件。感兴趣的事件可以是n线程处理的用户动作,诸如键盘敲击、鼠标点击、打开菜单等。延迟阈值是表示用户可容许的最大延迟的时间单位。跟踪长度是表示在应用超过了延迟阈值后跟踪该应用的时间量的时间单位。立即用户动作的响应时间可以是非常快速的,并可花少至50毫秒。由于立即用户动作的快速响应时间,立即延迟跟踪器工具不得不以不明显增加立即用户动作的响应时间的方式来工作。因而,立即延迟跟踪器工具在记录系统范围跟踪前等待超过阈值的事件的发生。系统范围跟踪可包括进程中的调用栈和/或在跟踪期间运行的线程。存在被连续地逐个重复的某些立即用户动作,诸如键盘敲击和与打开菜单相关联的动作。如果在处理键盘敲击时存在延迟,则很可能在紧跟在其后发生的在后键盘敲击中经历相同的延迟。立即延迟跟踪器工具在记录系统范围跟踪之前等待这样的用户动作第一次超过延迟阈值,使得该立即延迟跟踪器工具不会阻碍不可能经历相同延迟的立即用户动作的响应时间。被监控的应用(诸如IDE)可将标识事件的执行的开始点和结束点的标记事件插入应用中。标记事件可用于在处理该事件时触发对应用的响应时间的测量。因而,一事件可由诸如在该事件开始时以及在该事件结束时的两个标记事件来标识。标记事件可以是对被通知了事件的开始和结束的事件跟踪引擎的API调用。作为响应,事件跟踪引擎可向立即跟踪器工具提供ETL事件通知,通过该通知该立即跟踪器工具可确定是否发生了延迟。当事件超过延迟阈值时,随后该立即延迟跟踪器指令事件跟踪引擎记录对运行达预定时间量的所有进程和/或线程的系统范围跟踪。注意力现转向对各实施例的更详细的讨论。图1示出了用于跟踪立即用户动作中的延迟的示例性系统的框图。系统100可包括通过网络106通信地耦合的计算设备102和服务器104。计算设备102和服务器104可以是能够执行可编程指令的任何类型的电子设备,这些设备为诸如但不限于移动设备、个人数字助理、移动计算设备、智能电话、蜂窝电话、手持式计算机、服务器、服务器阵列或服务器场、web服务器、网络服务器、因特网服务器、工作站、小型机、大型机、巨型机、网络设备、web设备、分布式计算系统、多处理器系统或其组合。网络106可以是能够利用任何通信协议或按照任何配置来促进计算设备102与服务器104之间的通信的任何类型的通信链接,诸如但不限于有线网络、无线网络或其组合。应当理解,所示的网络连接是示例性的,并且也可使用在计算设备102和服务器104之间建立通信链接的其他手段。在一个或多个实施例中,计算设备102可被IDE 110的用户利用。计算设备102可包括操作系统108、IDE 110和立即延迟跟踪器工具112。操作系统108、IDE 110和立即延迟跟踪器工具112可以是计算机程序指令的序列,并且当由处理器来执行该计算机程序指令的序列时,使得处理器根据规定的任务来执行方法和/或操作。可以将操作系统108、IDE 110和立即延迟跟踪器工具112实现成程序代码、程序、过程、模块、代码段、程序栈、中间件、固件、方法、例程等。可执行计算机程序指令可根据用于指示计算机执行特定功能的预定义的计算机语言、方式或句法来实现。这些指令可以使用任何合适的高级、低级、面向对象、可视、编译、和/或解释编程语言来实现。IDE 110是提供允许用户构建、测试和/或执行软件应用的工具和服务的软件应用。微软的 Visual Studio 、Delph1、JBuiIder、FrontPage 和 Dream Weaver 是不例性 IDE。IDE 110可包含执行的多个线程,诸如UI线程113。在一实施例中,UI线程113可被实现为消息泵。消息泵从消息队列114检索消息,这些消息随后被转发给相应的事件处理程序以供处理。消息序列可以被翻译或聚集成事件。例如,按下鼠标按钮消息和移动消息可被聚集成窗口大小调整事件。其他事件的示例可包括键盘输入、时间到期等。n线程113调用与消息相关联的事件处理程序,并在检索另一消息之前等待该事件处理程序的执行的完成。可通过操作系统108将各消息放置在消息队列114中。从消息队列114中检索消息可以指抽取消息,并且用于从消息队列114中检索消息并转发这些消息以供处理的机制又被称为消息泵。UI线程113的目标是不断地从消息队列114中检索消息或不断地抽取消息。通过这种方式,触发这些消息的事件被响应,以由此快速改进W线程113的性能和响应性。当UI线程113花费大量时间来处理消息时,该UI线程113被认为是无响应的。为了改进n线程113的响应时间,知道延迟的源是重要的。在一个或多个实施例中,立即延迟跟踪器工具112可用于确定UI线程响应于要求立即注意的用户动作的慢响应时间。操作系统108管理并协调执行IDE 110和其他程序所需的资源和服务。操作系统108可包括事件跟踪引擎116和运行时引擎118。事件跟踪引擎116可以是用于将内核或应用定义的事件作为记录到日志文件中的软件应用。运行时引擎118管理受管代码应用的执行。事件跟踪引擎Il6用日志记录或记录属于在操作系统108下运行的应用的执行期间发生的各事件的数据。事件可以是操作系统或应用中可能发生的任何可记录的活动。在一个或多个实施例中,事件跟踪引擎116可能正在跟踪UI线程113和/或操作系统108内发生的用户界面事件。在这个上下文中,示例性事件可以是n线程113为忙的这段时间。该事件可以被指定为从n线程113从消息队列得到消息的时刻到n线程完成对该消息的处理时的时刻的时间。可以由插入n线程113中的可测量该延迟的合适点处的一对标记事件来标识这个事件。可记录的数据包括执行事件的线程(诸如UI线程113)的调用栈。调用栈是被配置为线程内已执行的过程的地址的后入先出栈的数据结构。通过获取线程的调用栈,IDE的用户可能能够跟踪该线程的控制流以便确定延迟的源。事件跟踪引擎116从提供方(诸如IDE 110和/或操作系统108)处检索事件。IDE110和/或操作系统108向事件跟踪引擎116提供与事件的发生相关联的事件内容。事件跟踪引擎116接着将该事件内容提供给事件的消费者,诸如立即延迟跟踪器工具112。可以以提取、转换、加载(ETL)日志文件的形式来将事件内容提供给立即延迟跟踪器工具112,日志文件可包括时戳、进程和/或线程标识符、处理器编号、CPU使用数据等。诸如立即延迟跟踪器工具112等事件跟踪引擎116的消费者经常向事件跟踪引擎116注册并指定事件跟踪引擎116将提供给立即延迟跟踪器工具112的事件。另外,立即延迟跟踪器工具112还可指令事件跟踪引擎116将特定事件记录到一个或多个日志文件中。例如,与应用有关的事件可被记录到用户日志文件120中,并且与操作系统内核有关的事件可被记录到内核日志文件122中。设置文件124可用于指定要监视的事件以及其他信息。例如,设置文件124可包括延迟阈值和跟踪长度。延迟阈值是表示用户可容许的最大延迟的时间单位。跟踪长度是表示在事件超过了延迟阈值后跟踪该事件的时间量的时间单位。在一实施例中,设置文件124可以是具有一组用于指定可跟踪事件和相关信息的标签的XML文件。设置文件124可以由用户生成,以供立即延迟跟踪器工具112使用。运行时引擎118管理用受管代码写的应用。受管代码是包含二进制汇编件和元数据的文件。汇编件是以中间语言来格式化的,而元数据标识与该汇编件相关联的类别、方法和属性。受管代码在运行时引擎118内执行。当受管代码调用一种方法时,运行时引擎118安排来使该方法被编译成相应的机器代码,该机器代码随后被执行。运行时引擎118可被认为是在用受管代码编写的应用内发生的事件的提供方。因而,运行时引擎118可将这些事件提供给事件跟踪引擎116,这些事件可随后被记录到运行终了(rundown)跟踪文件126或用户日志文件120中。立即延迟跟踪器工具112可以是根据用户定义的设置来跟踪影响应用的性能的事件的响应时间的软件应用。立即延迟跟踪器工具112可包含监听器线程128、收集器线程130和上传器线程132。监听器线程128与时间跟踪引擎116交互以检测超过延迟阈值的用户定义事件的发生。收集器线程130管理对涉及事件的数据的收集,包括将收集到的数据处理成供在后面的分析中使用的格式。上传器线程132管理将收集到的数据分配给可提供对收集到的数据的进一步分析的其他计算设备。立即延迟跟踪器工具112可通过API与事件跟踪引擎116进行交互。最初,立即延迟跟踪器工具112通过注册API向事件跟踪引擎116注册。因此,立即延迟跟踪器工具112可以通过调用相应的API以立即延迟跟踪器代码在各个点处与事件跟踪引擎116进行交互。立即延迟跟踪器工具112可通过调用相应的API请求特定事件的ETL事件通知,通过相应的API请求事件跟踪引擎116记录跟踪数据,以及请求事件跟踪引擎116将所有收集到的数据合并成合并文件134。立即延迟跟踪器工具112可使用合并文件134中的信息来生成系统文件136。系统文件136可包含合并文件中所感兴趣的延迟的列表,以及关于生成跟踪数据的机器的附加信息。在一个或多个实施例中,可以以XML格式来配置系统文件136。存在跟踪时收集到的大量数据,并且立即延迟跟踪器工具112标识用户感兴趣的那些延迟,以便减少有待分析的数据的量。立即延迟跟踪器工具112可扫描合并文件134,并标识合并文件134中所感兴趣的那些事件和延迟。设置文件124标识用户感兴趣的事件和延迟。所标识的事件和延迟被随后列在系统文件136中,以使得对合并文件134中的数据的在后分析更有效。服务器104可被利用来分析包含在合并文件134和系统文件136中的经跟踪数据。服务器104可包括数据库138以及分析和报告模块140。数据库138存储来自一个或多个计算设备102的合并文件134,且分析和报告模块140可用于分析合并数据并形成显示分析结果的报告。分析结果可用于确定由事件的延迟造成的状况。在一个或多个实施例中,数据库138可包含来自单个合并文件134的跟踪数据,并在其他实施例中数据库138可包含来自若干合并文件134的跟踪数据。通过跨应用的多个用户聚集合并文件134,可更容易地识别出延迟的源。尽管图1中示出的系统100具有按照某种配置的有限数量的元件,但应理解,系统100可以在替换配置中包括更多或更少的元件。例如,服务器104可被安排成多个服务器机器,或被配置成服务器和客户机机器的组合。还存在可在一个或多个服务器104上并发操作的若干分析和报告模块140。虽然描述了与跟踪IDE内的用户动作有关的各实施例,但可利用除IDE以外的其他应用,并且可跟踪除用户界面事件以外的其他事件。各实施例不受限于此方式。在各个实施例中,在此描述的系统100可包括具有多个元件、程序、过程、模块的计算机实现的系统。如此处所使用地,这些术语旨在指代与计算机相关的实体,包括硬件、硬件和软件的组合或软件中的任一个。例如,元件可被实现为在处理器上运行的进程、硬盘驱动器、多个(光和/或磁存储介质的)存储驱动器、对象、可执行代码、执行的线程、程序、和/或计算机。作为说明,在' 务器上运行的应用和服务器两者都可以是元件。一个或多个元件可以驻留在执行的进程和/或线程内,且元件可以视给定实现所需而位于一个计算机上和/或被分布在两个或更多计算机之间。各实施例限于这种方式。系统100的各个元件可经由各条线或箭头所指示的各种类型的通信介质通信地耦合。元件可以协调彼此之间的操作。该协调可以涉及单向或双向信息交换。例如,元件可以传递通过通信介质传递的信号形式的信息。该信息可被实现成分配给各条信号线的信号。在这些分配中,每一消息都是信号。然而,其他实施方式可另选地采用数据消息。这些数据消息可以跨各个连接发送。示例性连接包括并行接口、串行接口和总线接口。图2示出跟踪示例性事件的过程。用户可输入键盘敲击(框146),该键盘敲击被操作系统检测并处理成WM_KEYD0WN消息(框148)。WM_KEYD0WN消息可包括指示检测到键盘敲击的时间的时戳以及唯一地标识键盘敲击的键盘扫描代码。WM.KEYDOWN消息可随后被张贴到UI线程的消息队列(框148)。消息泵150处理放置在消息队列中的消息。消息泵可以是如下各项的循环持续地通过获得消息函数152来从消息队列中检索消息、随后通过处理消息函数154来发起对消息的处理、以及通过等待下一个消息函数156来等待要被放置在消息队列中的下一个消息。处理消息函数154可检索WM_KEYDOWN消息,该消息随后被转换成WM_CHAR消息,该WM_CHAR消息包括指示WM_CHAR何时被张贴的时戳、键盘扫描代码和通过键盘敲击输入的字符。所感兴趣的键盘敲击输入的响应时间可以是从设置WM_KEYD0WN中的时戳的时刻到完成处理WM_CHAR消息(这可在完成处理消息函数154时发生)时的时刻的时间。该响应时间在图2中被示为流逝的时间160。UI线程113中的标记事件162可用于标识事件的开始点,且标记事件164可用于标识事件的结束点。如果流逝的时间160超过在设置文件124中指定的键盘敲击的延迟阈值设置,则立即延迟跟踪器工具112发起在跟踪长度162所定义的时间段内记录所有系统范围事件。记录第一延迟事件之后发生的所有事件,即使在后面的用户动作中不存在任何延迟。在立即用户动作的情况下,很可能在后用户动作将经历与在前延迟相似的延迟。然而,通过等待将首先发生的延迟的发生,所记录的数据的量被减少为更可管理的大小。另外,系统范围跟踪的记录时间并不阻碍立即用户动作的响应时间。注意力现转向对各个示例性方法的更详细的讨论。可参考各个示例性方法进一步描述针对各实施例的操作。可以理解,除非另外指明,否则代表性的方法不一定要按所呈现的次序或者按任何特定次序来执行。而且,参考这些方法描述的各种活动可按照串行或并行的方式、或串行和并行操作的任何组合执行。视给定的一组设计和性能约束的需要,方法可使用所述实施例或替换实施例的一个或多个硬件元件和/或软件元件来实现。例如,方法可被实现为供逻辑设备(例如,通用或专用计算机)执行的逻辑(例如,计算机程序指令)。图3示出了用于跟踪n线程113中的立即动作的延迟的示例性方法的流程图。可将立即延迟跟踪器工具112加载到计算设备102中,并启动该工具使得可如设置文件124中所指定的那样处理跟踪(框202)。在一个或多个实施例中,可以将立即延迟跟踪器工具112加载成插件、组件、分组等形式的IDE 110的扩展。在激活IDE 110后,IDE 110向操作系统108注册,使得IDE 110在其自己的进程中执行,该进程独立于操作系统108为立即延迟跟踪器工具112创建的进程(框202)。立即延迟跟踪器工具112开始执行并读入来自设置文件124的数据(框202)。设置文件124包含用户所指定的、立即延迟跟踪器工具112可跟踪的事件和延迟(框202)。立即延迟跟踪器工具112可创建监听器线程128来监听设置文件124中指定的事件的发生(框204)。收集器线程130可随后被创建来管理对所跟踪事件的记录(框206)。上传器线程132可被创建来将所跟踪事件的合并文件134和系统文件136上传到服务器104(框208)。随后分析这些文件以确定每一事件的延迟(框210)。注意力现转向对图3所示的方法的更详细的讨论。图4A-4B示出了用于跟踪n线程中的立即动作的延迟的示例性方法的流程图。应注意,方法300A、300B可表示由此处所述的一个或多个实施例执行的某些或全部操作,且方法可包括比图4A - 4B中描述的操作更多或更少的操作。参考图4A,示出了并发执行的IDE 110、事件跟踪引擎116、监听器线程128、收集器线程130和上传器线程132。在一个或多个实施例中,IDE 110、事件跟踪引擎116和立即延迟跟踪器工具中的线程128、130、132可在各单独的进程中并发运行。进程是应用的示例,该应用被配置为具有执行它所需的资源。进程可具有其自己的存储器空间,该空间是与在相同进程内执行的各线程共享的。相同进程内的各线程可经由消息或通过共享的存储器空间来通信。IDEllO在可包括UI线程113的进程中运行。事件跟踪引擎116在可包括操作系统108的进程中运行。监听器线程128、收集器线程130和上传器线程132可在相同进程中运行。监听器线程128可通过调用注册API来向事件跟踪引擎116注册,在该注册API中监听器线程128指示了事件跟踪引擎116应跟踪的各事件(框304)。每一事件可以与标识该事件的事件标识符相关联。另外,监听器线程128可指定所跟踪的数据的格式以及其他信息(框304)。在一个或多个实施例中,事件可以是通过n线程来处理的用户动作,并且是通过n线程中包含的标记事件来标识的。在这个上下文中,事件跟踪引擎116向监听器线程128转发在注册API中以此处称为提取、变换和加载(ETL)事件通知的格式指定的那些事件。ETL事件通知可包含事件内容和其他信息,诸如事件何时发生的时戳、CPU使用、处理器标识符等。监听器线程128分析ETL事件通知以确定与事件相关联的执行时间是否处在设置文件124中为该事件指定的延迟之内(框306)。如果执行时间处在为事件指定的延迟时间之内,则可丢弃该ETL事件通知,且监听器线程128等待下一个ETL事件通知(框308 —否)。如果事件的执行时间超过为该事件指定的延迟时间(框308-是),则监听器线程128通知收集器线程130记录可跟踪事件(框310)。收集器线程130可请求用户302手动地启动对跟踪事件的收集或记录(框310)。用户302可请求记录的开始(框310)。或者,如果用户302未在预先确定的时间内或未以其他方式作出响应,则收集器线程130继续至自动地指令事件跟踪引擎116记录可跟踪事件(框310)。为了完成该任务,收集器线程130使用注册API向事件跟踪引擎116注册,该注册API指定了要被记录的事件(诸如对UI线程的系统范围跟踪)以及可进行该记录的时间长度(框312)。可在设置文件124中指定记录时间(框314)。在接收到收集器线程的注册后,事件跟踪引擎116将n线程113中引发的事件记录在用户日志文件120中、将操作系统108的内核中引发的事件记录在内核日志文件122中、并将由运行时引擎118引发的事件记录在运行终了跟踪文件126中(框314)。事件跟踪引擎116在记录时间的持续期间不断向这些文件中的每一个写入(框314)。这些日志文件中的每一个包含成千上万个调用栈。例如,用户日志文件120可包含与用户进程和线程相关联的调用栈,内核日志文件122可包含操作系统进程和线程的调用栈,且运行终了跟踪文件126可包含以受管代码实现的应用的调用栈。在一些系统中,每毫秒可生成一调用栈,由此在四秒钟跟踪长度中生成大致四千个调用栈。接着,事件跟踪引擎116通知收集器线程130记录完成(框316)。参考图4B,收集器线程130随后指令事件跟踪引擎116将用户日志文件120、内核日志文件122和运行终了跟踪文件126合并成合并文件134 (框318)。收集器线程130读取合并文件134中用日志记录的事件和信息,以生成列出了所感兴趣的延迟的系统文件136。事件跟踪引擎116将与计算设备102相关的附加数据添加到合并文件中。例如,可将每一日志文件的文件签名写入合并文件134中以供以后标识符号文件时使用。对于所跟踪的、执行本地代码或机器代码的应用,调用栈可包含引用地址的符号名。为了解析符号名,需要与执行跟踪的计算设备相对应的符号文件。符号文件可被存储于在线符号服务器中。出于这个原因,事件跟踪引擎116将各日志文件的文件签名写入合并文件134中,使得正确的符号文件可在在后处理中被获取。还可在系统文件136中提供其他系统数据,诸如操作系统的版本、应用的版本、唯一的会话标识符等。收集器线程130引用指定了感兴趣的延迟的设置文件124,并在合并文件134中找出相应的延迟。这些延迟随后被列在系统文件136中,以供在后面的分析使用。另外,将与执行跟踪的计算设备有关的信息(诸如,文件签名、操作系统的版本等)写入系统文件136中。然而,收集器线程130可能不需要执行这个任务,并且在一些实施例中将感兴趣的延迟列在系统文件136中的任务是由服务器104上的聚集和报告模块140来执行的。注意力现转向对用于在此描述的各实施例的示例性操作环境的讨论。现在参考图5,示出了示例性操作环境400的示意性框图。操作环境400可包括通过通信框架404与一个或多个服务器406通信的一个或多个客户机402。客户机402可实现客户机系统,诸如计算设备102,且服务器406可实现服务器104。客户机402可被实现为硬件设备、软件模块或其组合。这种硬件设备的示例可包括但不限于计算机(例如,服务器、个人计算机、膝上型计算机等)、蜂窝电话、个人数字助理或任何类型的计算设备等。客户机402还可被实现为具有在单个执行路径中、多个并发的执行路径(例如,线程、进程等)中或以任何其他方式执行的指令的软件模块。服务器406可被实现为硬件设备、软件模块或其组合。这种硬件设备的示例可包括但不限于计算机(例如,服务器、个人计算机、膝上型计算机等)、蜂窝电话、个人数字助理或任何类型的计算设备等。服务器406还可被实现为具有在单个执行路径中、多个并发的执行路径(例如,线程、进程等)中或以任何其他方式执行的指令的软件模块。通信框架404促进客户机402和服务器406间的通信。通信框架404可利用任何通信协议具体化任何类型的通信介质,诸如有线或无线网络。每一客户机402可耦合到一个或多个客户机数据存储408,该数据存储408存储在该客户机402本地的信息。每一服务器406可耦合到一个或多个服务器数据存储410,该数据存储410存储在该服务器406本地的信息。图6示出示例性计算设备102的框图。计算设备102可具有处理器502、显示器504、用于促进网络通信的网络接口 506、用于接受来自输入设备的用户输入的用户输入接口 508和存储器510。存储器510可以是可存储可执行过程、应用和数据的任何计算机可读的存储介质。计算机可读介质不属于传播信号,诸如通过载波发射的调制数据信号。它可以是任何类型的存储器设备(例如,随机存取存储器、只读存储器等)、磁存储、易失性存储、非易失性存储、光存储、DVD、⑶、软盘驱动器等。存储器510还可包括一个或多个外部存储设备或位于远程的存储设备。存储器510可包含如下指令和数据具有事件跟踪引擎116和运行时引擎118的操作系统108 ;具有UI 线程 113 的 IDE 110 ;具有监听器线程128、收集器线程130和上传器线程132的立即延迟跟踪器工具112 ;
消息队列114;设置文件124 ;内核日志文件122;用户日志文件120;运行终了跟踪文件126 ;合并文件134;系统文件136;以及各种其它应用和数据512。图7示出示例性服务器104的框图。服务器104可具有处理器602、显示器604、用于促进网络通信的网络接口 606、用于接受来自输入设备的用户输入的用户输入接口 608和存储器610。存储器610可以是可存储可执行过程、应用和数据的任何计算机可读存储介质。计算机可读介质不属于传播信号,诸如通过载波发射的调制数据信号。它可以是任何类型的存储器设备(例如,随机存取存储器、只读存储器等)、磁存储、易失性存储、非易失性存储、光存储、DVD、⑶、软盘驱动器等。存储器610还可包括一个或多个外部存储设备或位于远程的存储设备。存储器610可包含诸如以下各项中的一个或多个指令和数据操作系统612;数据库138 ;分析和报告模块140 ;以及其它应用和数据612。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。更确切而言,上述具体特征和动作是作为实现权利要求的示例形式公开的。虽然已结合立即用户动作(诸如键盘敲击和菜单点击)描述了该技术,但各实施例不限于立即用户动作,并可应用于系统内用户可想要跟踪的任何事件,诸如但不限于,滚轮、空闲处理延迟等。各实施例可以使用硬件元件、软件元件或两者的组合来实现。硬件元件的示例可包括设备、组件、处理器、微处理器、电路、电路元件、集成电路、专用集成电路、可编程逻辑器件、数字信号处理器、现场可编程门阵列、存储器单元、逻辑门等。软件元件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接□、应用程序接口、指令集、计算代码、代码段、或其任何组合。判断一实施例是使用硬件元件和/或软件元件来实现可根据给定实现所需的任何数量的因素而变化,这些因素如所需计算速率、功率级、带宽、计算时间、负载平衡、存储器资源、数据总线速度以及其它设计或性能约束。一些实施例可包括存储指令或逻辑的存储介质。存储介质的示例可包括能够存储电子数据的一种或多种类型的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移动或不可移动存储器、可擦除或不可擦除存储器、可写或可重写存储器等。逻辑的示例可包括各种软件元件,诸如程序、过程、模块、应用、代码段、程序栈、中间件、固件、方法、例程等。例如,在一个实施例中,计算机可读存储介质可以存储可执行的计算机程序指令,这些指令在由处理器执行时使得该处理器执行根据所描述的各实施例的方法和/或操作。可执行的计算机程序指令可根据用于指示计算机执行特定功能的预定义的计算机语言、方式或句法来实现。这些指令可以使用任何合适的高级、低级、面向对象、可视、编译、和/或解释编程语言来实现。
权利要求
1.一种计算机实现的方法,包括 标识将在应用的执行期间发生的至少一个事件,所述事件与延迟阈值和跟踪长度相关联(306); 监视所述事件在所述应用的执行期间的发生(308 );以及 在确定所述事件超过了所述延迟阈值后,记录系统范围跟踪达所述跟踪长度(312)。
2.如权利要求1所述的计算机实现的方法,其特征在于,所述监视步骤还包括 在所述应用中提供一个或多个标记事件(162,164),每一标记事件触发对所述应用在处理所述事件时的响应时间的测量。
3.如权利要求2所述的计算机实现的方法,其特征在于,还包括 确定从第一标记事件到第二标记事件所流逝的时间,所述流逝的时间用于确定所述事件是否超过了所述延迟阈值(160)。
4.如权利要求1所述的计算机实现的方法,其特征在于,所述事件与所述应用对立即用户动作(146)的响应相关联。
5.如权利要求1所述的计算机实现的方法,其特征在于,还包括 提供用户定义的设置文件(124),所述设置文件标识要监视的一个或多个事件、每一事件的延迟阈值以及每一事件的跟踪长度。
6.一种其上存储有处理器可执行指令的计算机可读存储介质,包括 具有供在处理器上执行的指令的应用(110),所述应用具有多个标记事件(162,164),每一标记事件标识所述应用中对立即用户动作的处理发生的点; 具有多个事件、多个延迟阈值和多个跟踪长度的设置文件(124),每一事件与一立即用户动作相关联,每一延迟阈值与一事件相关联,且每一跟踪长度与一事件相关联;以及 立即延迟跟踪器工具(172),所述立即延迟跟踪器工具具有在处理器上执行时从所述设置文件(124)获取事件、延迟阈值和跟踪长度并监视所述事件的发生的指令,在所述事件的发生时所述事件在应用的执行期间被一个或多个标记事件引发,所述立即延迟跟踪器工具还具有在处理器上执行时记录在所述事件的发生之后执行的所有进程的系统范围跟踪的指令,在所述事件的发生之后所述事件执行了达超过所述跟踪长度的持续时间。
7.如权利要求6所述的计算机可读存储介质,其特征在于,所述应用是集成开发环境(110)。
8.如权利要求11所述的计算机可读存储介质,其特征在于,还包括 事件跟踪引擎(116),所述事件跟踪引擎具有在处理器上执行时向所述立即延迟跟踪器工具提供所述事件的发生的通知的指令;以及 具有在处理器上执行时使用所述通知来确定延迟是否已发生的指令的所述立即延迟跟踪器工具(172)。
9.如权利要求6所述的计算机可读存储介质,其特征在于,还包括 包含从用户日志文件(120)、内核日志文件(122)和运行终了文件(126)获取的日志数据的合并文件(134),所述用户日志文件包含与所述应用在所述跟踪长度期间的执行相关联的数据,所述内核日志文件包含与操作系统在所述跟踪长度期间的执行相关联的数据,且所述运行终了文件包含与受管代码应用在所述跟踪长度期间的执行相关联的数据。
10.如权利要求9所述的计算机可读存储介质,其特征在于,所述立即延迟跟踪器工具具有在处理器上执行时分析所述合并文件以标识与所述设置文件中标识的事件相关联的 延迟,该延迟被存储在系统文件(318)中。
全文摘要
本发明涉及立即延迟跟踪器工具。立即延迟跟踪器工具监听超过延迟阈值的用户指定事件的发生。在一实施例中,这些事件与由用户界面(UI)线程处理的立即用户动作相关联,在该用户界面线程中该立即用户动作的响应时间需要瞬时响应。当事件超过延迟阈值时,系统中的所有进程和/或线程的控制流被记录、过滤并随后被分析以得到延迟的源。
文档编号G06F9/30GK102999314SQ20121036152
公开日2013年3月27日 申请日期2012年9月21日 优先权日2011年9月23日
发明者C·麦科尔, P·普赖斯, B·艾京, S·巴萨瓦 申请人:微软公司