可执行代码的推测重放制造技术

技术编号:21958954 阅读:39 留言:0更新日期:2019-08-24 22:15
执行代码执行的推测重放。实施例包括重放跟踪数据,所述跟踪数据包括表示一个或多个可执行实体的执行的跟踪数据流,包括将重放所述跟踪数据的第一运行时状态存储在第一重放数据结构中。在重放期间,遇到所述可执行实体中的第一兴趣点。基于遇到所述第一兴趣点,中止所述跟踪数据的重放,并且用户界面呈现所述第一运行时状态的一部分。在呈现所述运行时状态的所述部分时,推测地重放所述跟踪数据。推测地重放包括自动选择所述可执行实体中的第二兴趣点;从所述第一重放数据结构来创建第二重放数据结构;以及重放所述跟踪数据直到遇到所述第二兴趣点,包括将重放所述跟踪数据的第二运行时状态存储在所述第二重放数据结构中。

Presumptive replay of executable code

【技术实现步骤摘要】
【国外来华专利技术】可执行代码的推测重放
技术介绍
当在软件应用的开发期间编写代码时,开发人员通常花费大量时间“调试”代码以找到在代码中的运行时错误。在这样做时,开发人员可以采取几种方案来重现和本地化源代码错误,诸如基于不同输入观察程序的行为,插入调试代码(例如以打印变量值,以跟踪执行分支等),临时移除代码部分等。跟踪运行时错误以查明代码错误可能会占用应用开发时间的很大一部分。已经开发了许多类型的调试应用(“调试器”)以便于帮助开发人员进行代码调试过程。这些工具向开发人员提供用于跟踪、可视化和改变计算机代码的执行的能力。例如调试器可以可视化代码指令的执行,可以在代码执行期间的不同时间呈现变量值,可以使开发人员能够改变代码执行路径,和/或可以使开发人员能够在代码中设置“断点”(当在执行期间到达时,导致代码的执行被暂停)等等。一种新兴形式的调试应用能够实现“时间行进”、“反向”或“历史”调试,其中程序的执行由跟踪应用记录/跟踪到一个或多个跟踪文件中,其然后可以用于重放程序的执行以进行前向和后向分析。例如“时间行进”调试器可以使开发人员能够设置转发断点(如传统调试器)以及反向断点。然而,由于需要重放代码执行,“时间行进”调试器可能表现出较差的响应性。例如在用户发出调试操作(例如单步向前/向后、步进向前/向后、前进/后退)和“时间行进”调试器“命中”断点并将结果呈现给用户的时间之间可能存在显著延迟,因为调试器需要响应用户输入来执行可能数十亿条指令的跟踪重放。
技术实现思路
本文描述的至少一些实施例执行可执行代码的跟踪的推测重放,同时在用户界面处同时并发地呈现在用户请求的重放期间遇到兴趣点的结果。特别地,当在遇到的兴趣点处呈现程序运行时状态时,实施例预测用户可能接下来感兴趣的一个或多个推测的兴趣点(或者将暗示推测的兴趣点的一个或多个调试操作),并且执行可执行代码的至少一个推测重放,直到遇到推测兴趣点。作为推测重放的一部分,运行时数据被记录在与正常重放期间使用的数据结构不同的数据结构中。如果下一个用户选择的兴趣点/操作与预测的兴趣点/操作匹配,则运行时结果在用户界面上从单独的数据结构被快速呈现,而不是在用户等待的同时需要执行所请求的调试操作。通过执行推测重放,本文描述的实施例使得计算机系统能够基本上完全利用处理器资源(即,在等待用户输入的同时通过使用备用处理器周期进行推测重放而不是空闲),并提供响应式调试用户界面,其通常在针对这些结果的用户请求被接收之前准备好重放结果。在一个实施例中,执行代码执行的推测重放包括重放跟踪数据,跟踪数据包括表示一个或多个可执行实体的执行的一个或多个跟踪数据流,其包括将重放跟踪数据的第一运行时状态存储在一个或多个第一重放数据结构中。在跟踪数据的重放期间,遇到一个或多个可执行实体中的第一个兴趣点。至少基于遇到第一兴趣点,中止跟踪数据的重放,并且用户界面呈现在一个或多个第一重放数据结构中存储的第一运行时状态的至少一部分。在用户界面处呈现第一运行时状态的一部分的同时,推测地重放跟踪数据。推测重放包括自动选择一个或多个可执行实体中的第二兴趣点,基于一个或多个第一重放数据结构来创建一个或多个第二重放数据结构,并重放跟踪数据直到遇到第二兴趣点。重放跟踪数据的第二运行时状态被存储在一个或多个第二重放数据结构中。提供本
技术实现思路
是为了以简化的形式介绍概念的选择,这些概念将在下面的具体实施方式中被进一步描述。本
技术实现思路
不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。附图说明为了描述可以获得本专利技术的上述和其他优点和特征的方式,将通过参考附图中所示的具体实施例来呈现上面简要描述的本专利技术的更具体的描述。应理解,这些附图仅描绘了本专利技术的典型实施例,并且因此不应被认为是对其范围的限制,本专利技术将通过附图的使用来用附加特殊性和细节来进行描述和解释,在附图中:图1示出了促进程序代码的推测重放的示例计算环境;图2示出了示例跟踪重放组件;图3示出了第一示例跟踪文件;图4示出了第二示例跟踪文件;图5示出了基于跟踪文件来演示可执行实体的推测重放的示例时序图;以及图6示出了用于执行代码执行的推测重放的示例方法的流程图。具体实施方式本文描述的至少一些实施例执行对可执行代码的跟踪的推测重放,同时在用户界面处呈现在用户请求的重放期间遇到兴趣点的结果。特别地,当在遇到的兴趣点处呈现程序运行时状态时,实施例预测用户接下来可能感兴趣的一个或多个推测兴趣点(或者将暗示推测兴趣点的一个或多个调试操作),并且执行可执行代码的至少一个推测重放,直到遇到推测兴趣点。作为推测重放的一部分,运行时数据被记录在与正常重放期间使用的数据结构分离的数据结构中。如果下一个用户选择的兴趣/操作点与预测的兴趣/操作点匹配,则运行时结果在用户界面上从分离的数据结构快速呈现,而不是在用户等待时需要执行所请求的调试操作。通过执行推测重放,本文描述的实施例使得计算机系统能够基本上充分利用处理器资源(即,通过在等待用户输入时使用备用处理器周期用于推测重放而不是空闲),并且提供响应式调试用户界面,该用户界面通常在针对那些结果的用户请求被接收之前准备好重放结果。为了实现前述内容,图1示出了促进推测重放程序代码的示例计算环境100。如图所示,实施例可以包括或利用专用或通用计算机系统101,专用或通用计算机系统101包括计算机硬件,诸如例如一个或多个处理器102、系统存储器103、一个或多个数据存储库104、和/或输入/输出硬件105(例如诸如所描绘的键盘/鼠标硬件105a、联网硬件105b和显示设备105c)。本专利技术范围内的实施例包括用于携带或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可由计算机系统101访问的任意可用介质。存储计算机可执行指令和/或数据结构的计算机可读介质是计算机存储设备。携带计算机可执行指令和/或数据结构的计算机可读介质是传输介质。因此,作为示例而非限制,本专利技术的实施例可包括至少两种截然不同类型的计算机可读介质:计算机存储设备和传输介质。计算机存储设备是存储计算机可执行指令和/或数据结构的物理硬件设备。计算机存储设备包括各种计算机硬件,诸如RAM、ROM、EEPROM、固态驱动器(“SSD”)、闪存、相变存储器(“PCM”)、光盘存储器、磁盘存储器或其他磁存储设备,或者可以用于以计算机可执行指令或数据结构的形式存储程序代码、并且可以由计算机系统101访问和执行以实现本专利技术的公开功能的任意其他硬件设备。因此,例如计算机存储设备可以包括所描绘的系统存储器103、可以存储计算机可执行指令和/或数据结构的所描绘的数据存储库104、或者诸如处理器内存储装置的其他存储装置,如稍后所讨论的。传输介质可以包括网络和/或数据链路,其可以用于携带以计算机可执行指令或数据结构形式的程序代码,并且可以由计算机系统101访问。“网络”是定义为一个或多个数据链路,其能够在计算机系统和/或模块和/或其他电子设备之间传输电子数据。当通过网络或另一通信连接(硬连线、无线或硬连线或无线的组合)向计算机系统传递或提供信息时,计算机系统可将该连接视为传输介质。上述的组合也应包括在计算机可读介质的范围内。例如输入/输出硬件105可以本文档来自技高网
...

【技术保护点】
1.一种在计算机系统处实现的方法,所述计算机系统包括一个或多个处理器,所述方法用于执行代码执行的推测重放,所述方法包括:重放跟踪数据,所述跟踪数据包括表示一个或多个可执行实体的执行的一个或多个跟踪数据流,包括将重放所述跟踪数据的第一运行时状态在存储一个或多个第一重放数据结构中;在所述跟踪数据的重放期间,遇到所述一个或多个可执行实体中的第一兴趣点;至少基于遇到所述第一兴趣点,中止所述跟踪数据的重放,并且在用户界面处呈现被存储在所述一个或多个第一重放数据结构中所述第一运行时状态的至少一部分;以及在所述用户界面处呈现所述第一运行时状态的所述部分的同时,推测地重放所述跟踪数据,包括:自动选择所述一个或多个可执行实体中的第二兴趣点;基于所述一个或多个第一重放数据结构来创建一个或多个第二重放数据结构;以及重放所述跟踪数据直到遇到所述第二兴趣点,包括将重放所述跟踪数据的第二运行时状态存储在所述一个或多个第二重放数据结构中。

【技术特征摘要】
【国外来华专利技术】2017.01.06 US 15/400,5521.一种在计算机系统处实现的方法,所述计算机系统包括一个或多个处理器,所述方法用于执行代码执行的推测重放,所述方法包括:重放跟踪数据,所述跟踪数据包括表示一个或多个可执行实体的执行的一个或多个跟踪数据流,包括将重放所述跟踪数据的第一运行时状态在存储一个或多个第一重放数据结构中;在所述跟踪数据的重放期间,遇到所述一个或多个可执行实体中的第一兴趣点;至少基于遇到所述第一兴趣点,中止所述跟踪数据的重放,并且在用户界面处呈现被存储在所述一个或多个第一重放数据结构中所述第一运行时状态的至少一部分;以及在所述用户界面处呈现所述第一运行时状态的所述部分的同时,推测地重放所述跟踪数据,包括:自动选择所述一个或多个可执行实体中的第二兴趣点;基于所述一个或多个第一重放数据结构来创建一个或多个第二重放数据结构;以及重放所述跟踪数据直到遇到所述第二兴趣点,包括将重放所述跟踪数据的第二运行时状态存储在所述一个或多个第二重放数据结构中。2.根据权利要求1所述的方法,还包括:接收对所述第二兴趣点的用户选择;以及在所述用户界面处呈现被存储在所述一个或多个第二重放数据结构中所述第二运行时状态的至少一部分。3.根据权利要求2所述的方法,还包括丢弃所述一个或多个第一重放数据结构。4.根据权利要求1所述的方法,还包括:接收对第三兴趣点而非所述第二兴趣点的用户选择;以及丢弃所述一个或多个第二重放数据结构。5.根据权利要求1所述的方法,其中自动选择所述一个或多个可执行实体中的所述第二兴趣点包括基于一个或多个预期的下一调试器操作来选择所述第二兴趣点。6.根据权利要求1所述的方法,其中基于所述一个或多个第一重放数据结构来创建所述一个或多个第二重放数据结构包括复制所述一个或多个第一重放数据结构。7.根据权利要求1所述的方法,其中基于所述一个或多个第一重放数据结构来创建所述一个或多个第二重放数据结构包括创建差异数据结构,所述差民数据结构存储所述第一运行时状态和所述第二运行时状态之间的差异。8.根据权利要求1所述的方法,其中推测地重放所述跟踪数据还包括:自动选择所述一个或多个可执行实体中的第三兴趣点;基于所述一个或多个第一重放数据结构来创建一个或多个第三重放数据结构;以及并发地重放所述跟踪数据直到遇到所述第二兴趣点,重放所述跟踪数据直到遇到所述第三兴趣点,包括将重放所述跟踪数据的第三运行时状态存储在所述一个或多个第三重放数据结构中。9.根据权利要求8所述的方法,还包括:接收对所述第二兴趣点的用户选择;在所述用户界面处呈现被存储在所述一个或多个第二重放数据结构中的所述第二运行时状态的至少一部分;以及丢弃所述一个或多个第一重放数据结构和所述一个或多个第二重放数据结构。10.一种计算机系统,包括:一个或多个处理器;以及一个或多个计算机可读介质,具有存储在其上的计算机可执行指令,所述计算机可执行指令由所述一个或多个处理器可执行,以使得所述计算机系统至少执行以下项:重放跟踪数据,所述跟踪数据包括表示一个或多个可执行实体的执行的一个或多个跟踪数据流,包括将重放所述跟...

【专利技术属性】
技术研发人员:J·莫拉
申请(专利权)人:微软技术许可有限责任公司
类型:发明
国别省市:美国,US

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

1