当前位置: 首页 > 专利查询>微软公司专利>正文

n路运行时互操作调试制造技术

技术编号:9741989 阅读:156 留言:0更新日期:2014-03-07 05:08
在多种类型的运行时环境中运行的同时代码调试可以由n路互操作调试环境来执行。在特定运行时内运行的代码可以与其他运行时内运行的代码同时在单个进程内被调试。提供对检查和执行控制的进程外调试支持。兼容调试器或运行时通信协议被使用。从一个运行时到另一运行时的转移可被检测到。在一个运行时中抛出的异常可被另一个运行时捕获。步进操作可在多个运行时中发生。包括来自多个运行时的各帧的调用栈可被走查。

【技术实现步骤摘要】
【国外来华专利技术】n路运行时互操作调试背景在调试进程时,可生成调试事件。调试器通常监听调试事件,并对调试事件作出响应。调试事件可以在进程被创建时、在模块被加载时、在异常被抛出时、及在断点被遇到时等被创建。调试器使用调试事件和检查应用编程接口(API)来实现调试操作。在调试事件被分派时,被调试程序(被调试的进程)通常被停止,直到调试器继续调试事件。在被调试程序被停止时,调试器可以检查该被调试程序的状态。当被调试程序被继续时,该进程运行,直到下一个调试事件被遇到。通常,托管代码调试和本机代码调试具有不同的调试事件集合,和在停止状态和运行状态之间的不同转移方式。本机调试通常由操作系统(OS)来实现。该OS提供用于监听和继续调试事件的调试API。在调试事件发生时,OS冻结被调试程序(正被调试的进程)。本机调试是进程外操作,即该进程被冻结并且该进程之外的代码(在OS中)检查来自被冻结进程的值。进程外调试不需要来自被调试程序的协作。本机被调试程序停止状态被称为冻结,因为该进程已被OS停止,并且没有代码在该进程内部执行,直到OS再次启动该进程。操作系统不对已冻结进程执行虚拟机环境中(例如,Eclipse中或微软的Visual Studio?中)的调试。虚拟机环境中的调试通常由虚拟机的运行时环境来实现,并且是进程中操作。进程内部的代码执行以进行调试操作。OS没有该类型的调试何时发生的知识。被调试程序停止状态有时被称为“同步的”,因为从OS的角度来看同步进程是活的,但所有这些线程都被运行时环境停止。虚拟机调试事件可以被“构建在”本机调试事件“的上方”或使用本机调试事件来实现。虚拟机运行时服务实现虚拟机调试操作,而不实现本机调试操作。类似地,本机调试API不提供对虚拟机环境中的调试的支持。虚拟机环境中的调试操作和本机调试操作被不同地实现。例如,在Visual Studio?中,托管步进由运行时环境API来实现,而本机步进由消费本机调试事件的本机调试库来实现。本机执行控制(对步进操作和断点的控制)通常使用OS异常处理来实现,并且在本机调试API中缺少显式支持。托管调试API显式地具有断点和步进功能。托管调试的抽象层和本机调试的抽象层中的差异防止在托管调试操作和本机调试操作之间的代码共享。某些IDE能够在单个调试会话中调试在虚拟机运行时环境中以及在本机运行时中运行的代码。这被称为互操作调试。由于底层的冲突调试架构设计,在已知的互操作调试器中使用的机制是受限的,并且依赖于本机运行时调试器和虚拟机运行时调试器之间单调而脆弱的操作。概述对在多种类型的运行时环境中运行的、单个被调试程序进程内的代码的调试可以使用可扩展调试架构在相同的调试会话中同步执行。这样的同步调试在此被称为n路互操作调试。N路互操作调试可以提供包括在单个被调试程序进程中(在单个调试会话)执行的所有运行时环境的逻辑视图在内的整个被调试程序进程的整体视图。各运行时调试器之间的交互也可被查看。对虚拟机运行时环境的调试支持允许使用一组调试器接口来促进调试操作的互操作调试。虚拟机运行时环境所创建的调试支持不会干预对该进程中的其他运行时被调试程序的调试。互操作调试允许执行控制、使从一个运行时运行的被调试程序代码步进到另一运行时、在多个运行时被调试程序中设置断点、检查来自多个运行时被调试程序的值、以及执行包含来自多个运行时调试器的代码的调用栈。运行时调试器被排定优先级,使得最高优先级的运行时调试器控制执行并展开这个栈。符合的运行时被调试程序可以由n路互操作调试器互操作地调试。符合的运行时被调试程序是使用对检查和执行控制的进程外调试支持、使用兼容的调试器/被调试程序通信协议、可以为执行控制和栈展开检测运行时被调试程序之内和之外的边界的被调试程序。对于抛出异常的那些运行时被调试程序,各兼容的运行时调试器可以检测出从一个运行时被调试程序抛出并在另一个运行时被调试程序内捕获的异常。进程外调试不会涉及被调试程序进程中的执行代码,使得各运行时不会干预彼此的线程模型或执行模型。符合的运行时调试器可以被插入到n路互操作调试器中。在此描述的各接口和各机制可用作用于步进调试器中的各操作的通用可扩展性模型。提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的选择的概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。附图简述在附图中:图1示出了根据此处所公开的主题的各方面的用于n路互操作调试的系统100的示例;图2a是根据此处所公开的主题的各方面的用于n路互操作调试的方法200的示例的流程图;图2b示出了根据此处所公开的主题的各方面的走查调用栈250的方法的示例;图2c示出了根据此处所公开的主题的各方面的处理异常270的方法的示例;图3是根据此处所公开主题的各方面的计算环境的示例的框图;以及图4是根据此处所公开的主题的各方面的集成开发环境的示例的框图。详细描述概览根据此处所公开的主题的各方法,描述了可以用进程中的任何兼容运行时调试器互操作地调试的运行时调试器架构。在n路互操作兼容运行时被调试程序上运行的代码可以使用进程外操作来调试。可以使用不要求在被调试程序进程内执行代码的OS原语从被调试程序进程的外部执行包括但不限于数据检查、执行控制和栈展开的核心调试器操作。部分由于在运行时被调试程序进程中执行代码可以在该进程被停止时生成更多调试事件,以及出于其他原因,避免在运行时被调试程序进程中执行代码。进程外调试确保多个运行时被调试程序不会在调试时间干预彼此的线程模块。它还确保了检查被调试程序进程内的运行时将不会导致其他运行时调试器无法处理的副作用。读/写进程存储器原语允许调试器读存储器/将存储器写入被调试程序进程。获取并设置线程上下文原语允许访问并修改被调试程序进程中的寄存器设置。写在OS原语上方的调试器原语包括断点和单步指令。单步操作告诉处理器执行单个指令,随后停止并通知调试器。调试API可以向调试器通知被调试程序进程中发生的一组事件,包括进程创建和破坏、模块加载和卸载、断点命中、单步完成、异常发生。来自通信信道的通知也使用进程外模型来完成,使得在断点被命中时,通知被发送到调试器,而不在被调试程序进程中运行代码。被调试程序进程和进程外调试器之间的兼容协议被用于与n路互操作调试兼容的运行时。即,运行时被调试程序向调试器通知在被调试程序进程中调试事件已以不会导致其他运行时调试器失灵或无法通信的方式发生。可使用的与n路互操作调试兼容的一个协议是微软公司所创建的Win32?调试事件模型。该进程中与n路互操作兼容的各运行时被调试程序之间的边界在运行时调试器控制调试操作时是可识别的。例如,如果在运行时调试器A上运行的代码调用在运行时调试器B上运行的代码,则运行时调试器B可以检测到控制已被转移到运行时调试器B中,并且运行时调试器B可以接管控制调试操作。支持异常模型的与n路互操作调试兼容的各运行时调试器能够标识异常何时被其运行时调试器捕获。异常可以起源于一个运行时调试器,并可在另一个运行时调试器中被捕获。例如,假设在运行时被调试程序A上运行的代码调用在运行时被调试程序B上运行的代码,并且用户正步进通过在运行时被调试程序B上运行的代码。如果在该步进操作发生时抛出了异常,则本文档来自技高网...

【技术保护点】
一种系统,包括:计算设备的处理器和存储器;以及n路互操作调试器,该n路互操作调试器包括被配置成使得所述计算设备的处理器互操作地调试在单个被调试程序进程中执行的与n路互操作调试器兼容的多个运行时被调试程序的多个模块,所述n路互操作调试器提供所述单个被调试程序进程的整体视图,所述n路互操作调试器包括:步进管理器模块,所述步进管理器模块包括所述多个运行时被调试程序的通信信道,所述步进管理器模块执行包括以下的最高级步进仲裁:按优先级次序联系所述多个运行时被调试程序中的至少一个;从所述多个运行时被调试程序中声明对当前调试指令的所有权的所联系的运行时被调试程序接收响应,该声明运行时被调试程序包括当前控制运行时;向所述多个运行时被调试程序通知该当前控制运行时;以及调试监视器模块,所述调试监视器模块基于所述n路互操作调试器和所述多个运行时被调试程序之间通用协议将调试事件路由到相应的运行时调试器。

【技术特征摘要】
【国外来华专利技术】2011.06.24 US 13/167,7291.一种系统,包括: 计算设备的处理器和存储器;以及 n路互操作调试器,该n路互操作调试器包括被配置成使得所述计算设备的处理器互操作地调试在单个被调试程序进程中执行的与n路互操作调试器兼容的多个运行时被调试程序的多个模块,所述n路互操作调试器提供所述单个被调试程序进程的整体视图,所述n路互操作调试器包括: 步进管理器模块,所述步进管理器模块包括所述多个运行时被调试程序的通信信道,所述步进管理器1旲块执行包括以下的最闻级步进仲裁: 按优先级次序联系所述多个运行时被调试程序中的至少一个; 从所述多个运行时被调试程序中声明对当前调试指令的所有权的所联系的运行时被调试程序接收响应,该声明运行时被调试程序包括当前控制运行时; 向所述多个运行时被调试程序通知该当前控制运行时;以及 调试监视器模块,所述调试监视器模炔基于所述n路互操作调试器和所述多个运行时被调试程序之间通用协议将调试事件路由到相应的运行时调试器。2.如权利要求1所述的系统,其特征在于,所述步进管理器模块通过以下步骤为所述调试操作选择当前控制运行时: 按优先级次序联系所述多个运行时被调试程序中的至少一个; 从所述多个运行时被调试程序中声明对当前调试指令的所有权的所联系的运行时被调试程序接收响应,该声明运行时被调试程序包括当前控制运行时;以及向所述多个运行时被调试程序通知该当前控制运行时。3.如权利要求1所述的系统,其特征在于,所述多个运行时被调试程序中的至少一个是虚拟机运行时被调试程序、解释运行时被调试程序或本机运行时被调试程序。4.如权利要求1所述的系统,其特征在于,调试操作包括: 将被调试程序代码运行从一个运行时被调试程序步进到另一调试运行时; 在多个运行时被调试程序中设置断点; 检测来自多个运行时被调试程序的值; 执行包括来自所述多个运行时被调试程序的代码的调用栈。5.一种方法,包括: 由在处理器上...

【专利技术属性】
技术研发人员:J·M·戴维斯G·B·米斯凯利
申请(专利权)人:微软公司
类型:
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1