JP6280126B2 - ドメイン固有言語をデバッグするためのシステムおよび方法 - Google Patents

ドメイン固有言語をデバッグするためのシステムおよび方法 Download PDF

Info

Publication number
JP6280126B2
JP6280126B2 JP2015539944A JP2015539944A JP6280126B2 JP 6280126 B2 JP6280126 B2 JP 6280126B2 JP 2015539944 A JP2015539944 A JP 2015539944A JP 2015539944 A JP2015539944 A JP 2015539944A JP 6280126 B2 JP6280126 B2 JP 6280126B2
Authority
JP
Japan
Prior art keywords
debug
dsl
code
execution
machine
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
JP2015539944A
Other languages
English (en)
Other versions
JP2015533007A5 (ja
JP2015533007A (ja
Inventor
スミルジャニック,ジョン
ビナヤカ,シャイレシュ
ドリスコール,ジェームズ
Original Assignee
オラクル・インターナショナル・コーポレイション
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 オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2015533007A publication Critical patent/JP2015533007A/ja
Publication of JP2015533007A5 publication Critical patent/JP2015533007A5/ja
Application granted granted Critical
Publication of JP6280126B2 publication Critical patent/JP6280126B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

背景
ビジネスユーザは、クラウドコンピューティングシステムを介して自身のカスタムソフトウェアを開発することがますます可能になってきている。会計士または経営者などの一般的なビジネスユーザは、ソフトウェア開発者ではない。そのため、ソフトウェア開発を行うためにビジネスユーザに提供されるリソースは、一般に、特定の問題またはビジネスドメインに合わせられる。例えば、ビジネスユーザは、ドメイン固有言語(domain specific language:DSL)を利用してもよく、当該ドメイン固有言語は、Java(登録商標)などの汎用プログラミング言語と比較して、平均的なビジネスユーザが作業するのをより容易かつ直感的なものにするビジネスに特有のロジックを含み得る。
ソフトウェア開発者は、コードを書込んでいるとき、デバッグモードで当該コードをコンパイルおよび実行することができる。デバッグモードは、開発者が書込んだコードがいかに実行されているかを知るための手がかりを開発者に与える。コードがデバッグモードで実行されると、一般的に言って、開発者は、実行中に変数値を見て、開発者が実行の継続をトリガするまでコードの実行が停止するブレークポイントを設定し、および/または、ラインベースでコードの実行を一ステップずつ実行し得る。
クラウドにおいてビジネスロジックを指定するためのDSLの使用は、それらの言語をサポートするためにデバッガを作成することを必要とする。クラウドベースの開発が増加するにつれて、DSLおよびそれらのデバッガの数も増加してきた。現在のデバッガの機能の多くは、全ての言語に共通である。例えば、デバッガは、制御フローを視覚化し、マシン変数の検査をサポートする。しかし、デバッガを作成するための普遍的な共通のアーキテクチャはない。このため、デバッガを作成するにあたっての努力が業界全体で重複することになり、デバッガ間の互換性がないことになる。
簡単な概要
ドメイン固有言語をデバッグするためのシステムおよび方法を提供する。実施例によれば、1つのこのようなシステムは、バーチャルマシンと、デバッグ実行マシンと、ドメイン固有言語(DSL)に特有のツールインターフェースとを含むウェブを備え得る。ウェブサーバは、開発者コンピュータから受取られたDSLコードをコンパイルするように構成される。コンパイル中、DSLコードは、開発者コンピュータから受取られたデバッグ情報を含むようにインストルメント化される。また、ウェブサーバは、インストルメント化されたコードをバーチャルマシンが実行するように構成される。実行中、デバッグ実行マシンの状態がバーチャルマシンの状態を反映するように、インストルメント化されたコードはデバッグ実行マシンと通信する。本発明の実施例は、DSLのためのデバッガを作成するための普遍的な共通のアーキテクチャとしてJavaプラットフォームデバッグアーキテクチャ(Java Platform Debug Architecture:JPDA)を利用するものとして本明細書に記載されている。本明細書では特にJPDAおよびJavaプラットフォームを参照するが、他のデバッグアーキテクチャも同様に利用されてもよい。
実施例によれば、DSLに特有のツールインターフェースは、デバッグ実行マシンによって実装される。デバッグ実行マシンは、デバッグクライアントとコードを実行するバーチャルマシンとの間の媒介役の役割を果たし得る。さらに、デバッグ実行マシンはリスナを実装し得て、リスナは、開発者コンピュータにおけるデバッグインターフェースからデバッグ要求を受取り、デバッグインターフェースにデバッグイベントを送ることができる。開発者コンピュータから受取られたデバッグ情報は、ブレークポイントを設定するための命令、変数値の要求および実行を継続するための命令のうちの1つ以上を含み得る。
いくつかの実施例では、ウェブサーバは、開発者コンピュータにおけるデバッグクライアントからデバッグ情報を受取り、デバッグクライアントは、デバッグインターフェースを介して、デバッグ情報をウェブサーバに送る。実施例によれば、デバッグインターフェースは、Javaデバッグインターフェース(Java Debug Interface:JDI)であり得て、デバッグインターフェースは、Javaデバッグワイヤプロトコル(Java Debug Wire Protocol:JDWP)を使用してDSLに特有のツールインターフェースと通信し得る。
実施例によれば、ドメイン固有言語(DSL)コードをデバッグするための方法を1つ以上のプロセッサに実行させるためのコンピュータプログラムを提供する。当該コンピュータプログラムは、コンピュータ読取可能媒体およびプロセッサを含む開発者コンピュータからDSLコードをウェブサーバにおいて受取るステップと、開発者コンピュータから受取られたDSLコードをコンパイルするステップと、コンパイル中、開発者コンピュータから受取られたデバッグ情報を含むようにDSLコードをインストルメント化するステップと、インストルメント化されたコードをバーチャルマシンで実行するステップとを1つ以上のプロセッサに実行させ、実行中、デバッグ実行マシンの状態がバーチャルマシンの状態を反映するように、インストルメント化されたコードはデバッグ実行マシンと通信する。
別の実施例は、ドメイン固有言語コードをデバッグするためのシステムを提供し、当該システムは、ウェブサーバを備え、当該ウェブサーバは、デバッグ実行マシンと、開発者コンピュータから受取られたDSLコードをコンパイルするためのコンパイラとを含み、コンパイル中、DSLコードは、開発者コンピュータから受取られたデバッグ情報を含むようにインストルメント化され、当該ウェブサーバはさらに、インストルメント化されたコードを実行するためのバーチャルマシンを含み、実行中、デバッグ実行マシンの状態がバーチャルマシンの状態を反映するように、インストルメント化されたコードはデバッグ実行マシンと通信する。
いくつかの実施例では、デバッグ実行マシンは、DSLに特有のツールインターフェースをさらに備える。
いくつかの実施例では、デバッグ実行マシンは、デバッグインターフェースからデバッグ要求を受取り、デバッグインターフェースにデバッグイベントを送るように接続を構築するために使用可能なリスナをさらに備える。
いくつかの実施例では、ウェブサーバは、ウェブサーバにおけるデバッグインターフェースを介して、開発者コンピュータにおけるデバッグクライアントからデバッグ情報を受取る。デバッグインターフェースは、Javaデバッグインターフェース(JDI)であり得る。デバッグインターフェースは、Javaデバッグワイヤプロトコル(JDWP)を使用してDSLに特有のツールインターフェースと通信し得る。
いくつかの実施例では、デバッグ情報は、ブレークポイントを設定するための命令、変数値の要求および実行を継続するための命令のうちの1つ以上を含み得る。
いくつかの実施例では、ウェブサーバは、クラウドベースの開発環境における複数のウェブサーバのうちの1つである。
いくつかの実施例では、開発者コンピュータは、クライアントアプリケーションを使用して、ネットワークを介して、クラウドベースの開発環境におけるウェブサーバにアクセスし得る。
いくつかの実施例では、デバッグ情報は、クライアントアプリケーションを通じて、ネットワークを介して受取られる。
JPDAを使用してJavaコードをデバッグするためのシステムを示す。 本発明の実施例に係るドメイン固有言語に書込まれたコードをデバッグするための普遍的なデバッグアーキテクチャを示す。 本発明の実施例に係るデバッグ機能を含むDSLコードをコンパイルするように構成されたシステムの実施例を示す。 本発明の実施例に係る普遍的なデバッグアーキテクチャを使用してデバッグする方法を示す。 コンピュータシステムの実施例を示す。
詳細な説明
以下の説明では、説明の目的で、本発明の実施例が完全に理解されるように具体的な詳細について説明する。しかし、これらの具体的な詳細がなくても本発明の実施例を実施できることは明らかであろう。
ビジネスユーザは、クラウドコンピューティング環境にホストされる開発環境へのウェブインターフェースを介するなどして、自身のソフトウェアを開発することがますます可能になっている。これらのビジネスユーザは一般にソフトウェア開発者ではないので、ソフトウェア開発は一般に、ドメイン固有言語(DSL)を使用して行われる。DSLは、特定の問題またはビジネスドメインに特有の特化された機能を提供する。JavaまたはC♯などの汎用プログラミング言語とは対照的に、DSLは、ビジネスユーザがより高いレベルで、例えばよりユーザフレンドリで学習しやすい機能および方法を使用してプログラムすることを可能にする。例えば、DSLは、会計または保険に特有の機能を実行することができるようにする表現を含んでいてもよい。DSLは、Groovyなどの他の言語またはプラットフォームを使用して開発可能であり、当該Groovyは、Javaの上位セットであり、そのためDSL構造とともに標準的なJavaインプリメンテーションの全ての機能を提供する。本明細書で詳細に説明する類似の原理は、他のプログラミング言語および非ビジネスロジック構成にも適用可能であるということが理解されるべきである。
特化されたDSLの普及に加えて、デバッガなどのビジネスユーザソフトウェア開発をサポートするためにさらに他のソフトウェア開発ツールが必要である。現在のデバッガの多くの機能は、全てのプログラミング言語に共通である。例えば、デバッガは、制御フローを視覚化し、マシン変数の検査をサポートする。各DSLごとに新たなデバッガを作成するのは、費用がかかりかつ冗長な作業である。したがって、デバッガの作成のための普遍的なアーキテクチャが必要である。
実施例によれば、このような普遍的なデバッガプラットフォームとしての機能を果たすようにJavaプラットフォームデバッグアーキテクチャ(JPDA)をカスタマイズすることができる。JPDAを参照して本発明の実施例を説明するが、他のデバッグアーキテクチャも利用可能である。普遍的なデバッグアーキテクチャを作成するためにJPDAを利用することによって、既存のJPDAツールもDSLとともに利用できる。JPDAは、例えば開発者のコンピュータにおけるデバッグクライアント(本明細書ではデバッガとも呼ばれる)が、例えばウェブサーバ上のバーチャルマシンで実行されるプログラムまたはプロセスと通信し、モニタリングし、制御することを可能にする基本的なアーキテクチャを提供する。
図1は、JPDAを使用してJavaコードをデバッグするためのシステムを示す。図1に示されるように、システム100は、開発者コンピュータシステム102と、ウェブサーバ104とを含み得る。JPDAは、開発者コンピュータシステム102を使用する開発者が、ウェブサーバ104において実行されるコードをデバッグすることを可能にする。JPDAは、いくつかの層、すなわちJavaバーチャルマシンツーリングインターフェース(Java Virtual Machine Tooling Interface:JVM TI)106、Javaデバッグワイヤプロトコル(JDWP)108およびJavaデバッグインターフェース(JDI)110を含んでいる。
JVM TI106は、デバッグされるアプリケーションが実行されるバーチャルマシン112によって実装されるインターフェースである。JVM TI106は、情報の要求(例えば現在のスタックフレーム)、アクション(例えばブレークポイントの設定)および通知(例えば実行中にブレークポイントに到達したとき)などの、デバッグのためにバーチャルマシン112が提供するサービスを規定する。一般的なJavaデバッガでは、JVM TIは、JVMと対話するためのインターフェースを規定する。一般的なJava開発環境では、開発されるコードを実行しているJavaバーチャルマシンがJVM TIを実装し、そのためJVMは、開発者システムから受取られたデバッグオペレーションを受取って、実行することができる。
Javaデバッグインターフェース(JDI)110は、バーチャルマシン112と通信するためにデバッグクライアント114が使用可能な情報および要求をユーザコードレベルで規定する開発者コンピュータシステム102によって実装されるJavaインターフェースである。Javaデバッグワイヤプロトコル(JDWP)108は、デバッグされるプログラムまたはプロセスとデバッグクライアントとの間で転送される情報および要求のフォーマットを規定する。JDWPにより、デバッグされるコード116およびデバッグクライアント114は、別々のバーチャルマシンインプリメンテーション下でおよび/または別々のプラットフォーム上で実行されることが可能になる。
図1に示されるシステムでは、開発者は、デバッグクライアント114を使用して、デバッグ命令、例えばブレークポイントの設定を入力し得る。この命令は、デバッグクライアントからJDI110に通信され、次いで、JDI110は、JDWP108を使用してネットワーク118を介してウェブサーバ104に当該命令を送ることができ、当該命令は、JVM TI106によって受取られる。コード116は、コンパイラ120によってコンパイルされると、デバッグ情報でインストルメント化され得る。バーチャルマシン112は、コード116を実行するとき、ブレークポイントをチェックし得て、ブレークポイントに到達すると、通知が開発者に返され得る。当該通知は、JDWP108を使用してJVM TI106からJDI110に送られ、次いでデバッグクライアント114を介して開発者に提示され得る。デバッグクライアントとウェブサーバとの間の通信は、デバッグが完了するまで同様に継続し得る。
図2は、本発明の実施例に係るドメイン固有言語に書込まれたコードをデバッグするための普遍的なデバッグアーキテクチャを示す。システム200は、開発者コンピュータシステム204と対話するウェブサーバ202を含み得る。実施例によれば、システム200は、各々が1つ以上の異なる開発者コンピュータシステムを提供する複数の開発者コンピュータシステムと複数のウェブサーバとを含むより大きなシステムの一部であってもよい。実施例によれば、開発者コンピュータシステム204は、デバッグクライアント208を含み得る。さらに、ウェブサーバ202は、バーチャルマシン210と、デバッグ実行マシン212と、コンパイラ214とを含み得る。バーチャルマシン210は、開発中のDSLコード218を実行することができ、デバッグ実行マシン212は、カスタムツールインターフェース216およびリスナ220を実装し得る。開発者コンピュータシステム204は、ネットワーク222を介してウェブサーバ202と通信し得る。デバッグインターフェース206も提供され得る。実施例によれば、デバッグインターフェース206は、ウェブサーバ202または開発者コンピュータシステム204のいずれかで実行され得る。
図2に示されるように、DSLデバッグ実行マシン212は、JVM TIのようなカスタムツールインターフェース216を実装する。図1に示される例では、デバッグされるコードを実行しているバーチャルマシンが、TIを実装し、開発者から直接デバッグ命令を受取る。しかし、図2に示される実施例では、デバッグ実行マシン212が、開発者とコードを実行するバーチャルマシン210との間の媒介役の役割を果たし得る。カスタムツールインターフェース216を実装することによって、デバッグ実行マシンは、デバッグインターフェース206およびDSLコード218を実行しているバーチャルマシン210などの別個の実行マシンと通信することができる。
実施例によれば、普遍的なデバッグアーキテクチャは、デバッグクライアント208とデバッグ実行マシン212との間の通信のためのプロトコルとしてJDWP224を使用し得る。DSLデバッガは、JDWPリスナ220を実装し得る。デバッグクライアント208が開始されると、デバッグクライアント208は、デバッグインターフェース206を介してリスナとの接続を構築し得る。デバッグ実行マシン212は、デバッグインターフェース206からデバッグ要求を受取り、デバッグインターフェース206にデバッグイベントを送るために当該接続を使用し得る。JDWPを使用することにより、実行マシンとその他のJPDAデバッグクライアントとの互換性とともに、対話のための正式なテストされたプロトコルが提供される。実施例によれば、DSLデバッガは、デバッグインターフェースとして標準的なJDIインプリメンテーションを使用し得る。これにより、デバッグクライアントを書込むために必要な作業の量が減少する。
コード218などのDSLプログラムがコンパイルされると、当該プログラムにおけるDSL命令がデバッグ情報でインストルメント化され得る。例えば、デバッグ情報は、表現実行についての情報、または、変数値などの状態情報をデバッグ実行マシン212に送るための命令を含み得る。実施例によれば、デバッグ実行マシン212は状態マシンであり、インストルメント化は、開発中のコードがバーチャルマシン210によって実行されるとデバッグ実行マシン212において状態遷移を開始させることを担っている。このように、デバッグ実行マシンは、DSLプログラムを実行しているバーチャルマシンの状態を反映する。さらに、バーチャルマシン210は、コードのインストルメント化を介してデバッグ実行マシン212と通信し得て、表現の評価および変数の変化をデバッグ実行マシン212に通知する。デバッグ実行マシン212は、表現についてブレークポイントが要求されたか否かを確認するためにチェックを行い、要求されていればバーチャルマシンスレッドの実行を一時停止して、JDWPを使用してデバッグインターフェース206に通知し得る。したがって、デバッグ実行マシンは、コードを実行しているバーチャルマシンと開発者との間の媒介役として動作する。
実施例によれば、デバッグ実行マシンおよびカスタムツールインターフェースは、DSLに関連付けられ得る。カスタムツールインターフェースは、DSLに特有のサービスを規定し得る。異なるDSLに対するサポートを提供するために、当該異なるDSLに特有の第2のデバッグ実行マシンおよび第2のカスタムツールインターフェースが実装されてもよい。
上記のように、実施例によれば、デバッグクライアント208は、JDWP224によってデバッグインターフェース206を介してデバッグ情報をウェブサーバ202に送り得る。いくつかの実施例では、デバッグインターフェースは、開発者コンピュータシステム204で実行され、JDWP224によってネットワーク222を介してウェブサーバ202と通信してもよい。しかし、いくつかのクラウドベースの開発環境では、所与のサーバの全てのポートがオープンであるとは限らない。例えば、ウェブサーバ202のJDWPポートはオープンになっていないかもしれず、または、利用可能なポートはサーバごとに異なり得る。これは、デバッグ命令の通信を妨げる可能性がある、クラウドベースの開発環境における開発者コンピュータシステム204とウェブサーバ202との間の通信問題を生じさせる。この通信問題に対処して、これらの開発環境を適合させるために、開発者コンピュータにおけるデバッグクライアント208は、ウェブサーバ202において実行されるデバッグインターフェース206のインプリメンテーションに、HTTPなどの非JDWPアプリケーションプロトコルによってネットワーク222を介してデバッグ情報を送り得る。ウェブサーバ202におけるデバッグインターフェースインプリメンテーション206は、開発者コンピュータシステムから受取られたデバッグ情報を通信するために、カスタムツールインターフェースとのローカルなJDWP接続をオープンにし得る。
図3は、デバッグ機能を含むDSLコードをコンパイルするように構成されたシステム300の実施例を示す。実施例によれば、システム300に示される各モジュールは、別段の指示がない限り、ウェブサーバ204の一部であってもよい。したがって、少なくともいくつかの実施例では、システム300は、システム200の一部として理解されることができる。システム300は、さまざまなモジュールを備え、各モジュールは、ソフトウェア、ファームウェアおよび/またはハードウェアを使用して実現されてもよい。構成要素は、コードソースモジュール310と、プリコンパイルモジュール315と、パーサモジュール320と、変換エンジン330と、コンパイラ340と、バーチャルマシン350と、デバッグ実行マシン360とを含んでいる。
コードソースモジュール310は、DSLコードを受取る働きをし得る。このコードは、コンパイルされると構文木レベルで編集され得るプログラミング言語の構文に書込まれ得る。例えば、DSLコードのためのプログラミング言語としてGROOVYが使用されてもよい。いくつかの実施例では、コードソースモジュール310は、図2に示されるように、ウェブベースのインターフェースを介して提出されるコードなどのDSLコードをリモートコンピュータシステムから受取るように構成され得る。コードソースモジュール310は、コンパイルされるコードを含むファイルにアクセスする働きをし得る。
プリコンパイルモジュール315は、コードソースモジュール310によって受取られたDSLコードのコンパイルプロセスの一部を完了させ得る。いくつかの実施例では、プリコンパイルモジュール315は、コードソースモジュール310によって受取られたDSLコードに1つ以上の表現を挿入し得る。パーサモジュール320は、構文木を作成するために、表現を含むDSLコードをパーズし得る。構文木は、抽象構文木であってもよい。現時点で、いくつかのプログラミング言語では、バイトコードがコンパイルされる前に構文木を変更することが可能であり得る。
変換エンジン330は、パーサモジュール320によって作成された構文木を変更し得る。変換エンジン330は、構文木の中の表現のうちのいくつかまたは全ての表現を追加または変更し得る。変数値が変更されるたびに、当該変数値がデバッグ実行マシン360に出力されるように構文木は変更され得る。したがって、実行中、デバッグ実行マシン360は、DSLコードに存在する各変数の現在の値を維持し得る。図2に示されるデバッグクライアント208などの開発者のデバッグクライアントは、それに応答してデバッグ実行マシン360が提供し得る変数の値を要求し得る。DSLコードに存在する各表現が実行された後、デバッグ実行マシン360から命令が受取られるまで実行が停止される(例えば一時停止またはループモードにされる)ように、表現が追加され得る。さらに、実行された表現または実行されようとしている表現の表示がデバッグ実行マシン360に提供され得る。次いで、デバッグ実行マシン360は、どの表現がたった今実行されたか、またはどの表現が実行されようとしているかということの表示を開発者のデバッグクライアントに提供し得る。デバッグ実行マシン360は、バーチャルマシン350が実行を継続することを可能にする前に、デバッグクライアントを介した開発者からの入力を待ち得る。開発者が特定の表現についてブレークポイントを示さなかった場合、デバッグ実行マシン360は、開発者がブレークポイントを示した表現に到達するまでDSLコードの実行が継続することを可能にし得る。
使用中のDSLによっては、コンパイラ340は、変更された構文木をバイトコードなどのより低いレベルの実行可能なコードにコンパイルし得る。コードソースモジュール310によって受取られたDSLコードは、プリコンパイルモジュール315および変換エンジン330によって変更されると、コンパイラ340によってコンパイルされ得る。
デバッグ実行マシン360と通信するバーチャルマシン350は、コンパイラ340によってコンパイルされたバイトコードを実行し得る。変換エンジン330によって変更された各表現ごとに、実行が継続すべきか否かを判断するためにデバッグ実行マシン360が照会され得る。また、デバッグ実行マシン360は、例えばこのような変数値がバーチャルマシン350から変更され得るたびに、変数の値を受取り得る。また、デバッグ実行マシン360は、実行されたDSLコードまたは実行されようとしているDSLコードの現在の表現の表示を受取り得る。このような情報は、デバッグ実行マシン360によって受取られ得る。バイトコードが次に進むことを許可される前に開発者コンピュータシステムからの入力がデバッグ実行マシン360によって要求され得て、および/または、デバッグ実行マシン360によってデバッグクライアントを介して(変数値などの)情報が開発者に出力され得る。
図4は、本発明の実施例に係る普遍的なデバッグアーキテクチャを使用してデバッグする方法を示す。ステップ400において、ウェブサーバは、コンピュータ読取可能媒体およびプロセッサを含む開発者コンピュータからDSLコードを受取り得る。このコードは、ウェブベースのインターフェースを介してDSLコードを提供する開発者の形態で受取られてもよく、または、コンパイルされていないDSLコードを含む1つ以上のファイルを提供することによって受取られてもよい。DSLコードがコンパイルされる前に、デバッグ注釈がDSLコードに追加可能である。当該注釈は、特定のクラスが呼出されるべきであることをコンパイラに示す役割を果たし得る。注釈は、ユーザによって手作業で追加されてもよく、またはコンパイラなどによって自動的に追加されてもよい。プログラミング言語としてGROOVYが使用される場合には、このような注釈は、全文変形または局所変形のいずれかとして追加され得て、コマンドラインまたはGroovyShell.parse()などのGROOVY APIからのものであり得るコンパイルステップでトリガされ得る。いくつかの実施例では、注釈の代わりに、構成スイッチ、プロパティファイルまたは環境変数などの他のトリガ機構が使用されてもよい。
ステップ402において、DSLコードがコンパイルされる。DSLコードのタイプによっては、コンパイルは構文木の作成を含み得る。構文木の各ノードは、コンパイルされていないDSLコードにおける表現に対応し得る。また、使用されるDSLは、使用されるDSLによって、バイトコード(もしくはマシンコード)または他のより低いレベルの実行可能なコードをコンパイルするために構文木が使用される前に、構文木の編集を許可し得る。構文木の表現は、構文木をパーズすることによって特定され得る。さらに、変数の値が変更され得る表現が、追加的に特定され得る。
ステップ404において、コンパイル中に、DSLコードがインストルメント化され得る。例えば、特定された各表現ごとに、変更された表現または追加の表現が追加され得る。このような変更された表現または追加の表現は、デバッグ実行マシンからの入力が受取られるまで、変更された変数値がデバッグ実行マシンに出力されるまで、実行が開始したという命令文の表示がデバッグ実行マシンに出力されるべきであるまで、および/または、命令文の実行が終了したという表示がデバッグ実行マシンに出力されるべきであるまで、実行を停止させ得る。DSLコードがインストルメント化されると、DSLコードはコンパイルを終了し得る。
ステップ406において、コンパイルされたインストルメント化されたコードが、例えばバーチャルマシン上で実行され得る。実行中、デバッグ実行マシンの状態がバーチャルマシンの状態を反映するように、インストルメント化されたコードはデバッグ実行マシンと通信する。デバッグ機能は、ビジネスロジックコードから作成された構文木内の表現の変更および/または追加により開発者に提供され得る。インストルメント化されたコードの実行中、バーチャルマシンは、例えば表現の実行を許可して変数の値をデバッグ実行マシンに出力するためにデバッグ実行マシンと通信し得る。次いで、デバッグ実行マシンは、デバッグ機能にアクセスするために開発者が使用しているデバッグクライアントと(カスタムツーリングインターフェース、JDWPおよびJDIを介して)通信し得る。
図5は、コンピュータシステムの実施例を示す。図5に示されるコンピュータシステムは、上記のコンピュータ化された装置の一部として組込まれてもよい。例えば、コンピュータシステム500は、本願で説明したウェブサーバ、ユーザコンピュータシステムおよび開発者コンピュータシステムの構成要素のうちのいくつかを表わし得る。図5は、さまざまな実施例によって提供される方法を実行することができるコンピュータシステム500の一実施例の概略図である。なお、図5は、さまざまな構成要素の一般化された図を示すよう意図されているに過ぎず、当該構成要素のうちのいずれかまたは全てが適宜利用されてもよい。したがって、図5は、比較的分離された態様または比較的一体化された態様で個々のシステム要素をいかに実現できるかを大まかに示している。
バス505を介して電気的に結合可能な(またはそうでなければ適宜通信し得る)ハードウェア要素を備えるコンピュータシステム500が示されている。当該ハードウェア要素は、1つ以上の汎用プロセッサおよび/または1つ以上の特殊用途プロセッサ(デジタル信号処理チップ、グラフィック加速プロセッサなど)を含むがこれらに限定されない1つ以上のプロセッサ510と、マウス、キーボードなどを含み得るがこれらに限定されない1つ以上の入力装置515と、ディスプレイ装置、プリンタなどを含み得るがこれらに限定されない1つ以上の出力装置520とを含んでいてもよい。
コンピュータシステム500は、1つ以上の非一時的な記憶装置525をさらに含んでいてもよく(および/または通信し得て)、当該1つ以上の非一時的な記憶装置525は、ローカルなおよび/またはネットワークアクセス可能なストレージを備え得るがこれらに限定されるものではなく、および/または、ディスクドライブ、ドライブアレイ、光学記憶装置、プログラム可能、フラッシュ更新可能などであり得るランダムアクセスメモリ(random access memory:RAM)および/またはリードオンリメモリ(read-only memory:ROM)などのソリッドステート記憶装置を含み得るがこれらに限定されるものではない。このような記憶装置は、さまざまなファイルシステム、データベース構造などを含むがこれらに限定されない任意の適切なデータストアを実装するように構成され得る。
また、コンピュータシステム500は、通信サブシステム530を含んでいてもよく、当該通信サブシステム530は、モデム、ネットワークカード(無線または有線)、赤外線通信装置、無線通信装置および/またはチップセット(ブルートゥース(登録商標)装置、802.11装置、WiFi装置、WiMax装置、セルラ通信設備など)などを含み得るがこれらに限定されるものではない。通信サブシステム530は、ネットワーク(一例を挙げると、以下に記載のネットワークなど)、他のコンピュータシステムおよび/または本明細書に記載されているその他の装置とデータをやり取りすることを可能にし得る。多くの実施例では、コンピュータシステム500は、上記のRAMまたはROM装置を含み得るワーキングメモリ535をさらに備えている。
また、コンピュータシステム500は、現在のところワーキングメモリ535内に位置しているように示されているソフトウェア要素を備えていてもよく、当該ソフトウェア要素は、オペレーティングシステム540、装置ドライバ、実行可能なライブラリ、および/または、1つ以上のアプリケーションプログラム545などの他のコードを含み、当該1つ以上のアプリケーションプログラム545は、本明細書に記載されているように、さまざまな実施例によって提供されるコンピュータプログラムを備えていてもよく、および/または、他の実施例によって提供される方法を実行するようにおよび/またはシステムを構成するように設計されてもよい。単に一例として、上記の方法に関して記載される1つ以上の手順は、コンピュータ(および/またはコンピュータ内のプロセッサ)によって実行可能なコードおよび/または命令として実行されてもよい。そして、ある局面では、このようなコードおよび/または命令は、上記の方法に従って1つ以上のオペレーションを実行するように汎用コンピュータ(または他の装置)を構成および/または適合させるために使用され得る。
1組のこれらの命令および/またはコードは、上記の非一時的な記憶装置525などの非一時的なコンピュータ読取可能記憶媒体に格納されてもよい。いくつかの例では、記憶媒体は、コンピュータシステム500などのコンピュータシステム内に組込まれてもよい。他の実施例では、記憶媒体は、コンピュータシステムから分離していてもよく(例えばコンパクトディスクなどの取外し可能な媒体)、および/または、命令/コードを格納した状態で汎用コンピュータをプログラム、構成および/または適合させるために記憶媒体を使用できるようにインストールパッケージに設けられてもよい。これらの命令は、コンピュータシステム500によって実行可能である実行可能なコードの形態をとってもよく、および/または、(例えばさまざまな一般的に入手可能なコンパイラ、インストールプログラム、圧縮/復元ユーティリティなどのうちのいずれかを使用して)コンピュータシステム500でコンパイルおよび/またはインストールすると実行可能なコードの形態をとるソースおよび/またはインストール可能なコードの形態をとってもよい。
具体的な要件に従って実質的な変更を行ってもよいということが当業者に明らかであろう。例えば、カスタマイズされたハードウェアも使用されてもよく、および/または、特定の要素がハードウェア、(アプレットなどの高移植性ソフトウェアを含む)ソフトウェア、またはそれら両方で実現されてもよい。さらに、ネットワーク入力/出力装置などの他の計算装置への接続が利用されてもよい。
上記のように、一局面では、いくつかの実施例は、本発明のさまざまな実施例に従って方法を実行するために(コンピュータシステム500などの)コンピュータシステムを利用し得る。1組の実施例によれば、このような方法の手順のうちのいくつかまたは全ては、プロセッサ510がワーキングメモリ535に含まれる(オペレーティングシステム540および/またはアプリケーションプログラム545などの他のコードに組込まれ得る)1つ以上の命令の1つ以上のシーケンスを実行することに応答して、コンピュータシステム500によって実行される。このような命令は、非一時的な記憶装置525のうちの1つ以上などの別のコンピュータ読取可能媒体からワーキングメモリ535に読取られてもよい。単に一例として、ワーキングメモリ535に含まれる命令のシーケンスの実行により、プロセッサ510は、本明細書に記載されている方法の1つ以上の手順を実行し得る。
本明細書で用いられる「マシン読取可能媒体」および「コンピュータ読取可能媒体」という用語は、特定の態様でマシンを動作させるデータの提供に関与する任意の媒体を指す。コンピュータシステム500を使用して実現される実施例では、さまざまなコンピュータ読取可能媒体が、命令/コードをプロセッサ510に提供して実行することに関与し得て、および/または、このような命令/コードを格納および/または搬送するために使用され得る。多くの実現例では、コンピュータ読取可能媒体は、物理的な記憶媒体および/または有形の記憶媒体である。このような媒体は、不揮発性媒体または揮発性媒体の形態をとってもよい。不揮発性媒体としては、例えば、非一時的な記憶装置525などの光ディスクおよび/または磁気ディスクが挙げられる。揮発性媒体としては、ワーキングメモリ535などのダイナミックメモリが挙げられるが、これに限定されるものではない。
物理的なコンピュータ読取可能媒体および/または有形のコンピュータ読取可能媒体の一般的形態としては、例えば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、またはその他の磁気媒体、CD−ROM、その他の光学媒体、パンチカード、紙テープ、穴のパターンを有するその他の物理的媒体、RAM、PROM、EPROM、FLASH−EPROM、その他のメモリチップもしくはカートリッジ、またはコンピュータが命令および/またはコードを読取ることができるその他の媒体が挙げられる。
コンピュータ読取可能媒体のさまざまな形態が、1つ以上の命令の1つ以上のシーケンスをプロセッサ510に搬送して実行することに関与し得る。単に一例として、当該命令は、最初は、リモートコンピュータの磁気ディスクおよび/または光ディスクで搬送され得る。リモートコンピュータは、当該命令をそのダイナミックメモリにロードし、コンピュータシステム500によって受取られおよび/または実行されるように伝送媒体を介して信号として当該命令を送り得る。
通信サブシステム530(および/またはその構成要素)は一般に信号を受取り、次いで、バス505が当該信号(および/または信号によって搬送されるデータ、命令など)をワーキングメモリ535に搬送し得て、プロセッサ510は、ワーキングメモリ535から命令を検索して実行する。ワーキングメモリ535によって受取られた命令は、プロセッサ510による実行の前または後のいずれかにおいて、任意に非一時的な記憶装置525に格納され得る。
上記の方法、システムおよび装置は、例である。さまざまな構成は、さまざまな手順または構成要素を適宜省略、置換または追加してもよい。例えば、代替的な構成では、方法は、上記の順序とは異なる順序で実行されてもよく、および/または、さまざまな段階が追加、省略および/または組合わせられてもよい。また、特定の構成に関して記載された特徴は、さまざまな他の構成において組合わせられてもよい。同様に、構成の異なる局面および要素は組合わせられてもよい。また、科学技術は進化するので、要素の多くは例であり、本開示または請求項の範囲を限定するものではない。
(実現例を含む)例示的な構成が完全に理解されるように具体的な詳細が明細書に記載されている。しかし、これらの具体的な詳細がなくても構成は実施可能である。例えば、構成を曖昧にすることを避けるために、周知の回路、プロセス、アルゴリズム、構造および技術が不必要な詳細なしに示されている。この説明は、例示的な構成を提供しているに過ぎず、請求項の範囲、適用可能性または構成を限定するものではない。むしろ、構成の先の説明は、上記の技術を実現するための実施可能に十分な説明を当業者に提供する。本開示の精神または範囲から逸脱することなく、要素の機能および配置の点でさまざまな変更がなされてもよい。
また、構成は、フロー図またはブロック図として示されるプロセスとして記載されてもよい。各々はシーケンシャルなプロセスとしてオペレーションを記載し得るが、オペレーションの多くは、並列にまたは同時に実行されてもよい。また、オペレーションの順序は、再編成されてもよい。プロセスは、図に含まれない追加のステップを有していてもよい。さらに、方法の例は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語またはそれらの任意の組合わせによって実現されてもよい。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードで実現される場合、必要なタスクを実行するためのプログラムコードまたはコードセグメントは、記憶媒体などの非一時的なコンピュータ読取可能媒体に格納されてもよい。プロセッサが上記のタスクを実行してもよい。
いくつかの例示的な構成について説明してきたが、本開示の精神から逸脱することなくさまざまな変形例、代替的な構造および等価物が使用されてもよい。変形例は、開示されている特徴の任意の関連の組合わせを含む。例えば、上記の要素は、より大きなシステムの構成要素であってもよく、他の規則が本発明の適用に優先してもよく、またはそうでなければ本発明の適用を変更してもよい。また、上記の要素を検討する前、最中または後に、いくつかのステップが行われてもよい。したがって、上記の説明は、特許請求の範囲を縛るものではない。

Claims (13)

  1. ドメイン固有言語コードをデバッグするためのシステムであって、
    コンピュータ読取可能媒体およびプロセッサを含むウェブサーバを備え、前記ウェブサーバは、バーチャルマシンと、デバッグ実行マシンと、ドメイン固有言語(DSL)に特有のツールインターフェースとを含み、
    前記デバッグ実行マシンは、前記DSLに特有のツールインターフェースを介して、開発者コンピュータと通信し、
    前記ウェブサーバは、
    DSLコードとデバッグ情報を前記開発者コンピュータから受取り、
    前記開発者コンピュータから受取られたDSLコードをコンパイルするように構成され、コンパイル中、前記DSLコードは、前記開発者コンピュータから受取られたデバッグ情報を含むようにインストルメント化され、前記デバッグ情報は、変数値を含む状態情報を前記デバッグ実行マシンに送信するための命令を含み、前記ウェブサーバはさらに、
    前記バーチャルマシンが前記インストルメント化されたコード実行するように構成され、且つ実行中、前記デバッグ実行マシンの状態が前記バーチャルマシンの状態を反映するように、前記バーチャルマシンが、前記インストルメント化されたコードにより前記デバッグ実行マシンと通信するように構成される、システム。
  2. ウェブサーバにおいてドメイン固有言語(DSL)コードをデバッグするための方法であって、
    前記ウェブサーバは、バーチャルマシンと、デバッグ実行マシンと、DSLに特有のツールインターフェースを含み、前記デバッグ実行マシンは、前記DSLに特有のツールインターフェースを介して、コンピュータ読取可読媒体およびプロセッサを含む開発者コンピュータと通信し、
    前記方法は、
    前記開発者コンピュータからDSLコードおよびデバッグ情報をウェブサーバにおいて受取るステップを備え、前記デバッグ情報は、変数値を含む状態情報を前記デバッグ実行マシンに送るための命令を含み、
    前記方法は、さらに、
    前記開発者コンピュータから受取られた前記DSLコードをコンパイルするステップと、
    コンパイル中、前記開発者コンピュータから受取られたデバッグ情報を含むように前記DSLコードをインストルメント化するステップと、
    前記インストルメント化されたコードを前記バーチャルマシンで実行するステップとを備え、実行中、前記デバッグ実行マシンの状態が前記バーチャルマシンの状態を反映するように、前記バーチャルマシンが、前記インストルメント化されたコードにより前記デバッグ実行マシンと通信する、方法。
  3. 前記デバッグ実行マシンはリスナを実装し、前記リスナは、前記開発者コンピュータにおけるデバッグインターフェースからデバッグ要求を受取り、前記デバッグインターフェースにデバッグイベントを送ることができる、請求項2に記載の方法。
  4. 前記デバッグ実行マシンは、前記DSLに特有のツールインターフェースを実装する、請求項3に記載の方法。
  5. 前記ウェブサーバは、前記ウェブサーバにおけるデバッグインターフェースを介して、前記開発者コンピュータにおけるデバッグクライアントから前記デバッグ情報を受取る、請求項2から4のいずれか1項に記載の方法。
  6. 前記デバッグインターフェースは、Javaデバッグインターフェース(JDI)である、請求項5に記載の方法。
  7. 前記デバッグインターフェースは、Javaデバッグワイヤプロトコル(JDWP)を使用して前記DSLに特有のツールインターフェースと通信する、請求項6に記載の方法。
  8. 前記方法は、さらに、
    前記実行中、前記デバッグ実行マシンで前記開発者コンピュータからデバッグ命令を受けとるステップと、
    前記デバッグ命令に基づき、前記デバッグ実行マシンから前記バーチャルマシンに実行命令を送信するステップと、
    前記デバッグ命令に応答して、前記DSLに特有のツールインターフェースを介して、前記開発者コンピュータに要求された情報を返信するステップと、を備え、
    記デバッグ命令は、ブレークポイントを設定するための命令、変数値の要求および実行を継続するための命令のうちの1つ以上を含み得る、請求項2から7のいずれか1項に記載の方法。
  9. 前記ウェブサーバは、クラウドベースの開発環境における複数のウェブサーバのうちの1つである、請求項2から8のいずれか1項に記載の方法。
  10. 前記開発者コンピュータは、クライアントアプリケーションを使用して、ネットワークを介して、前記クラウドベースの開発環境における前記ウェブサーバにアクセスする、請求項9に記載の方法。
  11. 前記デバッグ情報は、前記クライアントアプリケーションを通じて、前記ネットワークを介して受取られる、請求項10に記載の方法。
  12. 請求項2から11のいずれかに記載の方法をコンピュータに実行させるためのプログラム。
  13. 前記ウェブサーバは、さらに、
    前記実行中、前記デバッグ実行マシンで前記開発者コンピュータからデバッグ命令を受けとり、
    前記デバッグ命令に基づき、前記デバッグ実行マシンから前記バーチャルマシンに実行命令を送信し、
    前記デバッグ命令に応答して、前記DSLに特有のツールインターフェースを介して、前記開発者コンピュータに要求された情報を返信するよう構成され、
    前記デバッグ命令は、ブレークポイントを設定するための命令、変数値の要求および実行を継続するための命令のうちの1つ以上を含み得る、請求項1に記載のシステム。
JP2015539944A 2012-10-30 2013-10-30 ドメイン固有言語をデバッグするためのシステムおよび方法 Active JP6280126B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/664,106 US9122794B2 (en) 2012-10-30 2012-10-30 System and method for debugging domain specific languages
US13/664,106 2012-10-30
PCT/US2013/067523 WO2014070902A1 (en) 2012-10-30 2013-10-30 System and method for debugging domain specific languages

Publications (3)

Publication Number Publication Date
JP2015533007A JP2015533007A (ja) 2015-11-16
JP2015533007A5 JP2015533007A5 (ja) 2016-12-22
JP6280126B2 true JP6280126B2 (ja) 2018-02-14

Family

ID=49582819

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015539944A Active JP6280126B2 (ja) 2012-10-30 2013-10-30 ドメイン固有言語をデバッグするためのシステムおよび方法

Country Status (5)

Country Link
US (1) US9122794B2 (ja)
EP (1) EP2915047B1 (ja)
JP (1) JP6280126B2 (ja)
CN (1) CN104756086B (ja)
WO (1) WO2014070902A1 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9798524B1 (en) * 2007-12-04 2017-10-24 Axway, Inc. System and method for exposing the dynamic web server-side
US9183113B2 (en) 2011-09-29 2015-11-10 Oracle International Corporation Debugging analysis in running multi-user systems
US9122794B2 (en) 2012-10-30 2015-09-01 Oracle International Corporation System and method for debugging domain specific languages
US9146834B2 (en) 2013-08-22 2015-09-29 Oracle International Corporation Targeted cloud-based debugging
US10397051B1 (en) 2014-06-20 2019-08-27 Amazon Technologies, Inc. Configuration and testing of network-based service platform resources using a service platform specific language
CN104536838A (zh) * 2014-12-18 2015-04-22 中国电子科技集团公司第三十八研究所 一种具有异步监视功能的远程调试方法及系统
US9471463B1 (en) * 2015-04-16 2016-10-18 International Business Machines Corporation Debug management using dynamic analysis based on state information
US9582294B1 (en) * 2015-08-26 2017-02-28 Mckesson Financial Holdings Apparatuses, methods, and computer program products for automatic internationalization of grammatical output
US10037260B2 (en) 2016-05-31 2018-07-31 Red Hat, Inc. System for expression evaluation at debug time
CN107092963A (zh) * 2017-03-15 2017-08-25 中山大学 一种基于无模式数据的家电电控知识表达及应用系统
US10521286B2 (en) * 2017-03-23 2019-12-31 Rathinasabapathy Arumugam System and method for interoperable cloud DSL to orchestrate multiple cloud platforms and services
CN107943690A (zh) * 2017-11-16 2018-04-20 郑州云海信息技术有限公司 一种部署兼容性测试环境的平台及方法
CN108255737A (zh) * 2018-02-27 2018-07-06 郑州云海信息技术有限公司 基于多版本操作系统测试方法、系统及设备和存储介质
US11307964B2 (en) * 2018-11-26 2022-04-19 Red Hat Israel, Ltd. Multi-level debugger
CN111290757B (zh) * 2018-12-10 2023-07-07 阿里巴巴(上海)有限公司 基于Weex的在线代码编译方法、装置及设备
CN110457209A (zh) * 2019-07-16 2019-11-15 阿里巴巴集团控股有限公司 用于调试应用的方法和系统
CN111381935A (zh) * 2020-03-17 2020-07-07 北京九州云动科技有限公司 一种基于dsl配置表达式的功能实现方法及系统
CN111930478A (zh) * 2020-06-08 2020-11-13 北京每日优鲜电子商务有限公司 基于动态字节码的服务调用方法及装置
CN111752845A (zh) * 2020-06-30 2020-10-09 江苏恒宝智能系统技术有限公司 一种调试工具及其调试方法和系统
CN112765018B (zh) * 2021-01-12 2022-09-13 武汉光庭信息技术股份有限公司 一种仪器仪表调试系统及方法
CN113254164B (zh) * 2021-07-07 2021-10-08 北京航天驭星科技有限公司 卫星测控过程执行任务状态的监控方法及系统、测控系统
US11966343B2 (en) 2021-07-19 2024-04-23 Samsung Electronics Co., Ltd. Universal mechanism to access and control a computational device

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5121498A (en) 1988-05-11 1992-06-09 Massachusetts Institute Of Technology Translator for translating source code for selective unrolling of loops in the source code
US5339428A (en) 1991-09-04 1994-08-16 Digital Equipment Corporation Compiler allocating a register to a data item used between a use and store of another data item previously allocated to the register
US7290288B2 (en) 1997-06-11 2007-10-30 Prism Technologies, L.L.C. Method and system for controlling access, by an authentication server, to protected computer resources provided via an internet protocol network
US6516416B2 (en) 1997-06-11 2003-02-04 Prism Resources Subscription access system for use with an untrusted network
US6148402A (en) 1998-04-01 2000-11-14 Hewlett-Packard Company Apparatus and method for remotely executing commands using distributed computing environment remote procedure calls
US6157955A (en) 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
KR20010072477A (ko) 1998-08-13 2001-07-31 썬 마이크로시스템즈, 인코포레이티드 가상 머신 환경에서 네이티브 코드를 변환하고 실행하는방법 및 장치
US6681384B1 (en) 1999-12-23 2004-01-20 International Business Machines Corporation Multi-threaded break-point
AU2001269354A1 (en) 2000-05-12 2001-11-20 Xtreamlok Pty. Ltd. Information security method and system
US6915509B1 (en) 2000-06-28 2005-07-05 Microsoft Corporation Method and system for debugging a program
US6826746B2 (en) * 2001-03-08 2004-11-30 International Business Machines Corporation Debugger probe for object oriented programming
US6966057B2 (en) * 2001-03-30 2005-11-15 Intel Corporation Static compilation of instrumentation code for debugging support
US7873872B1 (en) 2001-07-10 2011-01-18 Versata Development Group, Inc. System and method for remotely debugging application programs
US7577942B2 (en) 2001-07-26 2009-08-18 International Business Machines Corporation Efficient monitoring of program variables under debug
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US8332828B2 (en) 2002-11-20 2012-12-11 Purenative Software Corporation System for translating diverse programming languages
US7020852B2 (en) 2003-05-08 2006-03-28 Lsi Logic Corporation Automation of the development, testing, and release of a flow framework and methodology to design integrated circuits
US7685570B2 (en) 2003-06-09 2010-03-23 Microsoft Corporation Error/exception helper
US7225429B2 (en) 2003-06-12 2007-05-29 International Business Machines Corporation Breakpoint groups based on control flow
US7774172B1 (en) 2003-12-10 2010-08-10 The Mathworks, Inc. Method for using a graphical debugging tool
US7287243B2 (en) 2004-01-06 2007-10-23 Hewlett-Packard Development Company, L.P. Code verification system and method
US7343588B2 (en) 2004-01-30 2008-03-11 International Business Machines Corporation Method of generating and utilizing debug history
US7624385B2 (en) 2005-03-30 2009-11-24 Alcatel-Lucent Usa Inc. Method for handling preprocessing in source code transformation
US7917894B2 (en) 2005-06-03 2011-03-29 International Business Machines Corporation Constraining source code and objects for analysis tools
US7945958B2 (en) 2005-06-07 2011-05-17 Vmware, Inc. Constraint injection system for immunizing software programs against vulnerabilities and attacks
US20070055957A1 (en) 2005-09-07 2007-03-08 Richard Birenheide Remote debugging proxy
US7669186B2 (en) 2005-11-16 2010-02-23 Sun Microsystems, Inc. Debugging applications at resource constrained virtual machines using dynamically installable lightweight agents
JP4936517B2 (ja) 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
US8104021B2 (en) 2006-06-09 2012-01-24 Microsoft Corporation Verifiable integrity guarantees for machine code programs
CN101192193A (zh) 2006-11-27 2008-06-04 国际商业机器公司 用于实现观察点的方法和系统
US8255887B2 (en) 2006-11-29 2012-08-28 International Business Machines Corporation Method and apparatus for re-using memory allocated for data structures used by software processes
US8418135B2 (en) 2007-05-31 2013-04-09 Red Hat, Inc. Method and apparatus to abstract away rule languages
US8677141B2 (en) 2007-11-23 2014-03-18 Microsoft Corporation Enhanced security and performance of web applications
US9686288B2 (en) 2008-01-25 2017-06-20 Ntt Docomo, Inc. Method and apparatus for constructing security policies for web content instrumentation against browser-based attacks
US8555380B2 (en) 2008-02-28 2013-10-08 Intel Corporation Automatic modification of executable code
EP2196934A1 (en) 2008-12-09 2010-06-16 Gemalto SA Method for securing java bytecode
US8392885B2 (en) 2008-12-19 2013-03-05 Microsoft Corporation Low privilege debugging pipeline
US8627303B2 (en) 2009-11-30 2014-01-07 International Business Machines Corporation Memory optimization of virtual machine code by partitioning extraneous information
CN101719097A (zh) * 2009-12-24 2010-06-02 深圳市金蝶移动互联技术有限公司 自动化测试脚本的调试方法、系统和自动化应用服务器
US9003380B2 (en) 2010-01-12 2015-04-07 Qualcomm Incorporated Execution of dynamic languages via metadata extraction
US8839209B2 (en) 2010-05-12 2014-09-16 Salesforce.Com, Inc. Software performance profiling in a multi-tenant environment
US20110313981A1 (en) 2010-06-17 2011-12-22 International Business Machines Corporation Data Privacy, Redaction and Integrity for Relational Databases
US8601453B2 (en) 2010-09-19 2013-12-03 Micro Focus (Us), Inc. COBOL to bytecode translation
US9064049B2 (en) 2010-12-14 2015-06-23 Microsoft Technology Licensing, Llc Remote debugging of server side code without blocking or high-level privileges
KR20120083802A (ko) * 2011-01-18 2012-07-26 삼성전자주식회사 가상머신을 위한 코드 재배치 장치 및 방법
US8572438B2 (en) * 2011-06-24 2013-10-29 Microsoft Corporation N-way runtime interoperative debugging
US8819649B2 (en) 2011-09-09 2014-08-26 Microsoft Corporation Profile guided just-in-time (JIT) compiler and byte code generation
US9183113B2 (en) 2011-09-29 2015-11-10 Oracle International Corporation Debugging analysis in running multi-user systems
US9027075B2 (en) 2011-09-29 2015-05-05 Oracle International Corporation Enforcing security rules at runtime
US8782673B2 (en) * 2011-10-24 2014-07-15 The Boeing Company Sharing of first class objects across multiple interpreted programming languages
US8863085B1 (en) 2012-01-31 2014-10-14 Google Inc. Monitoring web applications
US8887138B2 (en) 2012-05-25 2014-11-11 Telefonaktiebolaget L M Ericsson (Publ) Debugging in a dataflow programming environment
US9122794B2 (en) 2012-10-30 2015-09-01 Oracle International Corporation System and method for debugging domain specific languages
US8843901B2 (en) 2013-02-12 2014-09-23 Concurix Corporation Cost analysis for selecting trace objectives

Also Published As

Publication number Publication date
EP2915047B1 (en) 2019-12-11
EP2915047A1 (en) 2015-09-09
US9122794B2 (en) 2015-09-01
WO2014070902A1 (en) 2014-05-08
US20140123116A1 (en) 2014-05-01
CN104756086A (zh) 2015-07-01
JP2015533007A (ja) 2015-11-16
CN104756086B (zh) 2017-12-26

Similar Documents

Publication Publication Date Title
JP6280126B2 (ja) ドメイン固有言語をデバッグするためのシステムおよび方法
US9514026B2 (en) Debugging analysis in running multi-user systems
RU2668973C2 (ru) Отладка машинного кода путем перехода от исполнения в собственном режиме к исполнению в интерпретируемом режиме
US9459988B2 (en) Dynamic code switching in debugging process
JP4901075B2 (ja) コンピュータ読取可能な媒体、方法及びコンピューティングデバイス
JP5415557B2 (ja) デバッギングのためのユーザ・スクリプト・コードの変換
US8990779B2 (en) Response time measurement system and method
EP2724235B1 (en) N-way runtime interoperative debugging
US8997049B1 (en) Method and system for debugging of compiled code using an interpreter
US20050132338A1 (en) Altering execution flow of a computer program
JP2006268858A (ja) アプリケーションホスト環境においてユニットテストを実行する方法および装置
JP2004164554A (ja) プログラム実行監視装置および方法
US9639343B2 (en) Method for altering execution of a program, debugger, and computer-readable medium
WO2011083459A1 (en) Utilizing temporal assertions in a debugger
US20080127118A1 (en) Method and system for dynamic patching of software
US11573787B1 (en) Hot reloading a running application with an unsaved source code change
JPH11110256A (ja) プログラムデバッグ装置、プログラムデバッグ方法及びその方法を記録したコンピュータ読取り可能な記録媒体
Samara A practical approach for detecting logical error in object oriented environment
JP2005174045A (ja) ソースプログラム変換装置、ソースプログラム変換方法、ソースプログラム変換プログラム、および、プログラム記録媒体
JP6289235B2 (ja) ソフトウェア生成方法、ソフトウェア生成装置及びソフトウェア実行装置
KR20230101040A (ko) 차량용 플랫폼을 위한 arinc 기반 운영체제 헬스 모니터링 설정 코드 자동 생성 장치 및 방법
CN114327648A (zh) 一种驱动调试方法、装置、电子设备及存储介质
Trinh et al. Checking the compliance of timing constraints in software applications
Ihrig et al. Logging, Debugging, and Testing
JP2000330775A (ja) 組み込みシステム開発方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161027

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161027

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170711

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170915

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: 20180109

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180118

R150 Certificate of patent or registration of utility model

Ref document number: 6280126

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