[发明专利]监测断点出现的存储器位置的方法、计算机系统和介质有效
申请号: | 201780083409.6 | 申请日: | 2017-12-29 |
公开(公告)号: | CN110168508B | 公开(公告)日: | 2023-05-26 |
发明(设计)人: | J·莫拉 | 申请(专利权)人: | 微软技术许可有限责任公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F12/0802 |
代理公司: | 北京世辉律师事务所 16093 | 代理人: | 王俊 |
地址: | 美国华*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 监测 断点 出现 存储器 位置 方法 计算机系统 介质 | ||
经由高速缓存的有效断点检测包括通过检测高速缓存上的高速缓存未命中来监测存储器位置。将要被监测的储存器地址存储在监测列表中,并且如果高速缓存中存在与储存器地址重叠的任何高速缓存行,则将其逐出。当检测到基于存储器访问操作发生高速缓存未命中时,确定基于高速缓存未命中导入到高速缓存中的高速缓存行的一部分是否与存储在监测列表中的存储器地址重叠。当存在重叠时,对存储器地址处理一个或多个监测操作,并且从高速缓存中逐出导入的高速缓存行。
背景技术
当在软件应用的开发期间编写代码时,开发人员通常花费大量时间“调试”代码以找到代码中的运行时错误。在这样做时,开发人员可以采取若干方法来对源代码错误进行再现和本地化,诸如基于不同输入来观察程序的行为,插入调试代码(例如,打印变量值、追踪执行分支等),暂时删除代码部分等。追踪运行时错误以查明代码错误可能会占用应用开发时间的很大一部分。
已经开发了许多类型的调试应用(“调试器”)以便协助开发人员进行代码调试过程。这些工具使开发人员能够跟踪、可视化和改变计算机代码的执行。例如,调试器可以将代码指令的执行可视化,可以在代码执行期间的不同时间呈现变量值,可以使开发人员能够改变代码执行路径,和/或可以使开发人员能够在感兴趣的代码元素上设置“断点”和/或“观察点”(在执行期间到达时,其导致代码的执行被暂停)等等。
一种新兴形式的调试应用启用了“时间旅行”、“反向”或“历史”调试,其中程序的执行由跟踪应用记录/跟踪到一个或多个跟踪文件中,然后所述一个或多个跟踪文件可以被用来稍后重放程序的执行,以用于进行前向和后向分析。例如,“时间旅行”调试器可以使开发人员设置前向断点/观察点(像传统调试器那样)以及反向断点/观察点。
在实现“时间旅行”调试器中的一个挑战涉及如何在以灵活且高效的方式重放跟踪文件期间检测何时遇到感兴趣点(例如,断点/观察点)。已经探索的一种在重放期间用于追踪兴趣点的机制是使用处理器实现的硬件断点。虽然高性能,但是硬件断点的使用具有严重限制可以同时监视的断点数量(例如,INTEL处理器中的四个)的缺点,并且固有地将调试器实现绑定到特定支持的硬件。
已经探索的另一种机制是使用软件断点,在其中,访问存储器的每个跟踪操作(例如,对存储数据的存储器的读取或写入,或者从存储程序代码的存储器执行的读取/提取)都附带有附加代码指令,其检查访问是否会导致遇到断点。然而,附带具有严重的缺点,即无论该存储器访问是否实际遇到断点,在每次存储器访问时都会检查是否出现断点。在许多环境中,附带的代码指令的执行导致针对每次存储器访问都使用数十到数百个附加的处理器周期,这对人类用户可感知的重放性能具有显著的不利影响。
发明内容
本文描述的至少一些实施例涉及使用高速缓存(例如,硬件或仿真处理器的高速缓存或者一些其他高速缓存存储器结构)来检测何时发生对正被监视或监测的存储器地址的访问(例如,用于读取、写入或取出/执行)。换句话说,本文的实施例通过高速缓存的使用提供有效的断点检测,极大地限制了需要执行断点检查的存储器访问操作的数量。如本文所述,实施例使得能够在发生高速缓存未命中时执行断点检查。因此,本文的实施例不是对每个存储器访问都执行断点检查,而是将断点检查限制为仅导致发生高速缓存未命中的存储器访问。与现有解决方案相比,本文的实施例可以在跟踪重放期间检测断点时极大地减少由调试器引起的开销(例如,检查断点发生的额外处理器周期)。
在一些实施例中,通过使用高速缓存来监测存储器位置包括标识要被监测的存储器地址,并且至少基于标识所述存储器地址,将所述存储器地址存储在监测列表中并确定与所述存储器地址重叠的(多个)任何高速缓存行是否已经存在于高速缓存中。如果高速缓存中确实存在(多个)任何这样的高速缓存行,则将它们从所述高速缓存中逐出。当检测到基于存储器访问操作发生高速缓存未命中时,该实施例包括确定基于所述高速缓存未命中导入到所述高速缓存中的另一高速缓存行的一部分是否与存储在所述监测列表中的所述存储器地址重叠。当导入的高速缓存行的所述部分确实与所述存储器地址重叠时,将处理对所述存储器地址的一个或多个监测操作,并从所述高速缓存中逐出所述导入的高速缓存行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软技术许可有限责任公司,未经微软技术许可有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201780083409.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:可执行代码的推测重放
- 下一篇:集成应用问题检测和改正控制