JP5906246B2 - コンピュートクラスタ(computecluster)上でのデバッガ起動およびアタッチ - Google Patents

コンピュートクラスタ(computecluster)上でのデバッガ起動およびアタッチ Download PDF

Info

Publication number
JP5906246B2
JP5906246B2 JP2013531628A JP2013531628A JP5906246B2 JP 5906246 B2 JP5906246 B2 JP 5906246B2 JP 2013531628 A JP2013531628 A JP 2013531628A JP 2013531628 A JP2013531628 A JP 2013531628A JP 5906246 B2 JP5906246 B2 JP 5906246B2
Authority
JP
Japan
Prior art keywords
client
debugger
compute node
remote agent
cluster
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013531628A
Other languages
English (en)
Other versions
JP2013539131A5 (ja
JP2013539131A (ja
Inventor
イー.メイビー ポール
イー.メイビー ポール
モス ダニエル
モス ダニエル
バーナード ミスケリー グレッグ
バーナード ミスケリー グレッグ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2013539131A publication Critical patent/JP2013539131A/ja
Publication of JP2013539131A5 publication Critical patent/JP2013539131A5/ja
Application granted granted Critical
Publication of JP5906246B2 publication Critical patent/JP5906246B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software

Description

本発明は、クラスタコンピューティングシステムを含むコンピューティング環境において、デバッギングプロセスを起動およびアタッチする方法に関する。
コンピュータおよびコンピューティングシステムは、現代生活のほぼすべての局面に影響を及ぼすようになった。一般に、コンピュータは、仕事、レクリエーション、ヘルスケア、運輸、娯楽、家政などに関与する。
さらに、コンピューティングシステムの機能は、ネットワーク接続を介して他のコンピューティングシステムとの相互接続を可能にするコンピューティングシステムの能力によって高めることができる。ネットワーク接続は、有線もしくは無線イーサネット(登録商標)を介する接続、セルラ接続、またはシリアル、パラレル、USB、もしくは他の接続を介するコンピュータ対コンピュータの接続さえも含むことができるが、それらに限定されない。これらの接続は、コンピューティングシステムが、他のコンピューティングシステムにおけるサービスにアクセスすること、およびアプリケーションデータを他のコンピューティングシステムから素早く効率的に受け取ることを可能にする。
相互接続されたコンピュータは、クラスタコンピューティングを実施するために使用することができる。クラスタコンピューティングは、ジョブが単一のコンピュータで実行するには大きすぎる場合でも、多数のコンピュータを使用することによってジョブを実行する。代わりに、ジョブは細分化され、細分化されたジョブが、クラスタ内の個々のコンピュータシステムに送られる。一般に、クラスタは、ヘッドノード(head node)を用いて実施され、ヘッドノードは、ジョブを受け入れ、ジョブまたはジョブの部分をクラスタ内のコンピュートノード(compute node)に割り当てる。一般に、コンピュートノードは、プライベートネットワーク(private network)内で実施されるが、プライベートネットワークは、その外部のコンピュータシステムによっては公的にアクセス可能ではない。ヘッドノードは、クラスタにジョブを提出したいことがある外部クライアントからジョブを受け入れることができるように、プライベートネットワークと1つまたは複数のパブリックネットワーク(public network)の両方のメンバとすることができる。
コンピューティングシステムでは、システムがクラッシュすること、または予期せぬ結果を返すことに関して生じる問題がしばしば起こる。システムクラッシュまたは予期せぬ結果の原因を決定するために、様々なデバッギング技法が使用される。いくつかの技法は、デバッガの使用を必要とする。デバッガは、実行中コードと一緒に、またはその下で動作するソフトウェアアプリケーションとすることができる。デバッガは、コードをステップ実行する(すなわち、一まとまりの多くの命令を実行し、その後、ユーザ入力を待ってから、次の一まとまりの多くの命令を実行する)ためや、実行中コード内のあるポイントで実行を停止させるためにコード内にブレイクポイントを設定するためなどに使用することができる。しかし、クラスタシステムでは、開発者がデバッグしたいシステムは、開発者によって直接的にアクセス可能なシステムの外部のネットワーク上にあることがあるという事実に鑑みて、デバッガを始動させることがより難しくなり得る。すなわち、開発者は、パブリックネットワーク上のクライアント上で開発者アプリケーション(developer application)を使用していることがあり、一方、デバッグされるアプリケーションは、パブリックネットワーク上のクライアントコンピュータによって直接的にアクセス可能ではないプライベートネットワーク上にあるクラスタ上のジョブとして動作していることがある。したがって、デバッグしたいシステムが、デバッガを直接的に提供できないことがある。それどころか、デバッガをコンピュートクラスタ上で実行しているジョブに接続するには、クラスタのノードがクライアントと同じネットワーク上にあること、および/またはユーザがコンピュートクラスタに管理的アクセスを行えることが必要なことがある。
本出願において特許請求される本発明は、何らかの不都合を解決する実施形態、または上で説明したような環境においてのみ動作する実施形態に限定されない。むしろ、この「背景技術」は、本明細書で説明するいくつかの実施形態を実施できる1つの例示的な技術領域を説明するためにもっぱら提供されている。
本明細書で説明する一実施形態は、クラスタコンピューティングシステムを含むコンピューティング環境において実施することができる。実施形態は、デバッギングプロセスを起動するためのステップを有する方法を含む。方法は、クラスタプライベートネットワーク上のコンピュートノードにおいて、デバッグジョブを、パブリックネットワーク上のクライアントから、ヘッドノードのスケジューラを介して受信するステップを含む。ヘッドノードは、クラスタプライベートネットワークおよびパブリックネットワークの両方に接続される。パブリックネットワークは、クラスタプライベートネットワークの外部に存在する。方法は、デバッグジョブを処理することに着手し、結果として、コンピュートノードにおいて1つまたは複数のデバッガリモートエージェント(debugger remote agent)を始動させることによって、デバッギングを開始するステップをさらに含む。方法は、コンピュートノードにおいて、始動させたデバッガリモートエージェントの存在下で、ユーザジョブを処理することに着手するステップをさらに含む。クライアントは、ユーザジョブをデバッグする準備が1つまたは複数のデバッガリモートエージェントにおいて整った旨の通知を受ける。クライアントにおけるデバッガクライアントは、1つまたは複数のデバッガリモートエージェントに接続される。
別の実施形態は、クラスタコンピューティングシステムを含むコンピューティング環境において実施される。この実施形態は、デバッギングプロセスをアタッチするためのステップを有する方法を含む。方法は、ユーザジョブを実行しているクラスタプライベートネットワーク上のコンピュートノードにおいて、デバッグジョブを始動させるためのメッセージを、パブリックネットワーク上のクライアントから、クラスタプライベートネットワークとパブリックネットワークの両方に接続されたシステムを介して受信するステップを含む。パブリックネットワークは、クラスタプライベートネットワークの外部に存在する。方法は、デバッグジョブを処理することに着手し、結果として、コンピュートノードにおいて1つまたは複数のデバッガリモートエージェントを始動させることによって、ユーザジョブのデバッギングを開始するステップをさらに含む。クライアントは、ユーザジョブをデバッグする準備が1つまたは複数のデバッガリモートエージェントにおいて整った旨の通知を受ける。クライアントにおけるデバッガクライアントは、1つまたは複数のデバッガリモートエージェントに接続される。
この「課題を解決するための手段」は、以下の「発明を実施するための形態」においてさらに説明する概念からの抜粋を簡略な形で紹介するために提供される。この「課題を解決するための手段」は、特許請求される本発明の主要な特徴または必須の特徴を識別することは意図しておらず、特許請求される本発明の範囲を決定する際の助けとして使用することも意図していない。
さらなる特徴および利点は、以下の説明において説明され、部分的には説明から明らかであり、または本明細書の教示を実施することによって知ることができる。本発明の特徴および利点は、特に添付の特許請求の範囲において指摘される機器および組み合わせを用いて実現および獲得することができる。本発明の特徴は、以下の説明および添付の特許請求の範囲からより十分に明らかになり、以下で説明するように本発明を実施することによって知ることができる。
上述および他の利点および特徴を獲得できる方法を説明するため、上で簡潔に説明した本発明のより詳細な説明が、添付の図面に示される特定の実施形態を参照して行われる。これらの図面は典型的な実施形態を示すにすぎず、したがって、範囲について限定的であると見なされるべきではないことを理解したうえで、添付の図面を使用して、さらに特定的かつ詳細に実施形態を記述および説明する。
プロキシを使用するデバッガ起動シナリオを示す図である。 プロキシを使用するデバッガアタッチシナリオを示す図である。 NAT転送を使用するデバッガ起動シナリオを示す図である。 NAT転送を使用するデバッガアタッチシナリオを示す図である。 NAT転送を使用するデバッガアタッチシナリオを示す図である。 デバッガを起動する方法を示す図である。 デバッガをアタッチする方法を示す図である。
本明細書では、クラスタのためのデバッギング機能を含む様々な実施形態が開示される。実施形態は、デバッガ制御の下でジョブを起動するための機能を含むことができる。あるいは、実施形態は、既存のジョブにデバッガをアタッチするための機能を含むことができる。説明するように、これらの実施形態のいくつかは、コンピュートノードに直接的なクライアントアクセスを行わずに、またはクラスタ上で管理特権を有することなく、上記の機能を実施することができる。
図1は、説明的なものである。図1は、パブリックネットワーク104上にクライアント102を示している。クライアントは、クラスタにジョブを提供することを望むことができる。クラスタは、ジョブに関連する作業を実行する、コンピュートノード106などの、コンピュートノードを有することができる。図1は、一般に、実施形態が、ヘッドノード110によってジョブを割り当てることができる複数のコンピュートノード106を含むことを示している。コンピュートノードは、パブリックネットワーク104から分離されているプライベートネットワーク108上に存在することができる。特に、プライベートネットワーク108は、パブリックネットワーク104上のシステムがプライベートネットワーク108上のシステムと直接的に通信できないように、パブリックネットワーク104から隔離される。例えば、これらのネットワークは、異なるドメインを有することができる。
代わりに、クライアント102は、ヘッドノード110および/またはルーティングノード(routing node)112などの1つまたは複数のシステムを使用して実施できる仲介手段(intermediary)を介して、ジョブおよび他の通信を提供する。クライアント102は、ジョブを仲介手段に提出することができ、その後、仲介手段が、ジョブを1つまたは複数のコンピュートノード106に転送する。クライアント102によって提出されたジョブは、コンピュートノード106によって実行されている間に、エラーを生じることがある。本明細書で説明する実施形態は、エラーをデバッグするために、クラスタ上でクライアント102によってデバッギングを開始するための機能を含むことができる。一例では、これは、リモートエージェントデバッガを起動した後で、コードをデバッガリモートエージェント上で実行することによって行うことができる。
説明的な一例では、デバッギングプロセスの起動は、クラスタプライベートネットワーク106の外部のパブリックネットワーク104上のクライアント102が、ユーザジョブをデバッガタスクとともにヘッドノード110などの仲介手段に送信することによって実行することができる。ヘッドノード110は、1つまたは複数のコンピュートノード106がデバッガタスクを実行するためのジョブを生成することができる。コンピュートノード106におけるデバッガタスクの実行は、クラスタプライベートネットワーク108上の1つまたは複数のコンピュートノード106において1つまたは複数のデバッガリモートエージェント114を始動させることによって、クライアント102(または他の何らかのシステム)から先に送信されたユーザジョブのリモートデバッギングを開始する。その後、クライアント102は、デバッギングを行う準備がリモートエージェント114において整った旨の通知を受けることができる。いくつかの実施形態では、これは、パブリックネットワークシステム104がプライベートネットワーク108システムに呼び掛けることを可能にするプロキシを含むルーティングノード112を使用することによって達成することができる。さらに、クライアント102は、デバッガクライアントを有することができる。クライアント102のデバッガクライアントは、例えばルーティングノード112などを介して、デバッガリモートエージェントに接続することができる。
以下では、一例についてのさらなる詳細が説明される。特に、引き続き図1を参照する以下の例では、開発者アプリケーション116を含む統合開発環境(integrated development environment)を使用できる一実施形態が説明される。開発者アプリケーションは、アプリケーション、特にクラスタコンピューティング向けのアプリケーションを開発する開発者によって使用することができる。説明される特定の例では、開発者アプリケーション116は、ワシントン州レドモンドに本社を置くMicrosoft Corporationが販売するVisual Studio(登録商標)を使用して実施することができる。
1に示されるように、開発者アプリケーション116は、リスナ(listener)118を生成する。リスナ118は、通信を円滑化するために、ポートD1をオープンする。いくつかの実施形態では、割り当てられるポートは(本明細書で説明する他のポートと同様に)、13225から13719の範囲内のポートとすることができるが、それは、これらのポートが一般には割り当てられることがないからである。リスナ118は、ローカルアドミニストレータとして動作するルーティングノード112上のよく知られたプロキシサービス120へのリンクPをオープンする。いくつかの実施形態では、構成データまたはプロジェクト設定に基づいて、プロキシを選択することができる。リスナ118は、本明細書ではInitProxy(D1,U)として示されるメッセージである初期化メッセージを、Pを介して、プロキシサービス120に送信し、ここで、Uは、ユーザのクラスタ資格証明書(cluster credential)である。プロキシサービス120は、ユーザ資格証明書(U)を用いてプロキシのインスタンスをフォーク(fork)し、それとInitProxyメッセージに対する応答テキストとをD1に渡す。いくつかの実施形態では、本明細書で説明する送信および受信メッセージには暗号化を施すことができることに留意されたい。
2に示されるように、プロキシ122は、D1のためのプロキシ112へのD1をオープンし、新しいプロキシ要求のためのポートP1をオープンし、応答InitProxyReply(P1,D1)をリスナ118に返送する。
3に示されるように、リスナ118は、ヘッドノード110のスケジューラ124に新しいジョブメッセージ:NewJob(DebugStart,P1,D1)を送信する。このメッセージは、新しいデバッガジョブを指定する。いくつかの実施形態では、リスナが回送を行うためのヘッドノード110およびスケジューラ124の情報は、構成データおよび/または開発プロジェクト設定内に含めることができる。
4に示されるように、スケジューラ124は、各コンピュートノード106において、DebugStart(P1,D1)を実行するジョブを生成する。
5に示されるように、デバッグスタート126は、アドレスD2を選択し、この例ではmsvsmon(D2,E)を呼び出すことによって、適切なリモートエージェント114を始動させ、イベントEを待つ。リモートエージェント114が始動し、接続のためにD2をオープンする。リモートエージェント114は、D2上での受信の準備が整ったとき、イベントEを設定する。
6に示されるように、デバッグスタート126は、ルーティングメッセージRouteTo(D2)をプロキシ122(P1)に送信する。プロキシ122は、プロキシポート(proxied port)D2を生成する。
7に示されるように、プロキシは、ルーティング応答メッセージRouteToReply(D2)を用いてデバッグスタート126に応答する。
8に示されるように、デバッグスタート126は、デバッグエージェントが始動されたことを示すメッセージDebugAgentStarted(D2)をD1を介してプロキシ122に送信する。
9において、プロキシ122は、DebugAgentStartedメッセージをD1を介してリスナ118に転送する。リスナ118は、開発者アプリケーション116のデバッガを呼び出し、D2を介してリモートエージェントに接続するようにデバッガに命令する。
10に示されるように、開発者アプリケーションのデバッガは、D2を介してプロキシ122とのリモートデバッギングセッションをオープンする。
11に示されるように、プロキシ122は、D2を介してリモートエージェント114とのセッションをオープンする。プロキシ122は、両方向にデバッギングメッセージを回送する。開発者アプリケーションのデバッガは、プロキシ122を通して、リモートエージェント114にユーザプロセス128を起動するように命令する。ユーザプロセス128は、デバッグされるプロセスとすることができる。リモートエージェント114は、ユーザプロセス128を起動して、ユーザプロセス128を識別するプロセス識別子を返す。開発者アプリケーションのデバッガは、起動が完了したことをリスナ118に通知し、リスナ118にプロセス識別子pidを与える。
12に示されるように、リスナ118は、DebugAgentStartedReply(pid)メッセージをD2を介してプロキシ122に送信する
13に示されるように、プロキシ122は、応答をデバッグスタート126に転送する。デバッグスタート126は、ユーザプロセス128へのハンドルをオープンし、その終了を待つ。
上で説明した例には、様々な構成要素が示されている。以下の説明では、これらの構成要素のいくつかについてさらに詳細に説明する。
説明した例におけるリスナ118は、デバッギング開始時に生成され、デバッギングセッションが終了するまで存続し続ける、開発者アプリケーション116の構成要素である。リスナ118の目的は、デバッギングセッションに加わることを望むリモートプロセスのために、開発者アプリケーション116のデバッギングを開始することである。リスナ118は、リモートデバッギングセッションを開始するよう求める要求に応答するサービス(一例では、ワシントン州レドモンドに本社を置くMicrosoft(登録商標)Corporationが販売する、Windows(登録商標) Communication Foundation(登録商標))である。以下では、リモートデバッギングセッションを開始するよう求める要求の一例について説明する。
PID InitiateRemoteDebugSession(Endpoint RemoteAgentAddress,Endpoint ProxyAddress)
このメッセージに応答して、リスナ118は、開発者アプリケーション116のデバッガリモート起動/アタッチコードを呼び出し、それに、RemoteAgentAddressと、任意選択的にProxyAddressと、ユーザ資格証明書を提供する。開発者アプリケーション116の起動コードは、(プロキシ122を介する)RemoteAgentAddressへの接続をオープンし、起動(または以下で説明するようにアタッチ)を行うように要求する。正常終了すると、プロセス識別子(pid)がリスナ118に返される。リスナ118は、pidを用いてメッセージに応答する。複数のメッセージを予期することができる。いくつかの実施形態では、リスナ118は、受信したすべてのメッセージに応答する。
プロキシサービス120は、ルーティングノード112上で、ローカルシステム資格証明書(local system credential)の下で動作するサービスである。いくつかの実施形態では、プロキシサービス102は、Windows Communication Foundation(登録商標)サービスとすることができる。プロキシサービス120は、デバッギングセッションのためにプロキシ122を始動させる。プロキシサービス120は、よく知られたアドレスを発行し、そのアドレスにおいてプロキシ要求をリスン(listen)する。以下では、例示的な発行メッセージについて説明する。
Endpoint NewProxySession(Credentials userCredentials)
要求が到着すると、プロキシサービス120は、ユーザ資格証明書を確認し、エンドポイントポートを割り当て、ユーザの資格証明書の下でプロキシ122のプロセスを始動させる。プロキシサービス120は、プロキシ122がエンドポイントをオープンするのを待ち、その後、プロキシ122のエンドポイントデスクリプション(endpoint description)を用いてNewProxySession要求に応答する。
プロキシ122は、ユーザ資格証明書の下で動作する、いくつかの実施形態ではWindows Communication Foundation(登録商標)サービスとすることができる、サービスである。プロキシ122は、パブリックネットワーク104上の(例えば開発者アプリケーション116の)デバッガとプライベートネットワーク108上のリモートエージェント114の間でメッセージを回送することを担当する。始動時に、プロキシ122は、要求を回送するためのエンドポイントをオープンする。以下では、要求を回送するためのエンドポイントをオープンするためのメッセージの一例について説明する。
Endpoint RouteTo(Endpoint endpoint)
要求がネットワークA(B)上のプロセスから到着すると、その後、ルータは、B(A)上に新しいエンドポイントproxyEndpointをオープンし、応答に収めてデスクリプションを返す。
デバッグスタート126は、ユーザ資格証明書の下で動作し、デバッグされるプロセス(例えばユーザプロセス128)とともに、マシン上でリモートエージェント114のデバッガプロセスを始動させることを担当する。デバッグスタート126は、クラスタマネージャによって直接的に、または動的コンピューテーション(dynamic computation)のためにタスクをスケジュールしているクラスタサブスケジューラによって呼び出すことができる。デバッグスタート126は、リスナ118との通信を開始し、自らが生成したリモートエージェント114の動的アドレスをリスナに通知する。
図1に示された先の例では、デバッギング機能を始動させ、その後、ユーザプロセス128を始動させることによって、ユーザプロセス128をデバッグする一例について説明したが、他の実施形態では、すでに実行中のプロセスにデバッギング機能をアタッチすることができる。以下の説明および図2では、デバッガアタッチの一例について説明する。
201に示されるように、開発者アプリケーション116は、リスナ118を生成する。リスナ118は、D1をオープンする。リスナ118は、ローカルアドミニストレータとして動作するルーティングノード上のよく知られたプロキシサービス120へのリンク(P)をオープンする(例えば、構成データおよび/または開発者プロジェクト設定を形成する)。リスナ118は、プロキシ初期化メッセージInitProxy(D1,U)をPに送信し、ここで、Uは、ユーザのクラスタ資格証明書である。プロキシサービス120は、ユーザ資格証明書(U)を用いてプロキシ122のインスタンスをフォークし、それとInitProxyメッセージに対する応答テキストとをD1に渡す。
202に示されるように、プロキシ122は、D1のためのプロキシ122へのD1をオープンし、プライベートおよびパブリックネットワーク104および106それぞれからの新しいプロキシ要求のためのP1(およびP2)をオープンし、プロキシ初期化応答メッセージInitProxyReply(P1,P2,D1)をリスナ118に返送する。
203に示されるように、リスナ118は、スケジューラ124にジョブ詳細を要求する。
204に示されるように、リスナ118は、コンピュートノード106とプロセスidとのリストを返信として受信する。
205に示されるように、リスト内の各コンピュートノード106に対して、リスナ118は、ForwardMessage(NodeName,A,DebugStart(P1,D1),U)をP2に送信する。
206に示されるように、プロキシ122は、DebugStartメッセージをノード「NodeName」上のよく知られたアドレスAを介してアタッチサービス130に転送する。
207に示されるように、アタッチサービス130は、アドレスD2を選択し、ユーザ資格証明書Uの下でmsvsmon(D2,E)を呼び出すことなどによって、ユーザエージェント114を始動させ、イベントEを待つ。リモートエージェント114が始動し、接続のためにD2をオープンする。リモートエージェント114は、D2上での受信の準備が整ったとき、イベントEを設定する。
208に示されるように、アタッチサービス130は、RouteTo(D2)メッセージをプロキシ122(P1)に送信する。プロキシ122は、プロキシポートD2を生成する。
209に示されるように、プロキシ122は、RouteToReply(D2)を用いてアタッチサービス130に応答する。
210に示されるように、アタッチサービス130は、DebugAgentStarted(D2)メッセージをD1を介してプロキシに送信する。
211に示されるように、プロキシ122は、DebugAgentStartedメッセージをD1を介してリスナ118に転送する。リスナ118は、開発者アプリケーション116のデバッガを呼び出し、D2を介してリモートエージェントに接続するようにデバッガに命令する。
212に示されるように、開発者アプリケーション116のデバッガは、D2を介してプロキシ122とのリモートデバッギングセッションをオープンする。
213に示されるように、プロキシ122は、D2を介してリモートエージェント114とのセッションをオープンする。プロキシ122は、両方向にデバッギングメッセージを回送する。デバッガは、リモートエージェント114にプロセス識別子(pid)によって識別されるユーザプロセス128にアタッチするように命令する。リモートエージェント114は、プロセスにアタッチする。開発者アプリケーション116のデバッガは、アタッチが完了したことをリスナ118に通知する。
以下では、いくつかの実施形態において、アタッチサービス130について詳細に説明する。アタッチサービス130は、ローカルシステム資格証明書の下で動作し、デバッグされるプロセス(例えばユーザプロセス128)とともに、マシン上でリモートデバッガプロセスリモートエージェント114を始動させることを担当する。アタッチサービス130は、リモートクラスタアタッチをサポートする任意のノード上で動作するシステムサービスである。アタッチサービス130は、リスナ118からのDebugStartメッセージをリスンし、その後、メッセージ内に含まれるユーザ資格証明書の下でリモートエージェント114のプロセスを生成する。アタッチサービス130は、自らが生成したリモートエージェント114の動的アドレスをリスナ118に通知する。
上で説明した実施形態では、パブリックネットワークとプライベートネットワークの間で通信するためにプロキシを使用しているが、他の実施形態では、ディレクトリサービスおよびNATポート転送(NAT port forwarding)を使用することができる。例えば、図3および図4は、ディレクトリサービスおよびNATポート転送を使用した起動およびアタッチの例を示す相互作用図を示している。具体的には、図3は、起動シナリオを示している。図4は、アタッチシナリオを示している。
先に説明した例と同様に、クラスタは、ヘッドノード110と1組のコンピュートノード106の2種類のノードを含む。ヘッドノード110は、パブリックネットワークとプライベートネットワークの2つのネットワークに接続される。コンピュートノード106は各々が、プライベートネットワークだけに接続される。ホストマシン102などのクライアントマシンは、パブリックネットワーク上に存在する。この特定の例では、ヘッドノード110における明示的なNATポートマッピング(NAT port mapping)を介さない限り、パブリックネットワークとプライベートネットワークの間での回送は可能ではない。
クラスタアタッチおよび起動の実施には、多くのアクタ(actor)が関与する。そのようなアクタの1つは、デバッガユーザインタフェースホストを含むことができる、開発者アプリケーション116である。
別のアクタは、ディレクトリサービス132であり、これは、転送ポートのディレクトリをクラスタジョブに提供するサービス(例えばWindows(登録商標)サービスなど)として動作するアプリケーションとすることができる。ディレクトリサービスは、クラスタのヘッドノード110上で動作することができる。NATポート転送134は、クラスタのヘッドノード110上で動作するネットワークアドレス変換(network address translation)サービスとすることができる。ヘッドノード110上で動作するサーバスケジューラ124は、クラスタのコンピュートノード106上で実行するユーザジョブをスケジュールする。
診断サービス136は、各コンピュートノード106上でサービス(Windows(登録商標)サービスなど)として実行するアプリケーションとすることができる。診断サービス136は、図4のアタッチ例に示されるように、プロセスにアタッチするように求めるデバッガ要求を処理する。診断サービス136は、ブート時に自動的に開始され、よく知られたポートDS上でデバッガ要求をリスンする。診断サービス136は、要求を満たすために、リモートエージェント114のインスタンスを生成する。デバッグスタート126は、デバッガによってユーザジョブに注入されるタスクである。デバッグスタート126は、デバッガ制御下でユーザプロセス128を起動するために、リモートエージェント114のインスタンスを生成する。リモートエージェント114は、開発者アプリケーション116のデバッガのリモートヘルパプロセス(remote helper process)である。リモートエージェント114は、アタッチ要求に応答して、診断サービス136によってコンピュートノード106上で始動される。ユーザプロセス128は、デバッグされるプロセスである。
ここで図3を参照すると、クラスタ上でデバッギングを起動し、ユーザプロセスをデバッグする一例が示されている。301では、開発者アプリケーション116のユーザは、自分のジョブをクラスタ上での実行のための待ち行列に入れることを、スケジューラ124を介して要求する。
302では、スケジューラ124は、ジョブに1組のコンピュートノード106を割り当て、各ノード106上で動作するジョブの実行を開始する。
303では、ジョブ内の第1のタスクは、デバッグスタートタスク126である。デバッグスタートタスク126は、1組のコンピュートノードのうちの各コンピュートノード106上でリモートエージェント114のプロセスを生成し、各コンピュートノード106は、ポートDrをオープンし、デバッガ接続をリスンする。
304では、リモートエージェント114が開始された後、デバッグスタート126は、コンピュートノード106の各々についてのDrポートをディレクトリサービス132に登録する。
305では、開発者アプリケーション116は、リモートエージェント114ごとに1つのマップポート(mapped port)Drpを受け取るまで、ユーザのジョブのために登録されたすべてのポートについてディレクトリサービス132にポーリングを行う。ディレクトリサービス132は、要求を満たすのに必要とされるポートマッピングをNATを介して生成する。
306では、ジョブのためにポートが生成されると、ディレクトリサービス132は、ジョブが終了していないことを検証するために、定期的にスケジューラ124にポーリングを行う。
307では、登録されたポートごとに、開発者アプリケーション116は、Drpを介してコンピュートノード106上のリモートエージェント114に接続し、ユーザプロセス128の生成およびデバッグを行う。デバッギングセッションが完了するまで、メッセージが、開発者アプリケーション116とリモートエージェント114の間で継続的にやり取りされる。デバッギングセッションの完了後すぐに、またはしばらく経ってから、ユーザプロセス128が終了し、ジョブが終了する。
308では、ディレクトリサービス132は、スケジューラ124を介してジョブ完了を発見し、すべてのDrp転送ポートを削除する。
以下では、クラスタアタッチシナリオについて説明する。401では、ユーザは、ジョブをスケジューラ124の待ち行列に入れる。スケジューラ124は、ジョブにJobIdを与える。スケジューラ124は、しばらく後で、1組Sのコンピュートノード106上で動作する(ユーザプロセス128から成る)ユーザジョブを開始する。
402では、ユーザは、自分の実行ジョブをデバッグすることに決める。ユーザは、開発者アプリケーション116を始動させ、クラスタアタッチプロセスを開始する。ユーザは、自分のクラスタのヘッドノード110およびJobIdを識別する。開発者アプリケーション116は、ジョブのユーザプロセス128のためのコンピュートノード名とプロセスidとのリストについて、スケジューラ124に問い合わせを行う。
403では、スケジューラ124によって返されたリスト内のコンピュートノード106ごとに、開発者アプリケーション116は、診断サービス136のポートDSをディレクトリサービス132に登録する。今度は、ディレクトリサービス132が、DSについてのNATポートマッピングを要求する。ディレクトリサービス132は、マップポートDSpを返す。このプロセスは、コンピュートノード106ごとに1つのDSpが生成されるという結果をもたらす。DSpに送信されるメッセージは、ヘッドノード110を介して対応するDSに回送される。
404では、コンピュートノード106ごとに、開発者アプリケーション116は、アタッチ要求をDSpに送信する。メッセージは、ポートDS上でコンピュートノード106の診断サービス136に転送される。診断サービス136は、コンピュートノード106上でリモートエージェント114のインスタンスを生成する。リモートエージェント114は、ポートDrをオープンし、開発者アプリケーション116に関連するクライアント102のデバッガからのデバッガ接続要求をリスンする。リモートエージェント114が開始された後、診断サービス136は、Drをディレクトリサービス132に登録する。その後、アタッチ要求が完了する。
405では、開発者アプリケーション116は、コンピュートノード106ごとに1つのマップポートDrpを受け取るまで、ユーザのジョブのために登録されたすべてのポートについてディレクトリサービス132にポーリングを行う。ディレクトリサービス132は、要求を満たすのに必要とされるポートマッピングをNATを介して生成する。
406では、ジョブのためにポートが生成されると、ディレクトリサービス132は、ジョブが終了していないことを検証するために、定期的にスケジューラ124にポーリングを行う。
407では、各コンピュートノード106上のユーザプロセス128ごとに、開発者アプリケーション116は、Drpを介してコンピュートノード106上のリモートエージェント114に接続し、ユーザプロセス128のためのデバッギングセッションを開始する。デバッギングセッションが完了するまで、メッセージが、開発者アプリケーション116(具体的には開発者アプリケーションのデバッガモジュール)とリモートエージェント114の間で継続的にやり取りされる。デバッギングセッションの完了後すぐに、またはしばらく経ってから、ユーザプロセス128が終了し、ジョブが終了する。
408では、ディレクトリサービス132は、スケジューラ124を介してジョブ完了を発見し、すべてのDrp転送ポートを削除する。
409では、ディレクトリサービス132は、ジョブに関連するすべてのDSpポートも削除する。
以下の説明では、今度は、実行できる多くの方法および方法ステップについて言及する。方法ステップは、ある順序で説明され、またはフローチャートでは特定の順序で生じるように示されるが、特定の順序は、特別に述べられていない限り必要ではなく、またはあるステップはそのステップが実行される前に完了している別のステップに従属するので必要ではない。
ここで図5を参照すると、方法500が示されている。方法500は、クラスタコンピューティングシステムを含むコンピューティング環境において実施することができる。方法500は、デバッギングプロセスを起動するためのステップを含む。方法500は、クラスタプライベートネットワーク上のコンピュートノードにおいて、パブリックネットワーク上のクライアントからヘッドノードのスケジューラを介してデバッグジョブを受信するステップ(ステップ502)を含む。ヘッドノードは、プライベートネットワークとパブリックネットワークの両方に接続される。パブリックネットワークは、クラスタプライベートネットワークの外部に存在する。例えば、図1に示されるように、コンピュートノード106は、クライアント102から、ヘッドノード110を介して、特にヘッドノード110のスケジューラ124を介して回送されるデバッグジョブを受信することができる。
方法500は、デバッグジョブの処理に着手し、結果として、コンピュートノードにおいて1つまたは複数のデバッガリモートエージェントを始動させることによって、デバッギングを開始するステップ(ステップ504)をさらに含む。例えば、図1を参照すると、リモートエージェント114を開始することができる。
方法500は、コンピュートノードにおいて、始動させたデバッガリモートエージェントの存在下で、ユーザジョブを処理することに着手するステップ(ステップ506)をさらに含む。例えば、コンピュートノード106は、動作中のリモートエージェント114の存在下で、ユーザプロセス128の処理に着手することができる。
方法500は、ユーザジョブをデバッグする準備が1つまたは複数のデバッガリモートエージェントにおいて整ったことをクライアントに通知するステップをさらに含む。例えば、図1は、メッセージをプロキシ122に送信することができ、次に、そのメッセージが開発者アプリケーション116のリスナ118に転送されることを示している。
方法500は、クライアントにおけるデバッガクライアントを1つまたは複数のデバッガリモートエージェントに接続するステップをさらに含む。例えば、開発者アプリケーション116に含まれるデバッガは、上で説明したように、1つまたは複数のリモートエージェント114に接続することができる。
ここで図6を参照すると、別の方法600が示されている。方法600は、クラスタコンピューティングシステムを含むコンピューティング環境で実施することができる。方法600は、デバッギングプロセスをアタッチするためのステップを含む。方法600は、ユーザジョブを実行しているクラスタプライベートネットワーク上のコンピュートノードにおいて、デバッグジョブを、パブリックネットワーク上のクライアントから、クラスタプライベートネットワークとパブリックネットワークの両方に接続されたシステムを介して受信するステップ(ステップ602)を含む。パブリックネットワークは、クラスタプライベートネットワークの外部に存在する。例えば、図2に示されるように、パブリックネットワーク104およびクラスタプライベートネットワーク108が示されている。クライアント102は、パブリックネットワーク104上に存在し、コンピュートノード106は、クラスタプライベートネットワーク108上に存在する。コンピュートノードは、デバッグジョブを開始するために、ルーティングノード112からメッセージを受信することができる。
方法600は、デバッグジョブを処理することに着手し、結果として、コンピュートノードにおいて1つまたは複数のデバッガリモートエージェントを始動させることによって、ユーザジョブのデバッギングを開始するステップ(ステップ604)をさらに含む。具体的には、アタッチサービス130が、ユーザエージェント114を開始することができる。
方法600は、ユーザジョブをデバッグする準備が1つまたは複数のデバッガリモートエージェントにおいて整ったことをクライアントに通知するステップ(ステップ606)をさらに含む。
方法600は、結果として、クライアントのデバッガクライアントを1つまたは複数のデバッガリモートエージェントに接続するステップ(ステップ608)をさらに含む。
さらに、方法は、1つまたは複数のプロセッサと、コンピュータメモリなどのコンピュータ可読媒体とを含む、コンピュータシステムによって実施することができる。実際には、コンピュータメモリは、1つまたは複数のプロセッサによって実行されたときに、実施形態において列挙されたステップなど、様々な機能の実行を引き起こすコンピュータ実行可能命令を記憶することができる。
本発明の実施形態は、以下でより詳細に説明するように、コンピュータハードウェアを含む専用または汎用コンピュータを含むことができ、または利用することができる。本発明の範囲内の実施形態は、コンピュータ実行可能命令および/またはデータ構造を搬送または記憶するための物理的および他のコンピュータ可読媒体も含む。そのようなコンピュータ可読媒体は、汎用または専用コンピュータシステムによってアクセスできる任意の利用可能な媒体とすることができる。コンピュータ実行可能命令を記憶するコンピュータ可読媒体は、物理的記憶媒体である。コンピュータ実行可能命令を搬送するコンピュータ可読媒体は、伝送媒体である。したがって、限定することなく、例を挙げると、本発明の実施形態は、物理的コンピュータ可読記憶媒体と伝送コンピュータ可読媒体という、少なくとも2つの明確に異なる種類のコンピュータ可読媒体を含むことができる。
物理的コンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD−ROM、もしくは(CD、DVDなどの)他の光ディスク記憶、磁気ディスク記憶もしくは他の磁気記憶デバイス、または所望のプログラムコード手段をコンピュータ実行可能命令もしくはデータ構造の形態で記憶するために使用でき、汎用もしくは専用コンピュータによってアクセスできる他の任意の媒体を含む。
「ネットワーク」は、コンピュータシステムおよび/もしくはモジュールならびに/または他の電子デバイスの間での電子データの輸送を可能にする、1つまたは複数のデータリンクとして定義される。情報が、(有線、無線、または有線もしくは無線の組み合わせの)ネットワークまたは別の通信接続を介して、コンピュータに移送または提供される場合、コンピュータは、その接続を伝送媒体であると適切に見なす。伝送媒体は、所望のプログラムコード手段をコンピュータ実行可能命令またはデータ構造の形態で搬送するために使用でき、汎用または専用コンピュータによってアクセスできる、ネットワークおよび/またはデータリンクを含むことができる。上記の組み合わせもコンピュータ可読媒体の範囲内に含まれる。
さらに、様々なコンピュータシステムコンポーネントに送り届けられるとき、コンピュータ実行可能命令またはデータ構造の形態をとるプログラムコード手段は、伝送コンピュータ可読媒体から物理的コンピュータ可読記憶媒体に(またはそれとは反対方向に)自動的に移送することができる。例えば、ネットワークまたはデータリンクを介して受信されたコンピュータ実行可能命令またはデータ構造は、ネットワークインタフェースモジュール(例えば「NIC」)内のRAMにバッファリングすることができ、その後、最終的には、コンピュータシステムRAMに、および/またはコンピュータシステムの低揮発性のコンピュータ可読物理記憶媒体に移送することができる。したがって、コンピュータ可読物理記憶媒体は、伝送媒体を同様に(またはむしろ主として)利用するコンピュータシステムコンポーネント内に含むことができる。
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理デバイスに、何らかの機能または機能のグループを実行させる命令およびデータを含む。コンピュータ実行可能命令は、例えば、2進数、もしくはアセンブリ言語などの中間フォーマット命令とすることができ、またはソースコードとすることさえできる。本発明は、構造的特徴および/または方法論的ステップに特有の言葉で説明されたが、添付の特許請求の範囲において確定される本発明は、上で説明された特徴またはステップに必ずしも限定されるものではないことを理解されたい。むしろ、説明された特徴およびステップは、特許請求の範囲を実施する例示的な形態として開示されている。
本発明は、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、モバイル電話、PDA、ページャ、ルータ、およびスイッチなどを含む、多くのタイプのコンピュータシステム構成を有する、ネットワークコンピューティング環境において実施できることが当業者には理解されよう。本発明は、ネットワークを介して(有線データリンク、無線データリンク、または有線および無線データリンクの組み合わせによって)結合された、ローカルコンピュータシステムおよびリモートコンピュータシステムが、ともにタスクを実行する、分散システム環境において実施することもできる。分散システム環境では、プログラムモジュールは、ローカルおよびリモートメモリ記憶デバイスの両方において見出すことができる。
本発明は、本発明の主旨または特徴から逸脱することなく、他の特定の形態で具現することができる。説明された実施形態は、すべての点において、説明的なものにすぎず、限定的なものではないと見なすべきである。したがって、本発明の範囲は、上述の説明によってではなく、添付の特許請求の範囲によって示される。特許請求の範囲の均等物の意味および範囲内に含まれるすべての変更は、特許請求の範囲内に含まれるべきである。

Claims (15)

  1. クラスタコンピューティングシステムを含むコンピューティング環境において、デバッギングプロセスを起動する方法であって、
    クラスタプライベートネットワーク上のコンピュートノードにおいて、デバッグジョブを、ヘッドノードのスケジューラを介して受信するステップであって、前記デバッグジョブがパブリックネットワーク上のクライアントから生じ、前記ヘッドノードは、前記クラスタプライベートネットワークおよび前記パブリックネットワークの両方に接続され、前記パブリックネットワークは、前記クラスタプライベートネットワークの外部に存在する、ステップと、
    前記コンピュートノードにおいて前記デバッグジョブを処理することに着手し、結果として、前記コンピュートノードにおいてデバッガリモートエージェントを始動させることによって、デバッギングを開始するステップであって、前記デバッガリモートエージェントが、ネットワークポートをオープンし、前記クライアントにおけるデバッガクライアントから生ずるデバッガ接続要求を前記ネットワークポートにおいてリスンすることを含む、ステップと、
    前記コンピュートノードにおける前記始動させたデバッガリモートエージェントの存在下で、前記コンピュートノードにおいてユーザジョブを処理することに着手するステップと、
    前記ユーザジョブをデバッグする準備が前記デバッガリモートエージェントにおいて整ったことを前記クライアントに通知するステップと、
    前記クライアントに通知した結果として、前記コンピュートノードにおける前記デバッガリモートエージェントが、前記ネットワークポートにおいてデバッガ接続要求を受け、前記クライアントにおける前記デバッガクライアントを前記デバッガリモートエージェントに接続するステップと
    を含むことを特徴とする方法。
  2. 前記クライアントは、リスナを含み、前記クライアントにおける前記デバッガクライアントを前記デバッガリモートエージェントに接続することが、前記リスナを前記デバッガリモートエージェントに接続することを含むことを特徴とする請求項1に記載の方法。
  3. 通信は、前記クライアントからプルされることを特徴とする請求項2に記載の方法。
  4. 通信は、前記クライアントからプッシュされることを特徴とする請求項2に記載の方法。
  5. 前記クライアントと前記コンピュートノードの間の通信は、前記パブリックネットワークと前記クラスタプライベートネットワークの両方に結合されたシステム上のプロキシを介するものであることを特徴とする請求項1に記載の方法。
  6. 前記クライアントと前記コンピュートノードの間の通信は、前記パブリックネットワークと前記クラスタプライベートネットワークの両方に結合されたシステム上のNATサービスを介するものであることを特徴とする請求項1に記載の方法。
  7. 前記ユーザジョブを前記パブリックネットワーク上の前記クライアントから前記ヘッドノードの前記スケジューラを介して受信するステップをさらに含むことを特徴とする請求項1に記載の方法。
  8. 前記クライアントと前記コンピュートノードの間の通信を円滑化するために、1つまたは複数のプロキシポートをオープンするステップをさらに含み、前記1つまたは複数のプロキシポートは、13225から13719までの範囲から選択されることを特徴とする請求項1に記載の方法。
  9. 前記クライアントは、クラスタコンピューティング用のアプリケーションを開発するために開発者によって使用される開発者アプリケーションを含み、前記クライアントからのメッセージは、前記開発者アプリケーションから受信されることを特徴とする請求項1に記載の方法。
  10. クラスタコンピューティングシステムを含むコンピューティング環境において、デバッギングプロセスをアタッチする方法であって、
    ユーザジョブを実行しているクラスタプライベートネットワーク上のコンピュートノードにおいて、デバッグジョブを始動させるためのメッセージを、パブリックネットワーク上のクライアントから、前記クラスタプライベートネットワークと前記パブリックネットワークの両方に接続されたヘッドノードを介して受信するステップであって、前記パブリックネットワークは、前記クラスタプライベートネットワークの外部に存在する、ステップと、
    前記コンピュートノードにおいて前記デバッグジョブを処理することに着手し、結果として、前記コンピュートノードにおいてデバッガリモートエージェントを始動させることによって、前記ユーザジョブのデバッギングを開始するステップであって、前記デバッガリモートエージェントが、ネットワークポートをオープンし、前記クライアントにおけるデバッガクライアントから生ずるデバッガ接続要求を前記ネットワークポートにおいてリスンすることを含む、ステップと、
    前記ユーザジョブをデバッグする準備が前記デバッガリモートエージェントにおいて整ったことを前記クライアントに通知するステップと、
    前記クライアントに通知した結果として、前記コンピュートノードにおける前記デバッガリモートエージェントが、前記ネットワークポートにおいてデバッガ接続要求を受け、前記クライアントにおけるデバッガクライアントを前記デバッガリモートエージェントに接続するステップと
    を含むことを特徴とする方法。
  11. 前記クライアントは、リスナを含み、前記クライアントにおける前記デバッガクライアントを前記デバッガリモートエージェントに接続することが、前記リスナを前記デバッガリモートエージェントに接続することを含むことを特徴とする請求項10に記載の方法。
  12. 通信は、前記クライアントからプルされることを特徴とする請求項11に記載の方法。
  13. 通信は、前記クライアントからプッシュされることを特徴とする請求項11に記載の方法。
  14. 前記クライアントと前記コンピュートノードの間の通信は、前記パブリックネットワークと前記クラスタプライベートネットワークの両方に結合されたシステム上のプロキシを介するものであることを特徴とする請求項10に記載の方法。
  15. 前記クライアントと前記コンピュートノードの間の通信は、前記パブリックネットワークと前記クラスタプライベートネットワークの両方に結合されたシステム上のNATサービスを介するものであることを特徴とする請求項10に記載の方法。
JP2013531628A 2010-09-30 2011-09-14 コンピュートクラスタ(computecluster)上でのデバッガ起動およびアタッチ Active JP5906246B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/894,590 2010-09-30
US12/894,590 US8589885B2 (en) 2010-09-30 2010-09-30 Debugger launch and attach on compute clusters
PCT/US2011/051661 WO2012050723A1 (en) 2010-09-30 2011-09-14 Debugger launch and attach on compute clusters

Publications (3)

Publication Number Publication Date
JP2013539131A JP2013539131A (ja) 2013-10-17
JP2013539131A5 JP2013539131A5 (ja) 2014-11-06
JP5906246B2 true JP5906246B2 (ja) 2016-04-20

Family

ID=45890926

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013531628A Active JP5906246B2 (ja) 2010-09-30 2011-09-14 コンピュートクラスタ(computecluster)上でのデバッガ起動およびアタッチ

Country Status (8)

Country Link
US (1) US8589885B2 (ja)
EP (1) EP2622484B1 (ja)
JP (1) JP5906246B2 (ja)
KR (1) KR101855541B1 (ja)
CN (1) CN102523100B (ja)
CA (1) CA2811002A1 (ja)
HK (1) HK1170609A1 (ja)
WO (1) WO2012050723A1 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10169199B2 (en) 2008-06-10 2019-01-01 Microsoft Technology Licensing, Llc Automatic model-specific debugger extensions
US8402465B2 (en) * 2009-11-24 2013-03-19 Cray Inc. System tool placement in a multiprocessor computer
US8589885B2 (en) * 2010-09-30 2013-11-19 Microsoft Corporation Debugger launch and attach on compute clusters
JP2012079130A (ja) * 2010-10-01 2012-04-19 Fujitsu Ltd デバッグ支援プログラム、デバッグ支援装置、及びデバッグ支援方法
US8904356B2 (en) 2010-10-20 2014-12-02 International Business Machines Corporation Collaborative software debugging in a distributed system with multi-member variable expansion
US8671393B2 (en) 2010-10-21 2014-03-11 International Business Machines Corporation Collaborative software debugging in a distributed system with client-specific dynamic breakpoints
US9009673B2 (en) 2010-10-21 2015-04-14 International Business Machines Corporation Collaborative software debugging in a distributed system with collaborative step over operation
US8972945B2 (en) 2010-10-21 2015-03-03 International Business Machines Corporation Collaborative software debugging in a distributed system with client-specific access control
US8850397B2 (en) 2010-11-10 2014-09-30 International Business Machines Corporation Collaborative software debugging in a distributed system with client-specific display of local variables
US8990775B2 (en) 2010-11-10 2015-03-24 International Business Machines Corporation Collaborative software debugging in a distributed system with dynamically displayed chat sessions
US9411709B2 (en) 2010-11-10 2016-08-09 International Business Machines Corporation Collaborative software debugging in a distributed system with client-specific event alerts
US8656360B2 (en) * 2011-04-20 2014-02-18 International Business Machines Corporation Collaborative software debugging in a distributed system with execution resumption on consensus
US8739127B2 (en) 2011-04-20 2014-05-27 International Business Machines Corporation Collaborative software debugging in a distributed system with symbol locking
US8806438B2 (en) 2011-04-20 2014-08-12 International Business Machines Corporation Collaborative software debugging in a distributed system with variable-specific messages
US8756577B2 (en) 2011-06-28 2014-06-17 International Business Machines Corporation Collaborative software debugging in a distributed system with private debug sessions
US9720809B2 (en) 2012-02-17 2017-08-01 Microsoft Technology Licensing, Llc Dynamically enabling debugging over the internet
US8990778B1 (en) * 2012-09-14 2015-03-24 Amazon Technologies, Inc. Shadow test replay service
CN103856361B (zh) * 2012-11-29 2017-10-10 腾讯科技(深圳)有限公司 实现远程调试的方法及系统
US10182128B1 (en) 2013-02-07 2019-01-15 Amazon Technologies, Inc. Optimization of production systems
US9836388B1 (en) 2013-09-26 2017-12-05 Amazon Technologies, Inc. Software testing environment that includes a duplicating proxy service
US10389697B1 (en) 2014-08-27 2019-08-20 Amazon Technologies, Inc. Software container activation and throttling
CN104184823B (zh) * 2014-09-05 2017-11-14 北京京东尚科信息技术有限公司 一种自动化任务调度的方法和系统
CN104375938B (zh) * 2014-11-20 2017-09-05 工业和信息化部电信研究院 安卓应用程序的动态行为监测方法及系统
US10592295B2 (en) 2017-02-28 2020-03-17 International Business Machines Corporation Injection method of monitoring and controlling task execution in a distributed computer system
US10545740B2 (en) * 2017-10-25 2020-01-28 Saudi Arabian Oil Company Distributed agent to collect input and output data along with source code for scientific kernels of single-process and distributed systems
US10762234B2 (en) * 2018-03-08 2020-09-01 International Business Machines Corporation Data processing in a hybrid cluster environment
US11392482B2 (en) 2019-01-03 2022-07-19 Microsoft Technology Licensing, Llc Data breakpoints on certain kinds of functions
GB201905835D0 (en) * 2019-04-26 2019-06-12 Ibm On-premise and off-premise debugging
WO2021003870A1 (zh) * 2019-10-14 2021-01-14 深圳晶泰科技有限公司 面向分布式高性能计算集群调试系统
US11922195B2 (en) 2021-04-07 2024-03-05 Microsoft Technology Licensing, Llc Embeddable notebook access support

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6058393A (en) * 1996-02-23 2000-05-02 International Business Machines Corporation Dynamic connection to a remote tool in a distributed processing system environment used for debugging
US5933639A (en) * 1996-05-17 1999-08-03 International Business Machines Corporation System and method for debugging distributed programs
US6357019B1 (en) 1999-01-29 2002-03-12 International Business Machines Corporation Method and apparatus for employing network loadable debugging agents, capable of first failure support on retail versions of software products
US6986124B1 (en) * 1999-07-21 2006-01-10 Sun Microsystems, Inc. Debugger protocol generator
US6598067B1 (en) * 1999-07-26 2003-07-22 American Management Systems, Inc. Application server framework
JP2001051871A (ja) * 1999-08-09 2001-02-23 Ricoh Co Ltd リモートデバッグ装置
US20030204838A1 (en) * 2002-04-30 2003-10-30 Eric Caspole Debugging platform-independent software applications and related code components
US7185319B2 (en) * 2002-07-09 2007-02-27 Microsoft Corporation Debugging distributed applications
US7124320B1 (en) 2002-08-06 2006-10-17 Novell, Inc. Cluster failover via distributed configuration repository
EP1408410A1 (en) 2002-09-30 2004-04-14 Sap Ag Remote debugging of computer programs
US7530053B2 (en) * 2003-02-27 2009-05-05 Bea Systems, Inc. Methods utilizing a debugging proxy
US7441036B2 (en) * 2003-04-01 2008-10-21 International Business Machines Corporation Method and system for a debugging utility based on a TCP tunnel
JP4119295B2 (ja) * 2003-04-07 2008-07-16 東京エレクトロン株式会社 保守・診断データ蓄積サーバ、保守・診断データの蓄積・取得システム、保守・診断データの蓄積・提供システム
US7197745B2 (en) * 2003-05-02 2007-03-27 Microsoft Corporation User debugger for use on processes running in a high assurance kernel in an operating system
US7814463B2 (en) * 2003-05-16 2010-10-12 Oracle International Corporation User interface debugger for software applications
US7412625B2 (en) * 2003-05-27 2008-08-12 American Megatrends, Inc. Method and system for remote software debugging
US20050050159A1 (en) * 2003-09-03 2005-03-03 Zeev Suraski Remote debugging of web applications
US8180845B2 (en) * 2003-12-17 2012-05-15 Sap Ag Remote debugging of software
US20050216895A1 (en) * 2004-03-23 2005-09-29 Tran Hieu T Method and apparatus for remote debugging of kernel and application software
US7512934B2 (en) * 2004-08-25 2009-03-31 Microsoft Corporation Parallel debugger
US20060161896A1 (en) * 2005-01-14 2006-07-20 International Business Machines Corporation Performing debug requests that are within the debug domain of a class loader
US20060174225A1 (en) * 2005-02-01 2006-08-03 International Business Machines Corporation Debugging a High Level Language Program Operating Through a Runtime Engine
US7748033B2 (en) * 2005-02-25 2010-06-29 Microsoft Corporation Windows remote debugger service
US7673180B1 (en) * 2005-05-05 2010-03-02 Sun Microsystems, Inc. Method and apparatus for dispatching a remote debugging agent in a distributed computing environment
US7634760B1 (en) * 2005-05-23 2009-12-15 Netapp, Inc. System and method for remote execution of a debugging utility using a remote management module
US20070055957A1 (en) * 2005-09-07 2007-03-08 Richard Birenheide Remote debugging proxy
US7818623B2 (en) 2005-10-25 2010-10-19 Hewlett-Packard Development Company, L.P. Kernel debugging in a cluster computing system
JP4388518B2 (ja) * 2005-11-01 2009-12-24 株式会社ソニー・コンピュータエンタテインメント スレッドデバッグ装置、スレッドデバッグ方法及びプログラム
US7669186B2 (en) * 2005-11-16 2010-02-23 Sun Microsystems, Inc. Debugging applications at resource constrained virtual machines using dynamically installable lightweight agents
US7660412B1 (en) 2005-12-09 2010-02-09 Trend Micro Incorporated Generation of debug information for debugging a network security appliance
US20070168997A1 (en) * 2005-12-20 2007-07-19 Duong-Han Tran Debugging of remote application software on a local computer
US20080301685A1 (en) * 2007-05-31 2008-12-04 Novell, Inc. Identity-aware scheduler service
US8370839B2 (en) * 2007-07-20 2013-02-05 International Business Machines Corporation Monitoring message queues in message queuing information systems and initiating batch jobs to perform functions on the message queues
CN101360067B (zh) * 2007-07-30 2012-11-07 国际商业机器公司 基于消息收发系统的组联合调试系统、方法
US20090094684A1 (en) * 2007-10-05 2009-04-09 Microsoft Corporation Relay server authentication service
CN101159587A (zh) * 2007-11-07 2008-04-09 华为技术有限公司 一种远程开局的方法和系统
US8205120B2 (en) * 2007-12-21 2012-06-19 Sap Ag Intelligent test framework
US20090276431A1 (en) * 2008-05-01 2009-11-05 Kabira Technologies, Inc. Java virtual machine having integrated transaction management system
US8108466B2 (en) 2008-05-01 2012-01-31 Microsoft Corporation Automated offloading of user-defined functions to a high performance computing system
US10169199B2 (en) 2008-06-10 2019-01-01 Microsoft Technology Licensing, Llc Automatic model-specific debugger extensions
US8156476B2 (en) * 2008-06-10 2012-04-10 Microsoft Corporation Debugging support for tasks in multithreaded environments
US20090328005A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Debugger call stack caching
US20100057865A1 (en) * 2008-09-04 2010-03-04 International Business Machines Corporation Transferable Debug Session in a Team Environment
CN101441579B (zh) * 2008-12-02 2011-05-04 南京大学 一种基于集群计算系统的三维模型库特征提取方法
US9703678B2 (en) * 2008-12-23 2017-07-11 Microsoft Technology Licensing, Llc Debugging pipeline for debugging code
US8346870B2 (en) * 2009-05-06 2013-01-01 Microsoft Corporation Low-privilege debug channel
US8407723B2 (en) * 2009-10-08 2013-03-26 Tibco Software, Inc. JAVA virtual machine having integrated transaction management system and facility to query managed objects
US8352621B2 (en) * 2009-12-17 2013-01-08 International Business Machines Corporation Method and system to automatically optimize execution of jobs when dispatching them over a network of computers
US8752017B2 (en) * 2010-05-17 2014-06-10 Salesforce.Com, Inc. Method and system for remote debug protocol proxying for production debugging; selective session and user routing for debugging in multi-tenant cloud computing infrastructure
US8856742B2 (en) * 2010-06-11 2014-10-07 International Business Machines Corporation Distributed debugging
US8589885B2 (en) * 2010-09-30 2013-11-19 Microsoft Corporation Debugger launch and attach on compute clusters
US8412984B2 (en) * 2010-11-12 2013-04-02 Microsoft Corporation Debugging in a cluster processing network

Also Published As

Publication number Publication date
EP2622484A4 (en) 2017-11-01
CA2811002A1 (en) 2012-04-19
EP2622484B1 (en) 2020-03-18
KR101855541B1 (ko) 2018-05-04
KR20130139897A (ko) 2013-12-23
CN102523100B (zh) 2015-01-28
CN102523100A (zh) 2012-06-27
US8589885B2 (en) 2013-11-19
HK1170609A1 (en) 2013-03-01
JP2013539131A (ja) 2013-10-17
EP2622484A1 (en) 2013-08-07
WO2012050723A1 (en) 2012-04-19
US20120084753A1 (en) 2012-04-05

Similar Documents

Publication Publication Date Title
JP5906246B2 (ja) コンピュートクラスタ(computecluster)上でのデバッガ起動およびアタッチ
US10698717B2 (en) Accelerator virtualization method and apparatus, and centralized resource manager
CA2851249C (en) Integrated software development and deployment architecture and high availability client-server systems generated using the architecture
EP3454214A1 (en) Infrastructure instantiation, collaboration, and validation architecture for serverless execution frameworks
JP4638676B2 (ja) 共有リソースのための通知方法
JP2009508260A (ja) 複数のプロセスにおけるポートの共有
JP2010231759A (ja) モバイルクラウドプラットホームを具備したモバイル端末装置
TW200843431A (en) System, computer program product and method of communicating with session initiation protocol (SIP) application sessions using a message-oriented middleware
JP2003208365A (ja) 適応ディスパッチャを有する仮想ネットワーク
US20070118842A1 (en) DDS-assisted CORBA discovery
US8566847B2 (en) Out-of-band host management via a management controller
WO2013097484A1 (zh) 虚拟机集群的负载均衡方法、服务器及系统
WO2021239157A1 (zh) 一种应用调试方法、装置、设备及介质
WO2019205555A1 (zh) 消息推送方法及装置
Butler et al. Components and interfaces of a process management system for parallel programs
US9537931B2 (en) Dynamic object oriented remote instantiation
CN114025005A (zh) 一种数据通讯方法、系统、电子设备及存储介质
JP5381242B2 (ja) マルチプロセッサシステム及び制御プログラム
JP2009530707A (ja) コマンドラインのパイプライン化
US20230171830A1 (en) Apparatus and method for configuring data communication between robot components in different networks
WO2015122194A1 (ja) リアルタイム通信システム、リアルタイム通信装置、リアルタイム通信方法および記録媒体
Stout Kestrel: Job Distribution and Scheduling using XMPP
CN117155904A (zh) 一种服务注册方法
van Nieuwpoort et al. Experiences Deploying Parallel Applications on a Large-scale Grid
JP5805312B1 (ja) 呼出アダプタプログラム及び呼出方法

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130703

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130717

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140916

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140916

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150515

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150520

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150612

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150911

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160318

R150 Certificate of patent or registration of utility model

Ref document number: 5906246

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250