状态转变的诊断的制作方法

文档序号:9553227阅读:220来源:国知局
状态转变的诊断的制作方法
【专利说明】状态转变的诊断
[0001] 置量
[0002] 程序调试或调试是发现和减少计算机程序或电子硬件片断中的错误或缺陷数目 以使得计算机程序如预期那样表现的一种方法过程。一般来说,调试是耗时且令人厌烦的 任务,并且程序员常常使用用于监视计算机程序的执行以及执行程序调试的软件工具,诸 如对被调试进程进行操作的调试程序等。在程序调查期间,程序员可以停止被调试进程的 执行,收集数据值,或者基于变量的值以其他方式影响被调试进程的执行。
[0003] 调试技术常常力图想要跟上开发技术中的改进。软件开发技术已经进展到向许多 开发者提供容易地创建具有丰富用户体验的程序的附加工具,这些附加工具适配成用于具 有以曾经仅对最高级开发者可用的方式针对所选用户群的定制的多个平台和系统。这些开 发技术中的许多技术出于许多原因已经使得传统调试过程变得更困难。因而,软件开发者 常常陷入是否要利用需要极大调试成本并且可能破坏将产品快速带给消费者的能力的开 发技术来实现新的软件的难题。

【发明内容】

[0004] 本概述被提供以便以简化形式介绍概念的选集,所述概念将在以下详细描述中进 一步描述。本
【发明内容】
并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨 在用于限定所要求保护的主题的范围。
[0005] 在其中发生中断的代码片断的源头在执行期间实际发生问题时是未知的情形中, 对代码进行调试或故障排除是困难的。这一信息通常不再可供检索和检查,并且因为异步 编程的特性而常常已经从调用栈中出栈,在异步编程中,例程负责完成长期运行的工作,该 长期运行的工作与启动该长期运行的工作的例程或工作并发且分开地运行。在一些示例 中,诸如在涉及多个线程的应用中,相关信息可能在栈上可用,但难以跨许多可用线程的特 定子集来定位。另外,尽管这一信息可能存在,但与信息片断有关的序列和定时可能丢失。
[0006] 本公开包括一种关联与其中运行时问题往往在稍后才体现的运行时人工制品的 源头有关的诊断信息的方法。示例人工制品包括回调、用于插入文档对象模型(DOM)元素 的事件处理程序、以及控制转移的其他示例。在一个示例中,一个逻辑操作(诸如异步操 作)内的执行单元的状态转变在计算机可读指令的运行时期间被记入日志。诊断信息(诸 如调用栈帧)与该逻辑操作相关联。记入日志的状态转变和相关联的诊断信息被提供以供 在所选点处进行检索,该所选点诸如在中断点处或者在抛出异常时。出于解说而使用异步 操作,但各示例可适用于其他的控制转移。
[0007] 开发者在对照那些目标进行标准的故障排除操作时可以咨询诊断信息,标准的故 障排除操作诸如命中受影响的回调中的中断点或者检查处于非正确状态的DOM元素。诊断 信息可被用来执行标准调试和故障排除操作(诸如跳转到代码)以便对表示问题的根本原 因的始发代码进行故障排除。所有对象构建的调用栈位置也可被收集以便协助存储器剖 析、协助调试存储器泄漏等。
[0008] 附图简沐
[0009] 包括附图来提供了对各实施例的进一步理解,且这些附图被合并在本发明书内并 构成其一部分。附图示出各实施例,并且与说明书一起用于解释本发明的原理。其他实施 例和各实施例的许多预期优点将随着参考下面的详细描述进行更好的理解而得到认识。附 图的元素不一定相对于彼此而缩放。类似的附图标号指定对应的类似部分。
[0010] 图1是示出计算设备的示例的框图。
[0011] 图2是可被配置成在图1的计算设备上运行的用于诊断状态转变的方法的框图。
[0012] 图3是示出被配置成在图1的一个或多个计算设备上运行的诊断工具的示例的框 图。
[0013] 图4是可被配置成在图1的计算设备上运行的用于诊断状态转变的方法的框图。
[0014] 详细描沐
[0015] 在以下具体实施例中,对附图进行了参考,附图构成了实施例的一部分且在其中 作为示例示出了可在其中实践本发明的各特定实施例。可以理解,可以利用其他实施例,并 且可以作出结构上或逻辑上的变化而不背离本发明的范围。因此,以下详细描述并不旨在 限制,并且本发明的范围由所附权利要求来限定。应理解,此处描述的各示例性实施例的特 征可相互组合,除非另外具体注明。
[0016] 图1示出可以在操作环境中使用并且用于主存或运行计算机应用的示例性计算 机系统,该计算机应用被包括在存储计算机可执行指令的一个或多个计算机可读存储介质 上,该计算机可执行指令用于控制计算机系统(诸如计算设备)执行用于将诊断信息联同 状态转变与应用进行相关联的过程。计算机系统还可用于开发和/或运行具有用于评估从 应用的运行时检索到的诊断信息的进程的计算机应用。
[0017] 示例性计算机系统包括计算设备,诸如计算设备100。在一基本硬件配置中,计算 设备100通常包括具有一个或多个处理单元(即,处理器102)的处理器系统以及存储器 104。作为示例,处理单元可包括但不限于一个芯片上的两个或更多个处理核或者两个或更 多个处理器芯片。在一些示例中,计算设备还可具有一个或多个附加的处理或专用处理器 (未示出)以执行从处理器102卸载的处理功能,附加的处理或专用处理器诸如用于图形处 理器单元上的通用计算的图形处理器。存储器104可以布置在分层结构中并且可包括一级 或多级高速缓存。取决于计算设备的配置和类型,存储器104可以是易失性的(如随机存 取存储器(RAM))、非易失性的(诸如只读存储器(R0M)、闪存等)或两者的某种组合。该基 本配置在图1中由虚线106来例示。计算设备100可以采用若干形式中的一种或多种。此 类形式包括平板、个人计算机、工作站、服务器、手持式设备、消费者电子设备(诸如视频游 戏控制台)、或其他,并且可以是独立设备或被配置为计算机网络、计算机群集、云服务基础 结构或其他的一部分。
[0018] 计算设备100还可具有附加特征或功能。例如,计算设备100还可包括附加存储。 此类存储可以是可移动和/或不可移动的,并且可包括但不限于,磁盘或光盘或固态存储 器,或者闪速存储设备,诸如可移动存储108和不可移动存储110。计算机存储介质包括以 存储诸如计算机可读的指令、数据结构、程序模块或其他数据之类的信息的任何合适的方 法或技术实现的易失性和非易失性、可移动和不可移动介质。存储器104、可移动存储108 和不可移动存储110全部都是计算机存储介质的示例。计算机存储介质包括,但不限于, RAM、ROM、EEPR0M、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、 磁带盒、磁带、磁盘存储或其它磁性存储设备、通用串行总线(USB)闪存驱动器、闪存卡、或 能用于存储所需信息且可以由计算设备100访问的任何其它存储介质。任何这样的计算机 存储介质都可以是计算设备100的一部分。
[0019] 计算设备100常常包括一个或多个输入和/或输出连接,诸如USB连接、显示器端 口、专用连接、以及用于连接到各种设备以向计算设备提供输入和输出的其他连接。输入设 备112可包括诸如键盘、定点设备(例如鼠标)、笔、语音输入设备、触摸输入设备或其他等 设备。输出设备111可包括诸如显示器、扬声器、打印机等设备。
[0020] 计算设备100常常包括允许计算设备100与其它计算机/应用115进行通信的一 个或多个通信连接114。示例通信连接可包括但不限于,以太网接口、无线接口、总线接口、 存储区域网络接口、专用接口。通信连接可以被用于将计算设备100耦合到计算机网络,所 述计算机网络可以根据各种各样的特性(例如拓扑、连接方法和规模)被分类。网络是计 算设备以及可能的由通信信道互连的其它设备的集合,所述通信信道促成通信且允许在互 连的设备中共享资源和信息。计算机网络的示例包括局域网、广域网、因特网或其它网络。
[0021] 计算设备100可被配置成运行操作系统软件程序以及一个或多个计算机应用,这 些构成系统平台。被配置成在计算设备100上执行的计算机应用包括至少一个进程(或任 务),所述至少一个进程(或任务)是执行程序。每个进程提供用于执行该程序的资源。一 个或多个线程在该进程的上下文中运行。线程是操作系统向其分配处理器102中的时间的 基本单元。线程是为执行而调度的进程内的实体。进程的各线程可共享其虚拟地址空间和 系统资源。每个线程可包括异常处理程序、调度优先级、线程位置存储、线程标识符、以及直 到该线程被调度的线程上下文(或线程状态)。线程上下文包括线程的机器寄存器集、内核 栈、线程环境块、以及与该线程对应的过程的地址空间中的用户堆。线程可以通过诸如消息 传递等技术在处理期间彼此通信。
[0022] 操作可以在与主应用线程分开的线程中执行。当应用调用用于执行操作的方法 时,在该方法执行其任务的同时应用可以继续执行其线程。用于共享存储器多处理器的并 发编程可包括多个线程访问同一数据的能力。共享存储器模型是多线程通信的最常部署的 方法。多个线程在多个处理器、多个处理器核、单个处理器核中的多个逻辑节点、和/或附 连到在处理器之间共享的存储器的其他类的并行机构上执行。
[0023] 计算设备100的一些实施例包括调用栈。调用栈是构建在存储器104中的存储与 正在运行的计算机程序的活动例程有关的信息的栈数据结构。这种栈也被称为执行栈、控 制栈、运行时栈、机器栈、或仅仅是"栈"。出于若干相关的目的来使用调用栈,并且一个目的 在于当每一活动例程完成执行时对它返回控制的点进行跟踪。活动例程是已经被调用但尚 未完成执行并且在执行之后控制被传递回调用点的例程。子例程的此类激活可以被嵌套至 任何层级,因此是堆栈结构。调用程序将返回地址压栈到栈上。当被调用例程完成时,它从 调用栈出栈返回地址并且将控制转移至该地址。如果被调用子例程调用至另一子例程上, 则将另一返回地址压栈到调用栈上,以此类推,信息按照程序命令叠堆和卸堆。一个调用栈 常常与正在运行的程序或者进程的每一任务或线程相关联,尽管可以为信号处理或协作式 多任务创建附加栈。开发者常常使用调用栈来确定代码位置和源头。然而,异步和事件驱 动范例显著地降低用于经由调用栈
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1