使用轻量进程快照的功能评估的制作方法_3

文档序号:8207706阅读:来源:国知局
虚拟存储器页面表407。虚拟存储器407指向由操作系统的虚拟存储器管理器409管理的物理存储器页面408。
[0049]调试程序进程401控制被调试程序进程402的执行,并可以挂起进程或允许进程运行。当用户希望对被调试程序进程执行功能评估时,调试程序进程401请求操作系统创建被调试程序进程402的轻量进程快照410。快照410包括线程表411和模块表412,它们是当创建快照410时被调试程序进程402上的线程和模块列表的副本。虚拟存储器页面表413指向在当快照410被创建时正在使用的物理存储器页面408。最初,虚拟存储器413和虚拟存储器407将等同。
[0050]然后,调试程序进程在错过在被调试程序进程402上的线程的同时针对进程快照410执行功能评估。如果进程快照410失败或由于功能评估具有其他问题,那么,那些问题将不会影响真正的被调试程序进程402。如果产生问题,则调试程序进程401会丢弃进程快照410,并请求操作系统创建新进程快照。
[0051]在操作系统支持创建、引导,以及恢复虚拟机的情况下,调试程序可以生成包含正在运行被调试程序进程的机器的完整的副本的新的虚拟机。然后,调试程序可以针对在虚拟机上运行的进程快照执行func-eval。这将允许完全隔离的外部状态,诸如内核句柄和文件写入。可以,例如,使用微软公司的Drawbridge微微进程创建轻量虚拟机来创建虚拟机,在轻量虚拟机中,操作系统实现驻留在被调试程序进程内,这允许内核状态被隔离。
[0052]调试程序可以使用虚拟机技术来针对正在运行被调试程序进程的机器的整个副本执行func-eval以代替仅针对进程快照。这允许隔离只使用进程快照不可能隔离的内核模式副作用以及外部副作用,诸如文件写入。此模型在此被称为“机器快照”。此模型需要支持非常快地创建、引导,以及回退虚拟机的极快的虚拟机技术。一个这样的新兴技术是微软公司的Drawbridge虚拟机模型。
[0053]如此处所使用的,轻量机器快照涵盖主机的宽泛的范围的副本,被调试程序进程需要变化的隔离和主机数据量。在一个实施例中,轻量机器快照是被调试程序主机的完全快照或副本。在其他实现中,机器快照可以是被调试程序进程以及内核的大部分的副本,而不是系统上别的事物。其他实现可以使用:单一被调试程序进程的快照,带有内核状态的进程快照,被调试程序机器上的一切,或多个主机。
[0054]图5示出了根据一实施例的在允许真正的被调试机器继续在主机上运行的同时调试程序针对轻量机器快照执行功能评估。主机501正在运行调试程序进程502,该调试程序进程502被用于调试也在主机501上运行的被调试程序进程503。用户界面以及调试程序进程501上的调试程序引擎允许用户与被调试程序进程503的组件进行交互并分析它们。被调试程序进程503中的虚拟存储器指向由操作系统的虚拟存储器管理器505管理的物理存储器页面504。
[0055]调试程序进程502控制被调试程序进程503的执行,并可以挂起进程或允许进程运行。当用户希望对被调试程序进程执行功能评估时,调试程序进程502请求操作系统创建虚拟机快照506。
[0056]虚拟机快照506是正在运行被调试程序进程503的主机501的完整的副本。虚拟机快照506包括进程快照507,该进程快照507是在虚拟机快照被创建时被调试程序进程503的完整的副本。进程快照506包括线程表模块表,这些表是当创建机器快照506时被调试程序进程503上的线程和模块列表的副本。虚拟存储器页面表507不指向主机存储器中的物理存储器页面504,而是指向虚拟机上的存储器页面508。虚拟机快照还包括内核状态509和从主机501复制的文件510。
[0057]在错过被调试程序进程503上的线程的同时,调试程序进程502针对虚拟机快照506执行功能评估。如果机器快照506失败或由于功能评估具有其他问题,那么,那些问题将不会影响真正的被调试程序进程503或在主机501上运行的任何其他进程。任何内核模式副作用或外部副作用,诸如文件写入,与虚拟机快照506隔离。如果产生问题,则调试程序机器502会丢弃机器快照506,并请求操作系统创建新机器快照。
[0058]图6示出了使用轻量进程快照的进程内的调试会话。调试程序进程601启动与被调试程序进程603的调试会话(602)。调试程序601请求(604)操作系统605创建被调试程序603的第一进程快照606。
[0059]调试程序601对进程快照606执行func-eval (607),它执行功能(608)并返回结果(609)ο
[0060]然后,调试程序601对进程快照606执行损坏func-eval (610),它执行功能(611)并返回结果(612)。在执行功能(611)之后,进程快照606损坏。如此,调试程序601丢弃进程快照606,并请求(613)操作系统605创建第二进程快照614。
[0061]在没有错过的情况下执行func-eVal608和611之后,在第一进程快照606死锁之后调试程序601创建第二进程快照614。然后,调试程序601对进程快照614执行线程错过func-eval (615),它在所有线程正在在被调试程序进程602中错过时执行功能(616)。快照进程614返回结果(617)。由于在快照进程614执行功能的同时被调试程序进程603中的所有线程已错过,因此,快照进程614不再是被调试程序进程603的准确的副本。相应地,调试程序601丢弃进程快照614,并请求(618)操作系统605创建第三进程快照619。
[0062]然后,调试程序601对进程快照619执行func-eval (620),它执行功能(621)并返回结果¢22)。用户可以指示(623)调试程序601丢弃进程快照619,并创建新的快照。然后,调试程序601丢弃进程快照619,并请求(624)操作系统605创建第四进程快照625。
[0063]调试程序601对进程快照625执行线程错过func-eval (626),它在所有线程正在在被调试程序进程602中错过的同时执行功能¢27)。快照进程625返回结果¢28)。
[0064]当func-eval完成时,调试程序601结束调试(629)。
[0065]如果操作系统605支持虚拟机快照的创建,那么,进程快照606、614、609以及625可以被替换为轻量机器快照,以进一步保护并隔离被调试程序603。
[0066]图7示出了在其上面可以使用轻量进程快照来实现用于进程内的调试的图1-6的示例的合适的计算和网络环境700的示例。计算系统环境700只是合适计算环境的一个示例,而非意在暗示对本发明使用范围或功能有任何限制。本发明可用各种其他通用或专用计算系统环境或配置来操作。适用于本发明的公知的计算系统、环境和/或配置的示例包括,但不仅限于:个人计算机、服务器计算机、手持式或膝上型设备、平板计算机设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机、大型计算机、包括上面的系统或设备中的任何一种的分布式计算环境等等。
[0067]本发明可在诸如程序模块等由计算机执行的计算机可执行指令的通用上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。本发明也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和/或远程计算机存储介质中。
[0068]参考图7,用于实现本发明的各方面的示例性系统可包括计算机700形式的通用计算设备。组件可以包括,但不仅限于,各种硬件组件,诸如处理单元701、诸如系统存储器之类的数据存储器702,以及将包括数据存储器702的各种系统组件耦合到处理单元701的系统总线703。系统总线703可以是若干类型的总线结构中的任一种,包括使用各种总线体系结构中的任一种的存储器总线或存储器控制器、外围总线、以及局部总线。作为示例而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线,以及也称为夹层(Mezzanine)总线的外围部件互连(PCI)总线。
[0069]计算机700通常包括各种计算机可读介质。计算机可读介质704可以是能由计算机700访问的任何可用介质,并包含易失性和非易失性介质以及可移动、不可移动介质,但是,不包括传播的信号。作为示例而非限制,计算机可读介质704可包括计算机存储介质和通信介质。计算机存储介质
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1