[发明专利]用于记录可重放跟踪的计算机系统、方法、硬件存储设备有效
申请号: | 201780053059.9 | 申请日: | 2017-08-23 |
公开(公告)号: | CN109643273B | 公开(公告)日: | 2022-02-01 |
发明(设计)人: | J·莫拉 | 申请(专利权)人: | 微软技术许可有限责任公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京市金杜律师事务所 11256 | 代理人: | 王茂华 |
地址: | 美国华*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 记录 重放 跟踪 计算机系统 方法 硬件 存储 设备 | ||
记录多线程进程的执行的可重放跟踪包括标识跟踪存储器模型,其限定将要跨多线程进程的多个线程被排序的一个或多个可排序事件。跨一个或多个处理器的一个或多个处理单元同时执行多个线程。在多个线程的执行期间,针对每个线程独立地记录单独的可重放跟踪。记录包括针对每个线程:记录针对线程的初始状态;记录由至少一个处理器指令执行的至少一个存储器读取,由线程执行的至少一个处理器指令将存储器作为输入;以及利用单调增加的数字记录由线程执行的至少一个可排序事件,单调增加的数字将事件在跨多个线程的其他可排序事件间进行排序。
技术领域
本公开涉及计算机领域,具体涉及记录多线程进程的执行的可重放跟踪。
背景技术
当在软件应用的开发期间写源代码时,开发者通常花费大量时间“调试”源代码以找到代码中的运行时错误。例如,开发者可以采取若干方法来再现和定位源代码缺陷,诸如基于不同输入来观察程序的行为、插入调试代码(例如,以打印变量值,追踪执行的分支等)、暂时移除代码部分等。追踪运行时错误以查明代码缺陷占用应用开发时间的重大部分。
调试应用(“调试器”)已经被开发以便辅助代码调试过程。许多这样的工具提供跟踪、可视化和更改计算机代码的执行的能力。例如,调试器可以可视化代码指令(例如,源代码、汇编代码等)的执行和变量值,并且使得用户能够更改代码执行的方面。通常,调试器使得用户能够在源代码(例如,源代码中的特定指令或语句)中设置“断点”,其在执行期间被到达时使程序的执行被挂起。当源代码执行被挂起时,用户可以被呈现变量值并且被给予选择如何前进的选项(例如,通过终止执行,通过继续照常执行,通过步进到语句/函数调用中、步进通过语句/函数调用、或者从语句/函数调用步进出来,等等)。然而,经典调试器仅仅使得代码执行能够在单个方向(前向)上被观察/更改。例如,经典调试器不会使得用户能够选择返回到先前断点。
新兴的调试形式是“时间旅行(time travel)”调试,其中程序的执行被记录到跟踪中,跟踪可以之后在前向和后向两者上被重放并分析。
发明内容
本文中的实施例涉及记录并重放用于时间旅行调试的跟踪的新实现,其可以产生超过先前尝试几个数量级的性能改进,其实现对线程自由地跨多个处理单元同时运行的多线程程序的记录,并且其可以产生具有比先前尝试的跟踪文件减少几个数量级大小的跟踪文件。
在一些实施例中,一种用于记录多线程进程的执行的可重放跟踪的方法包括标识跟踪存储器模型,其限定将要跨多线程进程的多个线程被排序的一个或多个可排序事件。方法还包括跨一个或多个处理器的一个或多个处理单元同时执行多个线程,以及在多个线程的执行期间,独立地记录针对每个线程的单独的可重放跟踪。记录针对每个线程的单独的可重放跟踪包括记录针对该线程的初始状态。记录针对每个线程的单独的可重放跟踪还包括:记录由至少一个处理器指令执行的至少一个存储器读取,由线程执行的至少一个处理器指令将存储器作为输入。记录针对每个线程的单独的可重放跟踪还包括利用单调增加的数字记录由线程执行的至少一个可排序事件,单调增加的数字将事件在跨多个线程的其他可排序事件间进行排序。
提供本发明内容从而以简化的形式介绍下面在具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用作确定要求保护的技术方案的范围的辅助。
附图说明
为了描述能够获得本发明的以上所述的优点和特征以及其他优点和特征的方式,将通过参考在附图中图示的其具体实施例来呈现以上简单描述的本发明的更具体描述。在理解这些附图仅描绘本发明的典型实施例并且因此不被认为是对其范围的限制的情况下,利用在对附图的使用中的附加特异性和细节来描述并解释本发明,在附图中:
图1图示了时间旅行调试的实施例可以操作于其中的示例计算机架构;
图2图示了用于记录多线程进程的执行的可重放跟踪的示例方法的流程图;
图3是跨同时执行的线程的排序事件的示例;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软技术许可有限责任公司,未经微软技术许可有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201780053059.9/2.html,转载请声明来源钻瓜专利网。