使用可修改的快照定义来对执行代码拍摄快照的制作方法

文档序号:9932639阅读:353来源:国知局
使用可修改的快照定义来对执行代码拍摄快照的制作方法
【专利说明】使用可修改的快照定义来对执行代码拍摄快照
[0001]相关申请的交叉引用
[0002]本专利申请要求以下申请的权益和优先权:于2013年8月19日提交的题为“Snapshotting Executing Code with a Modifiable Snapshot Definit1n(使用可修改的快照定义来对执行代码拍摄快照),,的美国专利申请序列号13/970,302、于2013年8月19日提交的题为 “Combined Performance Tracer and Snapshot Debugging System(组合的性能跟踪器和快照调试系统)”的美国专利申请序列号13/970,319、于2013年8月19日提交的题为“Breakpoint Setting Through a Debugger User Interface(通过调试器用户界面的断点设置)”的美国专利申请序列号13/970,343,这些申请都通过援引它们所教导和揭示的全部内容而被明确结合于此。
[0003]背景
[0004]系统崩溃转储是当计算机程序遇到计算机因此不能再运行的错误时可被收集的数据集。操作系统和其它软件管理产品可收集灾难性故障处的数据,使得程序员可以能够检测该故障的原因。程序员可接着能够重新创建该错误或作出可防止再次发生该错误的改变。
[0005]概述
[0006]跟踪和调试系统可响应于某一事件来拍摄应用的快照,并可在该快照被捕获后继续执行程序。快照可被存储并稍后在调试工具中被检索,在调试工具中,程序员可浏览快照,或者快照可使得某个其它分析被执行。快照可包括应用的状态的子集,诸如调用栈、源代码的各部分、局部和全局变量的值以及各种元数据。快照可被定义在快照配置中,该快照配置可包括事件描述以及要被收集的数据。
[0007]跟踪和调试系统可收集性能相关跟踪器数据和快照数据两者。跟踪器数据可包括经聚集的性能和操作数据,而快照数据可包括调用栈、源代码以及其它可有用于对应用的调试和详细理解的信息。快照数据可被存储在与跟踪器数据分开的数据库中,因为快照数据可包括可能是私有或敏感的数据,而跟踪器数据可以是可能较不敏感的经聚集的信息。调试用户界面可被用于访问、显示和浏览存储的快照数据。
[0008]调试系统可显示可响应于在应用执行时被标识的事件来被收集的快照信息。调试系统可允许用户浏览快照中的各种数据元素,并可允许用户通过在快照数据内包括或排除各种数据元素来修改快照配置。用户界面可具有用于包括或排除可在浏览期间被呈现的数据元素的机制以及用于改变可触发快照的事件的选项。经更新的快照配置可被保存以用于当事件条件被满足时的将来的执行。
[0009]提供本概述以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
[0010]附图简述
[0011]在附图中,
[0012]图1是示出用于快照调试的系统的实施例的图示。
[0013]图2是示出具有可收集和查看快照的设备的网络环境的实施例的图示。
[0014]图3是示出组合的性能监视和快照收集系统的实施例的图示。
[0015]图4是示出用于调试查看器的示例用户界面的实施例的图示。
[0016]图5是示出用于收集快照实例的方法的实施例的流程图示。
[0017]图6是示出用于将快照代码插入在应用中的方法的实施例的流程图示。
[0018]图7是示出用于收集快照实例的更加详细的方法的实施例的流程图示。
[0019]图8是示出用于包装函数与快照代码的方法的实施例的流程图示。
[0020]图9是示出用于快照使用周期的方法的实施例的流程图示。
[0021]图10是示出用于查看快照实例的方法的实施例的流程图示。
[0022]详细描述
[0023]使用可修改的快照定义来对执行代码拍摄快照快照调试系统可响应于某一事件来拍摄应用的快照,并存储快照以供稍后查看。快照可在应用执行时进行,并可收集在指定事件处的各种程序状态。程序状态可包括局部和全局变量值、调用栈、与执行代码有关的源代码和其它?目息。
[0024]调试界面可被用于查看、浏览或以其它方式检查每个快照的内容。在一些情况下,快照可以是在每个事件被检测到时该程序的相对轻量的掠影。程序员可为条件(在该条件下可能在过去出现过问题)定义快照,并且快照可允许程序员具有回看在该事件时的程序状态以确定被监视事件的原因和效果的能力。
[0025]快照机制可用若干种方式来部署。在一简单实现中,程序员可手动地将快照代码插入到应用中。快照代码可包括当被满足时致使快照被拍摄的条件。
[0026]在更复杂的实现中,快照代码可通过在运行时监视应用代码来部署。在这样的实现中,监视代理可检查快照条件。当条件被满足时,监视代理可致使应用暂停,接着收集快照数据,并致使应用恢复执行。这样的实现可结合监视系统来部署,该监视系统可包装函数调用或提供某个其它性能监视。
[0027]快照可被编辑和修改。快照可包括可触发快照被拍摄的事件的定义以及要被收集的数据的定义。触发事件定义可使用任意类型的表达式、事件或其它信息来定义,并可在运行时被评估。数据收集定义可定义要收集的数据的类型以及来自局部和全局变量的值、元数据、外部事件和其它信息。在一些实施例中,快照可包括可作为数据收集过程的一部分来被执行的可执行代码。
[0028]快照可使用查看或浏览用户界面来被查看。在许多情况下,快照可在调试用户界面中被查看,该调试用户界面还可用作实时调试器的一部分。这样的实施例可将存储的快照作为实时调试器的从快照被拍摄时召回的实例来查看。用户与快照的交互可类似于用户与实时调试器的交互,但是可缺乏类似于实时调试器的步进向前或向后通过代码的能力。
[0029]快照调试系统可以是可收集各个事件处的程序状态的轻量数据收集系统。数据收集在以下意义上而言可以是轻量的:应用可被暂停一较短时间段,接着继续执行。这样的数据收集可给予程序员关于在特定事件周围发生了什么的一些洞察,使得程序员可以能够更好地改进或修改应用。
[0030]组合的性能跟踪器和快照调试系统
[0031]跟踪和快照调试可集成连续的性能测量和快照以更好地理解计算应用的行为。性能测量系统可在周期性的基础上监视应用,并可以是在其上程序状态的快照可被拍摄的平台。
[0032]性能测量系统可通过不同的机制来监视应用,诸如检测应用、监视应用在其中运行的执行环境、或其它机制。当监视正在进行时,快照管理器可检测针对快照的条件并可致使快照被拍摄并存储。
[0033]性能测量可以是性能度量(诸如计数或其它概要度量)的聚集,而快照可包括可被应用操作或处理的实际数据。在这样的实施例中,快照可包括敏感数据并且快照可被存储在与性能度量分开的存储储存库中,性能度量可包括较不敏感的信息。在一些实施例中,快照数据的某些或全部可被加密。
[0034]通过调试器用户界面的断点设置
[0035]调试用户界面可被用于查看和浏览快照实例。当查看快照实例时,调试用户界面可具有与该同一界面可被用于实时调试时类似的用户体验,但是被显示的数据可从针对快照的存储储存库中检索,而非从在实时调试情况下的实况执行环境中检索数据。
[0036]用户可以能够创建或修改快照定义以供部署将来的快照。在许多情况下,快照可包括在快照被拍摄时的应用状态的子集。当用户标识不被包括在快照中的变量或其它数据对象时,用户可以能够将该对象添加到将来的快照。在典型的用户界面中,用户可以能够拖放、右击或在用户界面中执行某个其它交互来选择对象以供从快照中包括或排除。
[0037]在快照被定义后,快照可被部署来在应用执行时收集数据。
[0038]贯穿本说明书和权利要求书,术语“探查器”(profiler)、"跟踪器”和“探测工具(instrumentat1n)”被可互换地使用。这些术语指代可在应用被执行时采集数据的任何机制。在经典定义中,“探测工具”可指代可被插入可执行代码并从而改变该可执行代码的生成方法存根(stub)、挂钩(hook)或其他数据采集机制,而“探查器”或“跟踪器”可经典地指代不可改变可执行代码的数据采集机制。对这些术语及其派生词中的任一者的使用都可蕴含或暗示彼此。例如,使用“跟踪器”的数据收集可使用“跟踪器”的经典意义中的非接触式数据收集以及用其中可执行代码可被改变的“探测工具”的经典意义的数据收集来执行。类似地,通过“探测工具”收集的数据可包括使用非接触式数据收集机制的数据收集。
[0039]此外,通过“探查”、“跟踪”和“探测工具”收集的数据可包括可被收集的任何类型的数据,包括诸如处理时间、吞吐量、性能计数器等等之类的与性能有关的数据。收集到的数据可包括函数名、传递的参数、存储器对象名和内容、传递的消息、消息内容、寄存器设置、寄存器内容、差错标志、中断、或与正被跟踪的应用有关的任何其他参数或其他可收集的数据。
[0040]贯穿本说明书和权利要求书,术语“执行环境”可被用于指代用于执行应用的任何类型的支持软件。执行环境的一示例是操作系统。在一些举例说明中,“执行环境”可被示为与操作系统分开。这可能是为了例示出为应用提供各支持功能的虚拟机,诸如进程虚拟机。在其他实施例中,虚拟机可以是可包括其自己的内部操作系统并可模拟整个计算机系统的系统虚拟机。
[0041]贯穿本说明书和权利要求书,术语“执行环境”包括操作系统和可具有或可不具有可容易标识的“虚拟机”或其他支持软件的其他系统。
[0042]贯穿本说明书和权利要求书,术语“应用”被用来指代可执行期望功能的软件和硬件产品的任何组合。在一些情况下,应用可以是用硬件平台操作的单一软件程序。一些应用可使用多个软件组件,每个软件组件可以是用不同语言编写的或可在不同硬件或软件执行环境内执行。在一些情况下,这些应用可跨多个设备分散并且可使用可由网络或其它通信系统连接的软件和硬件组件。
[0043]贯穿本说明书,贯穿对附图的描述,相同的附图标记表示相同的元素。
[0044]在本说明书和权利要求书中,对“处理器”的引用包括多个处理器。在某些情况中,可由“一处理
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1