[发明专利]使用轻量进程快照的功能评估有效
申请号: | 201380041514.5 | 申请日: | 2013-08-01 |
公开(公告)号: | CN104520820B | 公开(公告)日: | 2018-02-06 |
发明(设计)人: | J·戴维斯;T·H·金 | 申请(专利权)人: | 微软技术许可有限责任公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F11/14;G06F11/30 |
代理公司: | 上海专利商标事务所有限公司31100 | 代理人: | 顾嘉运 |
地址: | 美国华*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 使用 进程 快照 功能 评估 | ||
技术领域
本发明涉及功能评估,尤其涉及使用轻量进程快照的功能评估。
背景技术
对调试程序中的进程状态的检查传统上使用两种方法之一:进程外检查和进程内检查。在进程外检查中,调试程序通过读取被调试程序存储器或通过消费被调试程序上下文,获取变量的值。对于进程内检查,调试程序通过实际在被调试程序进程内执行属性函数,评估属性。此进程内检查在调试程序语法中叫做功能评估或“func-eval”。两个方法都具有优点和缺点。
在进程外检查模型中,调试程序不能损坏被调试程序的状态。开发人员看见被调试程序状态的原始视图,该视图倾向于处于比API设计人员计划的抽象更低级别。这是因为,调试程序只能在属性的备用值(backing values)在被调试程序存储器中可被访问的情况下,获取它们。例如,如果计算属性的值,则调试程序只能示出在计算中所使用的原始变量。
不能以此方式读取具有依赖于被调试程序的存储器外面的状态的值的属性,所述状态包括诸如与其他进程(在存储器中或在存储介质上)共享的状态,来自某种其他连接的设备、可移动存储器的状态,等等。不能以此方式读取的其他状态依赖的值是操作系统内核中的状态或跨机器实现的状态。进程外模型需要开发人员从作为原始变量可用的值中对API抽象的实现进行反向设计,这会是困难的,混淆的,或不可能进行。
对于进程内或func-eval模型,开发人员看见API设计人员计划的抽象的准确的视图。没有从实现到公共视图的映射是必需的。然而,在func-eval模型中,对于属性的实现的任何副作用都将影响被调试程序状态,这可能会导致开发人员混乱和不正确的被调试程序行为。被调试程序可能不在可以执行代码的状态,诸如接近内存不足的情况的高压力的进程或进程内的已经进入内核的线程。在此状态下,调试程序检查是不可能的。执行功能评估会导致被调试程序死锁或损坏。具体而言,如果属性的实现依赖于正在执行的其他线程。例如,如果一个属性试图获取另一线程持有的锁,则该属性不能执行,除非持有锁的线程释放它,导致死锁。
此外,在某些分布式环境所使用的代理/存根(stub)模型中,调用可能需要多个线程执行,以便允许另一线程“抽取”或处理来自正在执行func-eval的另一线程的传入的调用。允许进程中的其他线程运行(即,“错过”所述线程)是调试程序一般不能允许的事项,因为对于每一线程的实际执行点将在每一次func-eval时改变。这样的跨上下文调用会导致被调试程序的不可恢复的损坏,如果它们不能正确地完成。
发明内容
提供本发明内容是为了以精简的形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
使用操作系统中的轻量进程快照支持,调试程序创建被调试程序目标进程的副本,并针对副本执行func-eval检查。这使目标进程中的大多数被调试程序状态保留原样,因为由func-eval作出的任何更改都是快照副本本地的。在func-eval期间任何灾难性故障,诸如死锁被调试程序进程,具有最小的影响,因为原始进程未被触及,可以简单地扔掉并重新创建快照。可以对进程快照执行对于被调试程序进程来说太过破坏性的调试程序操作,而不会威胁真正的进程。例如,在func-eval期间错过所有线程是一个这样的情况。
例如,在在其中对象之间的调用可以遍历线程边界的分布式环境中,诸如COM中的单线程套间,需要错过所有线程。对这样的对象执行普通func-eval将死锁—并可能损坏—被调试程序进程,因为目标线程将不会运行。然而,允许所有线程运行(“错过”)意味着,在func-eval完成之后,进程的状态可能急剧地改变。此外,在错过线程时产生的诸如断点或异常之类的重要的调试程序事件,可能被忽略,因为调试程序此时将不希望进入中断状态。进程快照允许调试程序在错过所有线程的同时时执行func-eval,并且不丢失原始被调试程序进程的实际状态。
调试程序使用轻量进程快照来隔离func-eval的副作用。当func-eval副作用不再反映目标进程时,或快照被损坏以致于它不再能被使用时,调试程序还可以创建目标被调试程序进程的新的轻量进程快照。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软技术许可有限责任公司,未经微软技术许可有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201380041514.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:共享在线媒体印象数据的方法和设备
- 下一篇:连续部署管道中的性能测试