[发明专利]时间旅行调试追踪中的存储器值暴露在审
| 申请号: | 202080027930.X | 申请日: | 2020-04-04 |
| 公开(公告)号: | CN113678110A | 公开(公告)日: | 2021-11-19 |
| 发明(设计)人: | J·莫拉 | 申请(专利权)人: | 微软技术许可有限责任公司 |
| 主分类号: | G06F11/34 | 分类号: | G06F11/34;G06F11/30 |
| 代理公司: | 北京市金杜律师事务所 11256 | 代理人: | 马明月 |
| 地址: | 美国华*** | 国省代码: | 暂无信息 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 时间 旅行 调试 追踪 中的 存储器 暴露 | ||
本公开涉及在与使存储器单元值被记录到追踪中的事件相对应的(多个)执行时间之前暴露存储器单元值。包括第一追踪片段和第二追踪片段的追踪片段在追踪内被标识。每个追踪片段记录可执行指令在对应线程上的不间断连续执行。第一追踪片段可以在第二追踪片段之前排序。确定在第二片段的回放期间,存储器单元值可以在第一执行时间处被暴露,第一执行时间在第二执行时间之前,第二执行时间对应于使存储器单元值在追踪记录期间被记录到追踪中的事件。输出数据被生成,该输出数据指示在第二追踪片段的回放期间存储器单元值可以在第一执行时间暴露。
背景技术
追寻和校正软件代码(通常称为“调试”代码)中不期望的软件行为是软件开发中的核心活动。不期望的软件行为可以包括许多事情,诸如执行崩溃、运行时异常、执行性能缓慢、数据结果不正确、数据损坏等。不期望的软件行为可能由多种因素触发,诸如数据输入、用户输入、竞争条件(例如,当访问共享资源时)等。给定触发器的多样性,不期望的软件行为可能很稀有和看似随机的,并且极难再现。如此,对于开发人员标识给定的不期望软件行为可能非常耗时且困难。一旦不期望的软件行为已经被标识,再次确定其(多个)根本原因可能既耗时又困难。
开发人员用于调试代码的一种方法是使用“现场”调试器。通常,现场调试器附加至现场过程的执行,并且使开发人员能够监测和指导该过程的前向执行。例如,现场调试器可以使开发人员能够设置在它到达特定指令时中止程序执行的断点,设置在它访问特定的存储器地址时中止程序执行的观察点,在它执行时通过代码行单步执行等。
新兴形式的诊断工具支持“历史”调试(也称为“时间旅行”或“反向”调试),其中(多个)程序线程的至少一部分线程的执行被记录/追踪到一个或多个追踪文件(即,追踪(trace))中。使用一些追踪技术,追踪可以包含非常高保真“位准确”的历史追踪数据,这使得(多个)所追踪的线程的(多个)记录部分能够以极高的保真度虚拟地“回放”——甚至低至单个指令的粒度(例如,机器代码指令、中间语言代码指令等)。因此,使用位准确追踪数据,“时间旅行”调试器使开发人员不仅能够监测和指导追踪代码的前向仿真(例如,经由断点、观察点、单步执行等),而且还能够监测并且指导追踪代码的反向仿真(例如,经由反向断点、反向观察点、反向单步执行等)。因此,开发人员可以在追踪之前监测和指导程序的任何部分的执行。
虽然比传统的现场调试器提供了巨大的益处,但时间旅行调试技术仍然存在一些限制。例如,利用现代处理器每秒可能执行数十亿个指令,程序执行期间所收集的追踪数据量有可能是天文数字。因此,许多时间旅行调试技术采用的追踪机制强调针对所执行的每个指令产生最少量的追踪数据。例如,认识到大多数处理器指令是确定性的(即,当给定相同的输入时,它们将始终产生相同的输出),一些时间旅行调试技术依赖于记录在存储器读取发生时它们的值以及任何非确定性指令的旁效应(side effects)(例如,输出)。值得注意的是,为了减少时间旅行追踪器的开销,追踪器可能具有有限的能力来记录它先前记录了哪些存储器值。如此,追踪器可能会记录与来自该存储器单元的多次读取相关的、针对同一存储器单元的多个值,这可能会向时间旅行追踪添加冗余数据。
由于现场调试器被附加至现场过程,它能够随时访问过程的整个存储器空间,因此可以在任何时刻呈现任何可访问存储器单元的任何内容。相比之下,当回放在存储器读取发生时记录它们的时间旅行追踪时,时间旅行调试器可能只能在追踪中存在记录来自该单元的读取的数据分组时确定给定存储器单元的值。这意味着,与现场调试器相比,时间旅行调试器可能会受限于在任何给定时间可以产生的存储器内容。例如,虽然现场调试器可能能够在缓冲区初始化时呈现存储器缓冲区的全部内容(即,因为整个存储器缓冲区都在现场过程的存储器空间中,并且可用于现场调试器),但时间旅行调试器可能只能逐步地呈现存储器缓冲区的内容,因为这些内容是在由仿真器回放时被追踪代码读取。因此,虽然时间旅行调试器比现场调试器提供了显着的益处,诸如能够向前和向后两者分析代码,但与现场调试器相比,它可能在呈现存储器内容的能力受到限制。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软技术许可有限责任公司,未经微软技术许可有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202080027930.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:保护继电器检查装置
- 下一篇:组合物用于制造发泡制品的用途





