[发明专利]实现整个数据结构上的断点有效
申请号: | 201880018952.2 | 申请日: | 2018-03-13 |
公开(公告)号: | CN110431536B | 公开(公告)日: | 2023-06-02 |
发明(设计)人: | J·莫拉;W·R·梅斯默 | 申请(专利权)人: | 微软技术许可有限责任公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京世辉律师事务所 16093 | 代理人: | 王俊 |
地址: | 美国华*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 实现 整个 数据结构 断点 | ||
实现整个数据结构上的断点包括用于在由数据结构覆盖的多个存储器地址上设置断点的方法、系统和计算机程序产品。一个实施例包括:接收对针对其请求断点的数据结构的引用,并且然后基于该引用来标识数据结构的数据结构布局。基于数据结构的数据结构布局,标识由该数据结构覆盖的多个存储器地址,以及将多个存储器地址添加到断点列表。
背景技术
当在软件应用的开发期间编写代码时,开发者通常花费大量时间“调试”代码以找到代码中的运行时错误。在这样做时,开发者可以采取若干方法来重现和定位源代码程式错误(bug),诸如基于不同输入来观察程序的行为、插入调试代码(例如,以打印变量值、以跟踪执行分支等)、临时移除代码部分等。跟踪运行时错误以查明代码程式错误可能会占用应用开发时间的很大一部分。
已经开发了许多类型的调试软件应用(“调试器”)以便帮助开发者进行代码调试过程。这些工具给开发者提供了追踪、可视化和更改计算机代码执行的能力。例如,调试器可以可视化代码指令的执行,可以在代码执行期间的不同时间呈现变量值,可以使开发者能够更改代码执行路径,和/或可以使开发者能够设置“断点”和/或“监测点”。
对于大多数调试器,当到达计算机代码中的指定点(即,特定代码指令)时触发“断点”,并且当指定数据元素的值已经改变或被访问时触发“监测点”。当断点或监测点触发时,调试器暂停主体代码的执行,并且呈现该点处的程序状态。为了实现断点/监测点,调试器标识与感兴趣项目相关联的存储器地址(例如,与用于断点的代码指令相关联的存储器地址、或与用于监测点的数据元素相关联的存储器地址),并且然后监测对该地址的访问。虽然断点和监测点是不同的,但为了简单起见,它们在本文中都被统称为断点。因此,如本文所使用的,“断点”是指使特定存储器地址被监测、并且基于检测到对所监测的存储器地址的访问来暂停代码执行的任何调试器功能性。
当监测存储器访问时,调试器可以利用由处理器架构提供的断点功能性(例如,致力于断点功能性的特殊处理器寄存器),和/或可以探测(instrument)正在被执行的代码,使得访问存储器的每个操作(例如,对存储数据的存储器的读取或写入、或者用于从存储程序代码的存储器执行的读取/提取)用附加的代码指令被探测,该附加的代码指令检查该访问是否会使断点被触发。
如上文所指示的,调试器使断点能够被设置在特定的代码指令上(例如,通常对应于功能边界、流控制语句、变量赋值和实例化等),和/或被设置在指定的数据元素自身上,指定的数据元素诸如语言原语(例如,整数、布尔、字符、字符串、引用等)、复合数据结构(例如,数组、记录、联合等)、抽象数据结构(例如,容器、列表、树、图等)、或诸如类的实例之类的其他定制数据结构。当在指定的数据元素上设置断点时,调试器在主体数据元素的基本存储器地址上设置断点。因此,例如,链表上的断点得到链表头部的存储器地址上的断点,数组上的断点得到数组中第一个元素的存储器地址上的断点,类的实例上的断点得到引用该实例的存储器地址上的断点等。
发明内容
本文描述的至少一些实施例扩展了断点功能性,使得数据结构上的断点的添加可以将断点添加到由该数据结构覆盖的多个存储器地址(即,直到整个数据结构),而不是仅添加到该数据结构的基本存储器地址。因此,实施例可以使调试器能够在与数据结构相关联的任何存储器地址在执行期间被访问(读取和/或写入)时,暂停代码执行。
断点可以被配置为在以下情况下触发:当被访问的存储器地址与被存储在数据结构中的数据相关联时,和/或当被访问的存储器地址与该数据结构本身的物理存储器布局相关联时。这使得调试器能够在数据结构内的数据改变时(例如,以基于在数据结构的概念视图内可见的变化而中断),和/或在数据结构的物理存储器布局改变时(例如,以基于在数据结构的物理视图内可见的变化而中断)暂停执行。
为了完成上述目的,当数据结构上的断点被请求时,实施例操作以:不仅标识数据结构的基本存储器地址,还标识由数据结构覆盖的所有存储器地址。然后,可以将这些存储器地址中的全部(或子集)添加到断点列表,以便断点在这些存储器地址中的任何存储器地址被访问时触发。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软技术许可有限责任公司,未经微软技术许可有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201880018952.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种用户画像的生成方法及装置
- 下一篇:模糊处理增强型存储器加密