专利名称:计算群集上的调试器启动和附连的制作方法
技术领域:
本发明涉及调试器,尤其涉及计算群集上的调试器启动和附连。
背景技术:
背景和相关技术计算机和计算系统几乎影响着现代生活的每一方面。计算机一般涉及工作、消遣、 保健、交通、娱乐、家务管理等等。此外,计算系统功能还可以通过计算系统的经由网络连接互连到其他计算系统的能力来增强。网络连接可包括,但不仅限于,经由有线或无线以太网的连接,蜂窝式连接,或者甚至通过串行、并行、USB或其它连接的计算机到计算机的连接。这些连接允许计算系统访问其他计算系统上的服务,并快速且有效地从其他计算系统接收应用程序数据。互连的计算机可以用于实现群集计算。群集计算包括使用多个计算机来执行可能对于单个计算机执行而言过于巨大的作业。作业改为被细分,并且细分部分被发送给群集中的各个计算机系统。通常,群集是用头节点来实现的,该头节点接受作业并且将该作业或该作业的各部分分配给该群集中的计算节点。计算节点通常在专用网络中实现并且不能被专用网络之外的计算系统公开访问。头节点可以是专用网络和一个或多个公共网络二者的成员,使得头节点可以从可能希望向群集提交作业的外部客户机接受作业在计算系统中,经常发生系统崩溃或返回非预期结果方面的问题。为了确定系统崩溃或非预期结果的原因,使用各种调试技术。一些技术包括使用调试器。调试器可以是并排运行或者在执行代码下运行的软件应用程序。调试器可以用于在代码中步进(即执行离散数目的指令,并且然后在执行下一离散数目的指令以前等待用户输入)、在代码中设置断点以在执行代码时的某个点停止执行等等。然而,在群集系统中,鉴于开发者想要调试的系统可能处于该开发者可直接访问的系统之外的网络上,可能更加难以启动调试器。也就是说,开发者可能在公共网络上的客户机上使用开发者应用程序,而要调试的应用程序可能作为作业运行在公共网络上的客户机计算机不能直接访问的专用网络上的群集上。因此, 想要调试的系统可能不能直接提供调试器。相反,将调试器连接到在计算群集上执行的作业可能要求该群集的节点与客户机处于同一网络上和/或用户对该计算群集具有管理性访问ο此处所要求保护的主题不仅限于解决任何缺点的实施方式或只在诸如上文所描述的那些环境的环境中操作的实施方式。相反,此背景只示出了其中可以实施此处所描述的一些实施方式的一个示例性技术领域。
发明内容
在此所示的一个实施例可以在包括群集计算系统的计算环境中实施。该实施例包括具有启动调试进程的动作的方法。该方法包括在群集专用网络上的计算节点处,通过头节点的调度器从公共网络接收调试作业。头节点连接到群集专用网络和公共网络二者。公共网络处于群集专用网络之外。该方法还包括开始处理调试作业;并且作为结果,通过启动计算节点处的一个或多个调试器远程代理来发起调试。该方法还包括在计算节点处的所启动的调试器远程代理参与的情况下开始处理用户作业。向客户机通知所述一个或多个调试器远程代理已经为调试用户作业做好准备。客户机处的调试器客户端连接到所述一个或多个调试器远程代理。另一方法在包括群集计算系统的计算环境中实施。该实施例包括具有附连调试进程的动作的方法。该方法包括在执行用户作业的群集专用网络上的计算节点处,通过连接到群集专用网络和公共网络二者的系统从公共网络上的客户机接收启动调试作业的消息。 公共网络处于群集专用网络之外。该方法还包括开始处理调试作业;并且作为结果,通过启动计算节点处的一个或多个调试器远程代理来发起对用户作业的调试。向客户机通知所述一个或多个调试器远程代理已经为调试用户作业做好准备。客户机处的调试器客户端连接到所述一个或多个调试器远程代理。提供本发明内容以便以简化形式介绍将在以下的具体实施方式
中进一步描述的一些概念。本发明内容并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。本发明的附加特征和优点将在以下描述中阐述,且其一部分根据本描述将是显而易见的,或可通过对此处的原理的实践来获悉。本发明的特征和优点可通过在所附权利要求书中特别指出的工具和组合来实现和获得。本发明的特征将通过以下描述和所附权利要求书变得更加显而易见,或可通过对下文中所述的本发明的实践来获悉。附图简述为了描述可获得本主题的上述和其它优点和特征的方式,将通过参考附图中示出的本主题的具体实施方式
来呈现以上简要描述的本主题的更具体描述。可以理解,这些附图只描绘了典型实施方式,并且因此不被认为是对其范围的限制,将通过使用附图并利用附加特征和细节来描述和解释各实施方式,在附图中
图1示出了使用代理的调试器启动场景。图2示出了使用代理的调试器附连场景。图3示出了使用NAT转发的调试器启动场景。图4示出了使用NAT转发的调试器附连场景。图5示出了启动调试器的方法;以及图6示出附连调试器的方法。
具体实施例方式在此公开了包括用于群集的调试功能在内的各个实施例。实施例可以包括用于在调试器控制下启动作业的功能。或者,实施例可以包括用于将调制器附连到现有作业的功能。如所示那样,这些实施例中的一些可以在对计算节点没有直接的客户机访问或者在群集上没有管理特权的情况下实现这一点。图1是说明性的。图1示出了公共网络104上的客户机102。该客户机可能希望向群集提供作业。该群集可以具有诸如计算节点106之类的计算节点,这些计算节点执行与该工作相关联的作业。图1示出实施例通常将包括头节点110可向其分配作业的多个计算节点106。计算节点可以处于与公共网络104分开的专用网络108上。具体而言,专用网络108被与公共网络104分开,使得公共网络104上的系统不能直接与专用网络108上的系统通信。例如,这些网络可能具有不同的域。相反,客户机102通过中介提供作业和其他通信,该中介可以使用诸如头节点110 和/或路由节点112之类的一个或多个系统来实现。客户机102可以向中介提交作业,该中介然后将该作业转发给一个或多个计算节点106。客户机102所提交的作业可能在被计算节点106执行时导致错误。在此所述的实施例可以包括用于由客户机102在群集上发起调试以调试错误的功能。在一个示例中,这可以通过启动远程代理调试器,然后在调试器远程代理之上运行代码来完成。在一个说明性示例中,启动调试进程可以通过如下方式来执行由群集专用网络 106之外的公共网络104上的客户机102向诸如头节点110之类的中介发送具有调试任务的用户作业。头节点110可以为一个或多个计算节点106创建执行调试任务的作业。在计算节点106处执行调试器任务通过启动群集专用网络108上的一个或多个计算节点106处的一个或多个调试器远程代理114来发起对之前从客户机102(或其他某个系统)发送的用户任务的远程调试。然后,可以向客户机102通知远程代理114已经为调试做好准备。在一些实施例中,这可以通过使用路由节点112来完成,该路由节点112包括允许公共网络系统104调用专用网络108系统的代理。另外,客户机102可以具有调试器客户端。客户机 102处的调试器客户端可以例如通过路由节点112连接到调试器远程代理。下面示出了一个示例的附加细节。具体而言,在下面继续参考图1所列举的示例中,示出了可以使用包括开发者应用程序116的集成开发环境的实施例。开发者应用程序可以被开发者用于开发应用程序、尤其是针对群集计算的应用程序。在所示的具体示例中, 开发者应用程序116可以使用来自华盛顿州雷蒙德市的微软公司的Visual Studio 来实现。如在图1处所述,开发者应用程序116创建监听器118。监听器118打开端口 Dl 以促进通信。在一些实施例中,所分配的端口(以及在此所述的其他端口)可以是13225 至13719范围的端口,因为这些端口通常未分配。监听器118打开到作为本地管理员运行的路由节点112上的公知代理服务120的链接P。在一些实施例中,该代理可以基于配置数据或项目设置来选择。监听器118通过P向代理服务120发送初始化消息(该消息在此被示为InitProxy (D1,U)),其中U是用户的群集凭证。代理服务120利用用户凭证(U)来分叉代理实例,从而将其传递给Dl以及传递hitfroxy消息的回复上下文。注意,在一些实施例中,在此所述的所发送和接收的消息可以被加密。如在2所示,代理122为Dl打开到代理的112的Dlp并且为新代理请求打开端口 P1,并且将回复hitfroxyR印ly(Pl,Dlp)发送回监听器118。如在3处所示,监听器118将向头节点110处的调度器124发送新作业消息 NewJ0b(DebUgStart,Pl,Dlp)。该消息指定新调度器作业。在某个实施例中,用于由监听器进行路由的头节点110和调度器IM信息可以包括在配置数据和/或开发项目设置中。如在4处所示,调度器IM在每个计算节点106处创建运行DebugStart (Pl,Dlp) 的作业。如在5处所示,调试启动1 选择地址D2并且在该示例中通过调用msvsmon (D2,Ε)来启动合适的远程代理114,并且等待事件Ε。远程代理114启动并且打开D2以用于连接。远程代理114在其准备好在D2上进行接收时设置事件Ε。如在6处所示,调试启动126向代理122 (Pl)发送路由消息RouteTo (D2)。代理 122创建被代理端口 D2P。如在7处所示,代理用路由回复消息RouteToR印Iy (D2p)来响应调试启动126。如在8处所示,调试启动1 在Dlp处向代理122 (Pl)发送指示调试代理被启动的消息 DebugAgentStarted(D2p)。在9,代理122在Dl处将DebugAgentMarted消息转发给监听器118。监听器118 调用开发者应用程序116调试器,从而指示其在D 处连接到远程代理。如在10处所示,开发者应用程序调试器在1) 处打开与代理122的远程调试会话。如在11处所示,代理122在D2处打开与远程代理114的会话。代理122在两个方向上路由调试消息。开发者应用程序调试器通过代理122来指示远程代理114启动用户进程128。用户进程1 可以是要调试的进程。远程代理114启动并且返回标识出用户进程128的进程标识符。开发者应用程序调试器向监听器118通知该启动完成,并且向监听器118提供进程标识符pid。如在12处所示,监听器118在1) 处向代理122发送 DebugAgentStartedReply(pid)消息。如在13处所示,代理122将该回复转发给调试启动126。调试启动沈打开到用户进程128的句柄并且等待其终止。在上面所示的示例中,示出了各个组件。下面的讨论示出了这些组件中的一些的附加细节。在所示的示例中,监听器118是开发者应用程序116组件,该开发者应用程序116 组件是在调试启动时创建的并且继续存在,直到调试会话已经终止。监听器118的目的是为想要加入调试会话的远程进程发起开发者应用程序116调试。监听器118是响应于请求发起远程调试会话的服务(在一个示例中为可从华盛顿州雷蒙德市的微软公司获得的 Windows通信基础 服务)。下面示出了请求发起远程调试会话的请求的示例PID InitiateRemoteDebugSession(端点 RemoteAgentAddress, 端点 ProxyAddress)。响应于该消息,监听器118将调用开发者应用程序116调试器远程启动/附连代码并且将向其提供远程代理地址以及任选的代理地址以及用户凭证。开发者应用程序116 启动代码将打开到RemoteAgentAddress (远程代理地址)的连接(通过代理122),并且请求进行该启动(或者下面所示的附连)。在成功完成以后,进程标识符(Pid)被返回给监听器118。监听器118用该pid回复该消息。可以预期多个消息。在一些实施例中,监听器 118将响应其接收的所有消息。代理服务120是凭本地系统凭证在路由节点112上运行的服务。在一些实施例中, 代理服务102可以是Windows通信基础 服务。代理服务120启动代理122以用于调试会话。代理服务120发布公知的地址并且在该地址处监听代理请求。下面示出了示例性的发布消息端点 NewProxySession (凭证 userCredentials)。
当请求到来时,代理服务120确认用户凭证,分配端点端口,并且凭用户的凭证启动代理122进程。代理服务120等待代理122打开端点并且然后用代理122的端点描述来响应 NewProxySession 请求。代理122是凭用户凭证运行的服务,其在一些实施例中可以是Windows通信基础 服务。代理122负责在公共网络104上的调试器(其例如处于开发者应用程序116处) 与其在专用网络108上的远程代理114之间路由消息。在启动时,其打开端点以用于路由请求。下面示出了打开端点以用于路由请求的消息的示例Endpoint RouteTo (端点 endpoint)。该请求来自网络A(B)上的进程,然后路由器在B (A)上打开新端点,并且在回复中返回描述。调试启动1 凭用户凭证运行,并且负责在具有要调试的进程(例如用户进程 128)的机器上启动远程代理114调试器进程。调试启动1 可以由群集管理器直接调用, 或者由针对动态计算调度任务的群集子调度器来调用。调试启动126发起到监听器118的通信,并且向监听器通知其已经创建的远程代理114的动态地址。尽管图1中所示的在先示例已经示出了通过启动调试能力并且然后启动用户进程1 来调试用户进程128的示例,但是其他实施例可以将调试功能附连到已经执行的进程。下面和图2示出了调试器附连的示例。如在图201处所述,开发者应用程序116创建监听器118。监听器118打开Dl。监听器118在作为本地管理员运行的路由节点上打开到公知代理服务120 (P)的链接(例如根据配置数据和/或开发者项目设置)。监听器118向P发送代理初始化消息InitProxy (Dl, U),其中U是用户的群集凭证。代理服务120利用用户凭证(U)来分叉代理122实例,从而将其传递给Dl以及传递InitProxy消息的回复上下文。如在202处所示,代理122为Dl打开到代理的122的Dlp并且分别为来自专用和公共网络104和106的新代理请求打开端口 Pl (以及P2),并且将代理初始化回复消息 InitProxyReply (Pl, P,Dlp)发送回监听器 118。如在203处所示,监听器118从调度器124请求作业细节。如在204处所示,监听器118作为回报接收计算节点106的列表和进程id。如在205处所示,针对该列表中的每个计算节点106,监听器118向P2发送 ForwardMessage (NodeName, A, DebugStart (PI, Dlp), U)。如在206处所示,代理122将DebugStart (调试启动)消息转发给节点“NodeName” 上的公知地址处的附连服务130。如在207处所示,附连服务130选择地址D2并且比如通过凭用户凭证U调用 msvsmon(D2, Ε)来启动用户代理114,并且等待事件Ε。远程代理114启动并且打开D2以用于连接。远程代理114在其准备好在D2上进行接收时设置事件Ε。如在208处所示,附连服务130向代理122 (Pl)发送RouteTo (D2)消息。代理122 创建被代理端口 D2P。如在209处所示,代理122用RouteToR印Iy (D2p)来响应附连服务130。如在210处所示,附连服务130在Dlp处向代理发送DebugAgentMarted (D2p)消肩、ο
8
如在211处所示,代理122在Dl处将DebugAgentMarted消息转发给监听器118。 监听器118调用开发者应用程序116调试器,从而指示其在D^处连接到远程代理。如在212处所示,开发者应用程序116调试器在0 处打开与代理122的远程调
试会话。如在213处所示,代理122在D2处打开与远程代理114的会话。其在两个方向上路由调试消息。调试器指示远程代理114附连到由进程标识符(pid)所标识出的用户进程。 远程代理114附连到该进程。开发者应用程序116调试器向监听器118通知附连完成。下面示出了一些实施例中的附连服务130的细节。附连服务130凭本地系统凭证运行,并且负责在具有要调试的进程(例如用户进程128)的机器上启动远程调试器进程远程代理114。附连服务130是在支持远程群集附连的任何节点上运行的系统服务。附连服务130监听来自监听器118的DebugStart消息,并且然后凭该消息中所包含的用户凭证创建远程代理114进程。附连服务130向监听器118通知其已经创建的远程代理114的动态地址。尽管上面所示的实施例使用代理来在公共和专用网络之间通信,但是其他实施例可以使用目录服务和NAT端口转发。例如,图3和4图解说明了示出使用目录服务和NAT 端口转发的启动和附连示例的交互图。具体而言,图3示出了启动场景。图4示出了附连场景。如在前面所讨论的示例中那样,群集包含两种节点、即头节点110和一组节点 106。头节点110连接到两个网络、即公共网络和专用网络。计算节点106每个都仅仅连接到专用网络。诸如主机102之类的客户机处于专用网络上。除了在该具体示例中通过在头节点110处的显式NAT端口映射以外,在专用网络与公共网络之间未启用路由。在群集附连和启动实施方式中包括多个行动者。一个这样的行动者是开发者应用程序116,其可以包括调试器用户界面主机。另一行动者是目录服务132,其可以是作为为群集作业提供转发端口的目录的服务(比如例如Windows 服务)而运行的应用程序。目录服务可以在群集的头节点110上运行。NAT端口转发134可以是在群集的头节点110上运行的网络地址转换服务。在头节点110上运行的服务器调度器IM调度要在群集的计算节点106上执行的用户作业。诊断服务136是作为服务(比如Windows 服务)在每个计算节点106上执行的应用程序。诊断服务136处理如图4的附连示例中所示的附连到进程的调试器请求。诊断服务136在引导时自动启动,并且在公知的端口 DS处监听调试请求。诊断服务136创建远程代理114的实例以满足该请求。调试启动1 是由调试器注入到用户作业中的任务。调试启动1 创建远程代理114的实例以在调试器控制下启动用户进程128。远程代理114 是开发者应用程序116调试器的远程助手进程。远程代理114由诊断服务136响应于附连请求在计算节点106上启动。用户进程1 可以是要调试的进程。现在参考图3,示出了在群集上启动调试并且调试用户进程的示例。在301,开发者应用程序116用户通过调度器IM请求将其作业排队以供在群集上执行。在302,调度器IM向一组计算节点106分配该作业并且启动在每个节点106上运行的作业。在303,该作业中的第一任务是调试启动任务126。调试启动任务1 在该组计算节点中的每个计算节点106上创建远程代理114进程,该远程代理进程每个都打开端口 Dr 并且监听调试器链接。在304,在远程代理114启动以后,调试启动126向目录服务132注册每个计算节点106的Dr端口。在305,开发者应用程序116向目录服务132轮询为用户的作业注册的所有端口, 直到其为每个远程代理114都接收到一个经映射的端口 Drp。目录服务132将创建为了满足该请求所需的经由NAT的端口映射。在306,一旦已经为作业创建了端口,则目录服务132就周期性地轮询调度器124 以验证该作业还未终止。在307,针对每个注册的端口,开发者应用程序116通过Drp连接到该计算节点 106上的远程代理114并且创建和调试用户进程128。消息继续在开发者应用程序116与远程代理114之间来回,直到调试会话完成。要么紧跟在完成调试会话以后,要么在一定时间以后,用户进程128结束并且该作业完成。在308,目录服务132通过调度器124发现作业完成,并且删除所有Drp转发端口。下面是出了群集附连场景。在401,用户在调度器IM处对作业排队。调度器124 向其提供JobId (作业Id)。调度器1 在稍后某一时刻启动在用户节点106的集合S上执行的用户作业(包括用户进程128)。在402,用户确定调试其正在执行的作业。他启动调试器应用程序116并且开始群集附连进程。他标识出他的群集头节点110和Jobld。开发者应用程序116向调度器124 查询计算节点名称的列表以及该作业的用户进程128的进程id。在403,针对调度器124返回的列表中的每个计算节点106,开发者应用程序116 向目录服务132注册其诊断服务的136端口 DS。目录服务132进而请求DS的NAT端口映射。目录服务132返回经映射的端口 DSp。该进程导致为每个计算节点106创建一个DSp。 发送给DSp的消息将通过头节点110被路由到匹配的DS。在404,针对每个计算节点106,开发者应用程序116向DSp发送附连请求。该消息在端口 DS上被转发给计算节点106的诊断服务136。诊断服务136在计算节点106上创建远程代理114的实例。远程代理114打开端口 Dr,并且监听来自与开发者应用程序116 相关联的客户机102处的调试器的调试器连接请求。在远程代理114启动以后,诊断服务 136向目录服务132注册Dr。然后,附连请求完成。在405,开发者应用程序116向目录服务132轮询为用户的作业注册的所有端口, 直到其为每个计算节点106都接收到一个经映射的端口 Drp。目录服务132将创建为了满足该请求所需的经由NAT的端口映射。在406,一旦已经为作业创建了端口,则目录服务132就周期性地轮询调度器124 以验证该作业还未终止。在407,针对每个计算节点106上的每个用户进程128,开发者应用程序116通过 Drp连接到该计算节点106上的远程代理114,并且开始用户进程128的调试会话。消息继续在开发者应用程序116(具体是开发者应用程序的调试器模块)与远程代理114之间往返,直到调试会话完成。要么紧跟在完成调试会话以后,要么在一定时间以后,用户进程128 结束并且该作业完成。
在408,目录服务132通过调度器IM发现作业完成,并且删除所有Drp转发端口。在409,目录服务132还删除所有与该作业相关联的DSp端口。下面的讨论现在涉及可执行的多个方法和方法动作。虽然可以以某一顺序讨论或在流程图中按特定顺序发生而示出了方法动作,但是,没有特定顺序是一定需要的,除非特别声明,或者是必需的,因为在一个动作被执行之前该动作取决于另一动作被完成。现在参考图5,示出了方法500。方法500可以在包括群集计算系统的计算环境中实施。方法500包括启动调试进程的动作。方法500包括在群集专用网络上的计算节点处通过头节点的调度器从公共网络接收调试作业(动作502)。头节点连接到专用网络和公共网络二者。公共网络处于群集专用网络之外。例如如图1所示,计算节点106可以从客户机102接收调试作业,该调试作业是通过头节点110、具体是通过头节点110的调度器124 被路由的。方法500还包括开始处理调试作业,并且作为结果,通过启动计算节点处的一个或多个调试器远程代理来发起调试(动作504)。例如,参考图1,可以启动远程代理114。方法500还包括在计算节点处存在已启动的调试器远程代理的情况下开始处理用户作业(动作506)。例如,计算节点106可以在存在正在运行的远程代理114的情况下开始处理用户进程128。方法500还包括向客户机通知所述一个或多个调试器远程代理已经为调试用户作业做好准备。例如,图1示出消息可以发送给代理122,该消息然后被转发给开发者应用程序116的监听器118。方法500还包括将客户机处的调试器客户端连接到所述一个或多个调试器远程代理。例如,开发者应用程序116中所包括的调试器可以如上述那样连接到一个或多个远程代理114。现在参考图6,示出了另一方法600。方法600可以在包括群集计算系统的计算环境中实施。方法600包括附连调试进程的动作。方法600包括在执行用户作业的群集专用网络上的计算节点处,通过连接到群集专用网络和公共网络二者的系统从公共网络上的客户机接收调试作业(动作602)。公共网络处于群集专用网络之外。例如,如图2所示,示出了公共网络104和群集专用网络108。客户机102处于公共网络104上,并且计算节点106 处于群集专用网络108上。计算节点可以从路由节点112接收启动调试作业的消息。方法600还包括开始处理调试作业,并且作为结果,通过启动计算节点处的一个或多个调试器远程代理来发起对用户作业的调试(动作604)。具体而言,附连服务130可以启动用户代理114。方法600还包括向客户机通知所述一个或多个调试器远程代理已经为调试用户作业做好准备(动作606)。方法600还包括作为结果,将客户机处的调试器客户端连接到所述一个或多个调试器远程代理(动作608)。此外,方法可以通过包括一个或多个处理器和诸如计算机存储器之类的计算机可读介质的计算机系统来实施。具体而言,计算机存储器可以存储计算机可执行指令,当由一个或多个处理器执行时,这些指令使诸如各实施方式中所列举的动作之类的各种功能被执行。
本发明的实施方式可以包括或使用含有各种计算机硬件的专用或通用计算机,这将在以下更详细地讨论。本发明范围内的各实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这些计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制, 本发明的各实施例可包括至少两种完全不同的计算机可读介质物理计算机可读存储介质和传输计算机可读介质。物理计算机可读的存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储器(诸如CD、DVD、等等)、磁盘存储器或其他磁存储设备,或可以用来存储所需要的以计算机可执行的指令或数据结构的形式存在的程序代码装置并可以被通用或专用计算机访问的任何其他介质。“网络”被定义为允许在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链接。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于承载计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的网络和/或数据链接。上面各项的组合也包括在计算机可读介质的范围内。此外,在到达各种计算机系统组件时,以计算机可执行的指令或数据结构的形式存在的程序代码装置可以自动地从传输计算机可读介质传输到物理计算机可读存储介质 (或者反之亦然)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传送到计算机系统RAM和/ 或计算机系统处的较不易失性的计算机可读物理存储介质。如此,计算机可读的物理存储介质可以包括在也(或者甚至主要)利用传输介质的计算机系统组件中。计算机可执行指令包括例如,使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接(或者通过硬连线数据链接、无线数据链接,或者通过硬连线和无线数据链接的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实践。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备二者中。本发明可具体化为其它具体形式而不背离其精神或特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。因此,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变被权利要求书的范围所涵盖。
1权利要求
1.一种在包括群集计算系统的计算环境中用于启动调试进程的方法,该方法包括在群集专用网络108上的计算节点106处,通过头节点110的调度器IM从公共网络 104上的客户机接收调试作业,其中所述头节点110连接到所述群集专用网络108和所述公共网络104 二者,并且其中所述公共网络104处于所述群集专用网络108之外;开始处理该调试作业,并且作为结果,通过启动所述计算节点106处的一个或多个调试器远程代理114来发起调试;在所述计算节点106处存在已启动的调试器远程代理114的情况下开始处理用户作业;向所述客户机通知所述一个或多个调试器远程代理114已经为调试所述用户作业做好准备;以及作为结果,将所述客户机106处的调试器客户端连接到所述一个或多个调试器远程代理 114。
2.如权利要求1所述的方法,其特征在于,所述客户机包括监听器,并且其中通过一个或多个中介从所述客户机到所述计算节点的通信来自所述监听器。
3.如权利要求2所述的方法,其特征在于,通信从所述客户机拉取。
4.如权利要求2所述的方法,其特征在于,通信从所述客户机推送。
5.如权利要求1所述的方法,其特征在于,所述客户机与所述计算节点之间的通信通过耦合到所述公共网络和所述群集专用网络二者的系统上的代理。
6.如权利要求1所述的方法,其特征在于,所述客户机与所述计算节点之间的通信通过耦合到所述公共网络和该群集专用网络二者的系统上的NAT服务。
7.如权利要求1所述的方法,其特征在于,还包括通过所述头节点的调度器从所述公共网络上的客户机接收所述用户作业。
8.如权利要求1所述的方法,其特征在于,还包括打开一个或多个代理端口以促进所述客户机与所述计算节点之间的通信,并且其中所述一个或多个代理端口选自13225至 13719的范围。
9.如权利要求1所述的方法,其特征在于,所述客户机包括开发者应用程序,所述开发者应用程序被开发者用于开发用于群集计算的应用程序,并且其中来自所述客户机的消息是从所述开发者应用程序接收到的。
10.一种在包括群集计算系统的计算环境中用于附连调试进程的方法,所述方法包括在执行用户作业的群集专用网络108上的计算节点106处,通过连接到所述群集专用网络108和公共网络104 二者的系统从所述公共网络104上的客户机接收启动调试作业的消息,并且其中所述公共网络104处于所述群集专用网络108之外;开始处理所述调试作业,并且作为结果,通过启动所述计算节点106处的一个或多个调试器远程代理114来发起对用户作业的调试;向所述客户机通知所述一个或多个调试器远程代理114已经为调试所述用户作业做好准备;以及作为结果,将所述客户机106处的调试器客户端连接到所述一个或多个调试器远程代理 114。
11.如权利要求10所述的方法,其特征在于,所述客户机包括监听器,并且其中通过一个或多个中介从所述客户机到所述计算节点的通信来自所述监听器。
12.如权利要求11所述的方法,其特征在于,通信从所述客户机拉取。
13.如权利要求11所述的方法,其特征在于,通信从所述客户机推送。
14.如权利要求10所述的方法,其特征在于,所述客户机与所述计算节点之间的通信通过耦合到所述公共网络和所述群集专用网络二者的系统上的代理。
15.如权利要求10所述的方法,其特征在于,所述客户机与所述计算节点之间的通信通过耦合到所述公共网络和所述群集专用网络二者的系统上的NAT服务。
全文摘要
本发明涉及计算群集上的调试器启动和附连。启动调试进程。一种方法包括在群集专用网络上的计算节点处,通过头节点的调度器从公共网络上的客户机接收调试作业。头节点连接到群集专用网络和公共网络二者。公共网络处于群集专用网络之外。该方法还包括开始处理调试作业,并且作为结果,通过启动计算节点处的一个或多个调试器远程代理来发起调试。该方法还包括在计算节点处存在已启动的调试器远程代理的情况下开始处理用户作业。向客户机通知所述一个或多个调试器远程代理已经为调试用户作业做好准备。客户机处的调试器客户端连接到所述一个或多个调试器远程代理。
文档编号H04L29/08GK102523100SQ20111030872
公开日2012年6月27日 申请日期2011年9月29日 优先权日2010年9月30日
发明者D·莫斯, G·B·米什凯利, P·E·梅比 申请人:微软公司