-
公开(公告)号:CN117112134A
公开(公告)日:2023-11-24
申请号:CN202311076802.6
申请日:2018-03-26
申请人: 微软技术许可有限责任公司
发明人: J·莫拉
摘要: 实施方式涉及虚拟化层捕获由虚拟化层所管理的VM的可重放运行跟踪。可以在由虚拟化层管理的任何运行单元上执行运行跟踪,运行单元例如线程、进程、虚拟处理器、个体VM、多个VM等。被跟踪的运行单元可以并行运行。运行跟踪涉及将以下各项捕获到缓冲区中:运行的指令、输入到指令的存储器、由指令输出的存储器、指令接触的寄存器和排序标记。可以以块捕获跟踪数据,其中保留了因果关系,并且保留了块之间但不必是块内的排序。可以通过在上下文切换之间插入单调递增的标记来描绘块,由此对块进行相对排序。可以通过标识非确定性事件而部分地提供确定性。VM跟踪对客户软件是透明的,客户软件不需要感知。备选地,客户可以与虚拟化层对接以控制跟踪功能性。
-
公开(公告)号:CN117043754A
公开(公告)日:2023-11-10
申请号:CN202280023138.6
申请日:2022-03-21
申请人: 微软技术许可有限责任公司
发明人: J·莫拉
IPC分类号: G06F12/0811
摘要: 经由参考转换后备缓冲器(TLB)条目来压缩执行追踪内的存储器地址。一种微处理器标识TLB槽内的TLB条目,该TLB条目将虚拟存储器页映射到物理存储器页。微处理器通过启动对虚拟存储器页的至少一个虚拟地址的记录以及从多个活动的TLB条目中唯一地标识TLB条目的标识符的记录,来启动对TLB条目的记录。随后,微处理器标识存储器高速缓存槽内的高速缓存条目,该高速缓存条目包括对应于高速缓存线的物理存储器地址。微处理器通过将物理存储器地址的物理存储器页标识部分与TLB条目相匹配来启动高速缓存条目的记录,然后启动至少针对TLB条目的标识符和偏移部分的记录。
-
公开(公告)号:CN110431536B
公开(公告)日:2023-06-02
申请号:CN201880018952.2
申请日:2018-03-13
申请人: 微软技术许可有限责任公司
IPC分类号: G06F11/36
摘要: 实现整个数据结构上的断点包括用于在由数据结构覆盖的多个存储器地址上设置断点的方法、系统和计算机程序产品。一个实施例包括:接收对针对其请求断点的数据结构的引用,并且然后基于该引用来标识数据结构的数据结构布局。基于数据结构的数据结构布局,标识由该数据结构覆盖的多个存储器地址,以及将多个存储器地址添加到断点列表。
-
公开(公告)号:CN115408291A
公开(公告)日:2022-11-29
申请号:CN202211112111.2
申请日:2017-11-06
申请人: 微软技术许可有限责任公司
发明人: J·莫拉
IPC分类号: G06F11/36
摘要: 本公开的各实施例涉及用于时间旅行调试和分析的计算机系统、计算机系统处实施的方法和硬件存储设备。使用高速缓存数据来记录对可执行实体的执行的可重放跟踪包括:跨一个或多个处理器的一个或多个处理单元并发执行可执行实体的一个或多个线程。在一个或多个线程的执行期间,独立地为每个线程记录分离的可重放跟踪。针对每个线程,记录包括记录针对该线程的初始处理器寄存器状态。针对每个线程,记录还包括在检测到处理器数据高速缓存未命中时,记录被导入到处理器数据高速缓存中的至少一行高速缓存数据。记录还包括通过记录其副作用来记录至少一个事件的发生。
-
公开(公告)号:CN109964207B
公开(公告)日:2022-09-27
申请号:CN201780069596.2
申请日:2017-11-06
申请人: 微软技术许可有限责任公司
发明人: J·莫拉
摘要: 使用高速缓存数据来记录对可执行实体的执行的可重放跟踪包括:跨一个或多个处理器的一个或多个处理单元并发执行可执行实体的一个或多个线程。在一个或多个线程的执行期间,独立地为每个线程记录分离的可重放跟踪。针对每个线程,记录包括记录针对该线程的初始处理器寄存器状态。针对每个线程,记录还包括在检测到处理器数据高速缓存未命中时,记录被导入到处理器数据高速缓存中的至少一行高速缓存数据。记录还包括通过记录其副作用来记录至少一个事件的发生。
-
公开(公告)号:CN114424171A
公开(公告)日:2022-04-29
申请号:CN202080065438.1
申请日:2020-06-17
申请人: 微软技术许可有限责任公司
发明人: J·莫拉
IPC分类号: G06F11/36
摘要: 利用差异图进行跟踪索引和重放。重放以第一指令开始且以第二指令结束的跟踪的指令的子集以获得一个或多个命名资源的状态。基于重放指令的子集,生成差异图,该差异图被结构化为使得在第一指令处的差异图的添加将一个或多个命名资源带到第二状态,并且在第二指令处的差异图的减去将一个或多个命名资源带到第一状态。到达目标指令的一部分,稍后在第一指令处添加差异图以在第二指令处恢复第二状态,或者在第二指令处减去差异图以恢复第一指令的第一状态。
-
公开(公告)号:CN114245892A
公开(公告)日:2022-03-25
申请号:CN202080056933.6
申请日:2020-06-11
申请人: 微软技术许可有限责任公司
发明人: J·莫拉
IPC分类号: G06F11/36
摘要: 确定函数内部加载修改是否影响被追踪的函数的所述输出。函数在实体的先前执行的被追踪部分内被标识。该函数包括可执行指令序列,并且产生一个或多个输出。由该函数的被追踪的实例产生的(多个)追踪的输出数据值被确定,并且该可执行指令序列内的执行从存储器的加载的可执行指令被标识。该函数的执行被仿真,同时用不同的存储器值替换在所述函数的被追踪的实例期间由所述可执行指令加载的追踪存储器值,并且同时产生(多个)仿真的输出数据值。基于在(多个)被追踪的输出数据值与(多个)仿真的输出数据值之间存在差异,通知在用户接口处或者向软件组件被生成。
-
公开(公告)号:CN113785284A
公开(公告)日:2021-12-10
申请号:CN202080032369.4
申请日:2020-04-01
申请人: 微软技术许可有限责任公司
发明人: D·迈尔斯 , J·M·戴维斯 , T·莱 , A·R·斯特兰德 , D·陈 , P·L·尼尔森 , J·莫拉 , J·C·亚雷瓦罗·巴埃扎 , J·M·平克顿 , L·Y·理查森 , K·W·塞克斯
摘要: 基于历史调试追踪来标识和报告潜在数据不一致和/或潜在数据争用。基于线程的重放,一些实现观察值到存储器单元的流入,并且确定从流入中观察的存储器单元的值是否与线程所已知的存储器单元的先前值不一致。如果是这样,则这些实现可以发起数据不一致的指示。基于多个线程的重放,其他实现标识在线程同步机制在第一线程上有效时由第一线程访问的存储器单元。然后,如果由第二线程在未使用线程同步机制的情况下对存储器单元进行了另一访问,则这些实现可以发起潜在数据争用的指示。
-
公开(公告)号:CN113632067A
公开(公告)日:2021-11-09
申请号:CN202080021023.4
申请日:2020-03-12
申请人: 微软技术许可有限责任公司
发明人: J·莫拉
IPC分类号: G06F11/36
摘要: 本公开涉及利用跟踪代码的记录执行来仿真非跟踪代码。例如,实施例访问第一可执行代码的先前执行的可重放记录执行。可重放记录执行包括一个或多个输入,该一个或多个输入在第一可执行代码的先前执行期间由一个或多个第一可执行指令消耗。与第一可执行代码不同的第二可执行代码也被访问。第二可执行代码的执行未被记录在可重放记录执行中。使用来自可重放记录执行的一个或多个输入来仿真第二可执行代码的执行。实施例可以报告第二可执行代码的仿真执行与第一可执行代码的先前执行之间的差异,或者可以报告第二可执行代码的仿真执行与第一可执行代码的先前执行之间的等效性。
-
公开(公告)号:CN112368684A
公开(公告)日:2021-02-12
申请号:CN201980043057.0
申请日:2019-06-18
申请人: 微软技术许可有限责任公司
发明人: J·莫拉
IPC分类号: G06F11/36 , G06F12/126 , G06F12/0802
摘要: 经由高速缓存执行断点检测包括:检测存储器访问的出现,以及标识高速缓存的任何高速缓存行是否与关联于存储器访问的地址相匹配。在确实有高速缓存行与关联于存储器访问的地址相匹配时,断点没有被遇到。在没有高速缓存行与关联于存储器访问的地址相匹配时,实施例标识是否有任何高速缓存行在一个或多个标志位被忽略时与关联于存储器访问的地址相匹配。在确实有高速缓存行在一个或多个标志位被忽略时与关联于存储器访问的地址相匹配时,实施例执行断点是否被遇到的检查。否则,实施例处理高速缓存未命中。
-
-
-
-
-
-
-
-
-