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

通过动态的语言引擎捕捉遥测数据制造技术

技术编号:8347883 阅读:145 留言:0更新日期:2013-02-21 01:16
本发明专利技术涉及通过动态的语言引擎捕捉遥测数据。在此描述的至少一个实施例涉及选择性地捕捉与脚本代码抛出的异常相关联的脚本代码栈。对于未经处理的异常,脚本引擎1)以主机可访问的方式捕捉脚本代码栈,通过该主机可访问的方式,主存脚本引擎的主机可以访问所捕捉的脚本代码栈,2)完成脚本栈的展开,以及3)向主存脚本引擎的主机报告所捕捉的脚本代码栈。对于脚本代码所抛出的经处理的异常中的至少一个(脚本代码自身处理该异常),不以主机可访问方式捕捉脚本代码栈。同样,在抛出时间而非在创建时间填充错误对象的调用栈属性。

【技术实现步骤摘要】

本专利技术涉及捕捉遥测数据的技术,尤其涉及捕捉与脚本代码所抛出的多个异常相关联的脚本代码栈的技术。
技术介绍
在开发软件时,捕捉与执行该软件时的非预期行为有关的遥测信息是有帮助的。 这样的遥测信息的示例包括函数栈信息。这样的遥测信息可被开发者用来移除非预期行为以由此改进软件的质量。对有关脚本应用(诸如,网站或web应用)的遥测信息的提取是困难的挑战,因为这样的脚本应用在诸如操作系统或浏览器之类的主机环境中操作。开发者在他们的用户脚本中使用扩展和/或间接脚本语言特征以提取并处理这些信息。这并非在所有场景下都很好的工作。此外,不存在允许主机以主机专用的方式来原生地对待该信息的容易方式。
技术实现思路
在此描述的至少一个实施例涉及选择性地捕捉与脚本代码所抛出的异常相关联的脚本代码栈。对于脚本代码所抛出的至少一个未经处理的异常(脚本代码不处理该异常),脚本引擎1)以主机可访问的方式来捕捉脚本代码栈,通过该方式主控脚本引擎的主机可以访问所捕捉的脚本代码栈,2)完成脚本栈的展开,3)向主控脚本引擎的主机报告所捕捉的脚本代码栈。对于脚本代码所抛出的至少一个经处理的异常(脚本代码自己来处理该异常),则不以主机可访问的方式来捕捉脚本代码栈。因此,至少在后面的情况下,与捕捉脚本代码栈使得该脚本代码栈被主机访问相关联的开销可被保存。在此描述的至少一个实施例涉及用户脚本的执行,其中可具有相关联的未填充调用栈属性的错误对象被创建。在脚本代码抛出了与错误对象相关联的异常后,脚本代码栈在抛出时间被捕捉并被用于填充错误对象的调用栈属性。由于调用栈属性是在抛出时间而非错误对象的创建时间被填充的,因此调用栈属性与帮助评估在抛出时间存在的动态绑定更相关。提供本
技术实现思路
以便以简化形式介绍将在以下具体实施方式中进一步描述的一些概念。本
技术实现思路
并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。附图说明为了描述能够获得上述和其它优点和特征的方式,各实施例的更具体的描述将通过参考各附图来呈现。可以理解,这些附图只描绘了示例实施例,并且因此不被认为是对其范围的限制,将通过使用附图并利用附加特征和细节来描述和解释各实施例,在附图中图I示出了可以用来利用此处所描述的各实施例的示例计算系统;图2示出可由图I的计算系统实现、并包括主机环境和脚本编写环境的环境;图3示出了用于以主机可访问的方式选择性地捕捉与脚本代码所抛出的异常相关联的脚本代码栈的方法的流程图4示出了用于在异常抛出时间捕捉脚本代码栈的方法的流程图;以及图5抽象地示出包括抛出条件属性以及在满足抛出条件时而非创建错误对象时填充的栈属性的错误对象数据结构。具体实施方式根据在此描述的各实施例,在此描述的至少一个实施例涉及选择性地捕捉与脚本代码所抛出的异常相关联的脚本代码栈。对于未经处理的异常,脚本引擎I)以主机可访问方式捕捉脚本代码栈,通过该主机可访问方式,主控脚本引擎的主机可访问所捕捉的脚本代码栈,2)完成脚本栈的展开,以及3)向主控脚本引擎的主机报告所捕捉的脚本代码栈。 对于脚本代码所抛出的经处理的异常中的至少一个(脚本代码自身处理了该异常),不以主机可访问非方式来捕捉脚本代码栈。同样,在在此描述的一些实施例中,错误对象是通过用户脚本来创建的。错误对象的调用栈属性是在抛出时间而非创建时间被填充的。首先,将参考图I来描述关于计算系统的某些介绍性讨论。然后,将参考图2至5来描述捕捉脚本代码栈的实施例。首先,参考图I来描述关于计算系统的介绍性讨论。计算系统现在越来越多地采取多种多样的形式。例如,计算系统可以是手持式设备、电器、膝上型计算机、台式计算机、 大型机、分布式计算系统或甚至常规上不被认为是计算系统的设备。在本说明书以及权利要求书中,术语“计算系统”被广义地定义为包括任何设备或系统(或其组合),该设备或系统包含至少一个物理有形的处理器以及其上能含有可由处理器执行的计算机可执行指令的物理有形的存储器。存储器可以采取任何形式,并可以取决于计算系统的特性和形式。计算系统可以分布在网络环境中,并可包括多个组分计算系统。如图I所示,在其最基本的配置中,计算系统100通常包括至少一个处理单元102 和存储器104。存储器104可以是物理系统存储器,该物理系统存储器可以是易失性、非易失性、或两者的某种组合。术语“存储器”在此也可用来指诸如物理存储介质等非易失性大容量存储。如果计算系统是分布式的,则处理、存储器和/或存储能力也可以是分布式的。 如此处所使用的那样,术语“模块”或“组件”可以指在计算系统上执行的软件对象或例程。 此处所描述的不同组件、模块、引擎,以及服务可以实现为在计算系统上执行的对象或进程 (例如,作为分开的线程)。在随后的描述中,参考由一个或多个计算系统执行的动作描述了各实施例。如果这样的动作是以软件实现的,则执行动作的相关联计算系统的一个或多个处理器响应于已经执行了计算机可执行指令来引导计算系统的操作。这样的操作的示例涉及对数据的操纵。计算机可执行指令(以及被操纵的数据)可以存储在计算系统100的存储器104中。计算系统100还可包含允许计算系统100例如通过网络110与其他消息处理器通信的通信信道 108。这里描述的各实施例可包括或利用专用或通用计算机,该专用或通用计算机包括诸如例如一个或多个处理器和系统存储器等计算机硬件,如以下更详细讨论的。这里描述的各实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本专利技术的各实施例可包括至少两种显著不同的计算机可读介质计算机存储介质和传输介质。计算机存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。在该说明书和权利要求书中,“计算机程序产品” 在其上包括具有计算机可执行指令的一个或多个计算机存储介质,当这些计算机可执行指令由计算机系统的一个或多个处理器来执行时,执行计算机程序产品的功能。“网络”被定义为允许在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于携带计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的网络和/或数据链路。上述的组合也应被包括在计算机可读介质的范围内。此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动传输到计算机存储介质(或反之亦然)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传输到计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质。因而,应当理解,计算机存储介质可被包括在还利本文档来自技高网
...

【技术保护点】
一种用于选择性地捕捉与脚本代码(222)所抛出的多个异常相关联的脚本代码栈的方法(300),所述方法包括:对于所述脚本代码所抛出的、并非由所述脚本代码来处理的至少一个异常中的每一个异常,执行如下动作:所述脚本引擎(221)在所述异常被抛出时捕捉(311)表示与所述脚本代码相关联的脚本栈的至少一部分的脚本代码栈的动作,其中所述捕捉的动作以主机可访问的方式发生,通过所述主机可访问的方式,主控所述脚本引擎的主机(211)可以访问所捕捉的脚本代码栈;在所述捕捉所述脚本代码栈的动作之后的所述脚本引擎完成对所述脚本栈的展开(312)的动作;以及所述脚本引擎向主控所述脚本引擎的主机报告(313)所捕捉的脚本代码栈的动作;以及对于所述脚本代码所抛出的、由所述脚本代码本身来处理的至少一个异常,免除(321)以所述主机可访问的方式来捕捉所述脚本代码栈的动作。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:J·A·汉米尔顿G·塞思Y·屈
申请(专利权)人:微软公司
类型:发明
国别省市:

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

1