JP4833326B2 - コード編集用プログラム及びコード編集装置 - Google Patents

コード編集用プログラム及びコード編集装置 Download PDF

Info

Publication number
JP4833326B2
JP4833326B2 JP2009222635A JP2009222635A JP4833326B2 JP 4833326 B2 JP4833326 B2 JP 4833326B2 JP 2009222635 A JP2009222635 A JP 2009222635A JP 2009222635 A JP2009222635 A JP 2009222635A JP 4833326 B2 JP4833326 B2 JP 4833326B2
Authority
JP
Japan
Prior art keywords
code
file
editing
program
binary code
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.)
Expired - Fee Related
Application number
JP2009222635A
Other languages
English (en)
Other versions
JP2011070533A (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.)
MUFG Bank Ltd
Original Assignee
Bank of Tokyo Mitsubishi UFJ Trust Co
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 Bank of Tokyo Mitsubishi UFJ Trust Co filed Critical Bank of Tokyo Mitsubishi UFJ Trust Co
Priority to JP2009222635A priority Critical patent/JP4833326B2/ja
Priority to US12/892,057 priority patent/US8473903B2/en
Publication of JP2011070533A publication Critical patent/JP2011070533A/ja
Application granted granted Critical
Publication of JP4833326B2 publication Critical patent/JP4833326B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • 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/3644Software debugging by instrumenting at runtime

Landscapes

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

Description

本発明は、コード編集用プログラム及びコード編集装置に関する。
ソフトウェアのデバッグ作業としては、ソフトウェアのソースコードに対してデバッグコードを追加するなどの編集処理を行い、当該編集後のソースコードをコンパイルして、当該デバッグコードが埋め込まれたバイナリコードを生成する作業が従来知られている。
この他、デバッグ作業を支援するツールとしては、ユーザからの指示に従ってソフトウェアのバイナリコードにブレークコードを埋め込み、当該バイナリコードにブレークポイントを設定するものが知られている(例えば、特許文献1参照)。このツールでは、例えば、バイナリコードに対応するソースコードを参照して、ユーザから指定された位置にブレークコードを埋め込む。
特開平6−242943号公報
このような支援ツールを用いることで、従来から、デバッグ作業に伴うバイナリコードの編集作業に際しては、ユーザによるソースコードの編集無しにバイナリコードを編集できることが知られている。
しかしながら、従来の支援ツールでは限られたバイナリコードの編集作業しかできないため、デバッグ作業に際して支援ツールの活用だけでは不足で、結果として、編集対象のバイナリコードに対応するソースコードを編集する作業が必要になる場合が多かった。
本発明は、こうした問題に鑑みなされたものであり、編集対象のバイナリコードに対応するソースコードのユーザによる編集無しに、従来よりも自由度高くバイナリコードを編集可能なコード編集用プログラム及びコード編集装置を提供することを目的とする。
上記目的を達成するためになされた第一の発明に対応するコード編集用プログラムは、「特定種類の編集処理を、編集対象のバイナリコードに対して、編集対象のバイナリコードに対応するソースコードの参照無しに実行可能な」手順をコンピュータに実行させるためのプログラム部品である第一プログラム部品を、編集処理の種類毎に備える。尚、本明細書では、ソースコードのコンパイル後データを「バイナリコード」と表現する。
更に、このコード編集用プログラムは、以下に説明するファイル取得手順と、コード取得手順と、編集制御手順と、編集後ファイル出力手順と、をコンピュータに実行させるためのプログラム部品である第二プログラム部品を備える。
ファイル取得手順は、「バイナリコードを編集する対象のプログラムファイルであって当該バイナリコードが格納されてなるプログラムファイル及びプログラムファイル内の編集対象領域を指定する情報である第一指定情報」、並びに、「使用する第一プログラム部品を指定する情報である第二指定情報」が記述された単一ファイル、又は、これらの指定情報が分散して記述されたファイル群を取得する手順である。
また、コード取得手順は、ファイル取得手順により取得された上記単一ファイル又はファイル群に記述された第一指定情報に従って、この第一指定情報を通じて指定されたプログラムファイルのバイナリコードを取得する手順である。
この他、編集制御手順は、ファイル取得手順により取得された上記単一ファイル又はファイル群に記述された第一指定情報及び第二指定情報に従い、コード取得手順により取得されたバイナリコードの上記第一指定情報が示す編集対象領域を上記編集対象のバイナリコードとして、コンピュータに、第二指定情報を通じて指定された第一プログラム部品に基づいた上記特定種類の編集処理を実行させる手順である。
そして、編集後ファイル出力手順は、編集制御手順による編集後のバイナリコードを格納したプログラムファイルを、第一指定情報により指定されたプログラムファイルに対応する編集後のプログラムファイルとして、出力する手順である。
第一の発明では、上述したように、バイナリコードに対して、当該バイナリコードに対応するソースコードの参照無しに特定種類の編集を加えることのできる第一プログラム部品を、編集処理の種類毎に設けている。このため、本発明のコード編集用プログラムを用いれば、ユーザは、使用する第一プログラム部品を選択し、その指定情報を上記第二指定情報としてデータファイルに書き込むことで、自由度高く編集対象のバイナリコードを編集することができる。そして、本発明によれば、第一プログラム部品を通じて編集対象のバイナリコードを直接編集することができるため、ユーザは、編集対象のバイナリコードに対応するソースコードを入手し、これを編集しなくても、上記編集対象のバイナリコードを編集することができる。
結果、本発明によれば、従来よりも自由度高く、ユーザによる編集対象のバイナリコードに対応するソースコードの編集無しに、バイナリコードを編集可能なコード編集用プログラムを提供することができる。
尚、第一プログラム部品としては、例えば、上記編集処理として、編集対象のバイナリコードに特定のバイナリコードを追加する処理をコンピュータに実行させるためのプログラム部品を挙げることができる。
その他、第一プログラム部品としては、例えば、上記編集処理として、編集対象のバイナリコードの少なくとも一部を特定のバイナリコードに置換する処理をコンピュータに実行させるためのプログラム部品や、上記編集処理として、コード取得手順により取得されたバイナリコードから編集対象のバイナリコードの少なくとも一部を削除する処理をコンピュータに実行させるためのプログラム部品を挙げることができる。
上記第一プログラム部品として、以上に挙げたプログラム部品の少なくとも二以上を
、上記コード編集用プログラムに設ければ、一層、自由度高く編集対象のバイナリコードを編集することができる。
この他、上記目的を達成するためになされた第二の発明は、「動作パラメータの設定値に従う特定種類の編集処理を、編集対象のバイナリコードに対して、当該編集対象のバイナリコードに対応するソースコードの参照無しに実行可能な」手順をコンピュータに実行させるためのプログラム部品である第一プログラム部品を、編集処理の種類毎に備えるコード編集用プログラムである。
更に、本発明のコード編集用プログラムは、以下に説明するファイル取得手順と、コード取得手順と、編集制御手順と、編集後ファイル出力手順と、をコンピュータに実行させるためのプログラム部品である第二プログラム部品を備える。
ファイル取得手順は、「バイナリコードを編集する対象のプログラムファイルであって当該バイナリコードが格納されてなるプログラムファイル及びプログラムファイル内の編集対象領域を指定する情報である第一指定情報」、並びに、「使用する第一プログラム部品を指定する情報である第二指定情報」、並びに、「第一プログラム部品に対する動作パラメータの設定値を表す第三指定情報」、が記述された単一ファイル、又は、これらの指定情報が分散して記述されたファイル群を取得する手順である。
また、コード取得手順は、ファイル取得手順により取得された上記単一ファイル又はファイル群に記述された第一指定情報に従って、この第一指定情報を通じて指定されたプログラムファイルのバイナリコードを取得する手順である。
この他、編集制御手順は、ファイル取得手順により取得された上記単一ファイル又はファイル群に記述された第一指定情報及び第二指定情報及び第三指定情報に従い、コード取得手順により取得されたバイナリコードの上記第一指定情報が示す編集対象領域を上記編集対象のバイナリコードとして、コンピュータに、第二指定情報を通じて指定された第一プログラム部品に基づいた処理であって、第三指定情報が表す動作パラメータの設定値に従う上記特定種類の編集処理を実行させる手順である。
そして、編集後ファイル出力手順は、編集制御手順による編集後のバイナリコードを格納したプログラムファイルを、第一指定情報により指定されたプログラムファイルに対応する編集後のプログラムファイルとして、出力する手順である。
第二の発明では、上述したように、バイナリコードに対して、当該バイナリコードに対応するソースコードの参照無しに特定種類の編集を加えることのできる第一プログラム部品を、編集処理の種類毎に設けている。また、第一プログラム部品に対しては、編集内容の細部を決定付ける動作パラメータを設定できるように、コード編集用プログラムを構成している。
このため、本発明のコード編集用プログラムを用いれば、ユーザは、動作パラメータ及び使用する第一プログラム部品を選択し、その指定情報を上記第二指定情報及び第三指定情報としてデータファイルに書き込むことで、自由度高く編集対象のバイナリコードを編集することができる。そして、本発明によれば、第一プログラム部品を通じて編集対象のバイナリコードを直接編集することができるため、ユーザは、編集対象のバイナリコードに対応するソースコードを入手し、これを編集しなくても、上記編集対象のバイナリコードを編集することができる。
結果、本発明によれば、従来よりも自由度高く、ユーザによる編集対象のバイナリコードに対応するソースコードの編集無しに、バイナリコードを編集可能なコード編集用プログラムを提供することができる。
尚、このコード編集用プログラムは、例えば、編集対象のバイナリコードに追加するバイナリコードを指定する値を、動作パラメータに設定可能な構成にすることができる。この他、コード編集用プログラムは、編集対象のバイナリコードに追加するバイナリコードに対応したソースコード(以下、追加コードともいう。)を動作パラメータに設定可能な構成にされてもよい。
また、上記コード編集用プログラムは、編集対象のバイナリコードの少なくとも一部領域において元のバイナリコードから置換するバイナリコードに対応したソースコード(以下、置換コードともいう。)を動作パラメータに設定可能な構成にされてもよい。
この場合、各第一プログラム部品は、編集処理として、動作パラメータの設定値が示す追加コードをバイナリコードに変換して編集対象のバイナリコードに追加する処理、又は、動作パラメータの設定値が示す置換コードをバイナリコードに変換して編集対象のバイナリコードの少なくとも一部を上記変換したバイナリコードに置換する処理、をコンピュータに実行させるためのプログラム部品として構成することができる。
このように、上記コード編集用プログラムを構成すれば、ユーザは、追加や置換を希望するバイナリコードに対応したソースコードを第三指定情報として記述して、当該第三指定情報を記述したデータファイルを作成する程度で、任意のバイナリコードを、編集対象のバイナリコードに追加したりすることができる。
即ち、このようにコード編集用プログラムを構成すれば、編集対象のバイナリコードに対応したソースコードを編集して再コンパイルすること無しに、当該編集対象のバイナリコードに対して任意のバイナリコードを追加等することができ、バイナリコードの編集作業の利便性を高めることができる。
また、ファイル取得手順は、「第二指定情報及び第三指定情報が記述されたデータファイルである編集規則記述ファイル」の指定情報が第一指定情報と共に記述されたデータファイル、である対象記述ファイルを取得する手順と、対象記述ファイルの取得後、当該対象記述ファイルを通じて指定された編集規則記述ファイルを取得する手順と、を含む手順とすることができる。
このように第一指定情報を記述するデータファイルと、第二指定情報及び第三指定情報を記述するデータファイルとを分ければ、汎用の編集規則記述ファイルを作成することができて、編集対象の変更がある度に編集規則記述ファイルを作成せずに済み、利便性が向上する。
例えば、汎用の編集規則記述ファイルを、予めコード編集用プログラムの設計者が作成し、これをコード編集用プログラムに内包させて頒布すれば、ユーザ側では、編集規則記述ファイルを作成せずとも、上記第一指定情報及び使用する編集規則記述ファイルの指定情報を記述した対象記述ファイルを作成する程度で、本発明のコード編集用プログラムを利用してバイナリコードを編集することができる。
また、コード編集用プログラムには、上記第一プログラム部品であって、編集処理として、「動作パラメータの設定値が示すソースコードに従って、編集対象のバイナリコードに対し、当該バイナリコードにより実現される一連の処理の開始前後で動作パラメータの設定値が示すソースコードに対応した処理をコンピュータに実行させるためのバイナリコードを追加する処理」をコンピュータに実行させるためのプログラム部品(前後追加用プログラム部品)を搭載するのが好ましい。
また、上述したコード編集用プログラムには、上記編集規則記述ファイルとして、上記前後追加用プログラム部品を指定する第二指定情報が記述され、上記第三指定情報として、編集対象のバイナリコードより実現される一連の処理の開始前後で当該一連の処理の実行時間を計測するための処理をコンピュータに実行させるためのソースコードが記述された編集規則記述ファイルを設けるのがよい。
このように構成されたコード編集用プログラムを用いれば、ユーザは、デバッグ作業時に、特定の関数やメソッドの実行時間を計測したい場合、編集規則記述ファイルを作成せずとも、コード編集用プログラムに内包された上記編集規則記述ファイルを指定する上記対象記述ファイルを作成する程度で、実行時間を計測するためのデバッグコードを編集対象のバイナリコードに追加することができる。即ち、このコード編集用プログラムによれば、デバッグ作業時の利便性が向上する。
また、上述した第一及び第二の発明に対応する技術的思想は、コード編集装置に適用することもできる。
例えば、コード編集装置は、「特定種類の編集処理を、編集対象のバイナリコードに対して、当該編集対象のバイナリコードに対応するソースコードの参照無しに実行可能なコード編集手段」を編集処理の種類毎に備えると共に、バイナリコードを編集する対象のプログラムファイルであって当該バイナリコードが格納されてなるプログラムファイル及び当該プログラムファイル内の編集対象領域を指定する情報である第一指定情報、並びに、起動すべきコード編集手段を指定する情報である第二指定情報が記述された単一ファイル、又は、これらの指定情報が分散して記述されたファイル群を取得するファイル取得手段と、ファイル取得手段により取得された単一ファイル又はファイル群に記述された第一指定情報に従って、当該第一指定情報を通じて指定されたプログラムファイルのバイナリコードを取得するコード取得手段と、ファイル取得手段により取得された単一ファイル又はファイル群に記述された第一指定情報及び第二指定情報に従い、第二指定情報を通じて指定されたコード編集手段を起動し、コード編集手段に、上記特定種類の編集処理を、コード取得手段により取得されたバイナリコードの第一指定情報が示す編集対象領域を編集対象のバイナリコードとして、実行させる編集制御手段と、編集制御手段の動作により得られた編集後のバイナリコードを格納したプログラムファイルを、第一指定情報により指定されたプログラムファイルに対応する編集後のプログラムファイルとして、出力する編集後ファイル出力手段と、を備えた構成とすることができる。
このコード編集装置によれば、上述したコード編集用プログラムと同様の効果を得ることができる。また、上述したコード編集用プログラムに関するその他の技術的思想(請求項2〜請求項7に係る思想)も、コード編集装置に適用することができる。また、上述したコード編集用プログラムは、磁気ディスクや光ディスク等の記録媒体に記録して頒布されてもよい。
本実施例の情報処理装置1の構成を表すブロック図である。 Ruleファイル127及びPlanファイル130の構成図である。 Ruleファイル127の作成規則に関する説明図である。 JWeaver120の使用例に関する説明図である。 JWeaver120によって実現される処理を表すフローチャートである。 プラン登録処理を表すフローチャートである。 ウィービング処理を表すフローチャートである。 実ウィービング処理を表すフローチャートである。
以下に本発明の実施例について、図面と共に説明する。
図1(a)は、本実施例の情報処理装置1の構成を表すブロック図である。本実施例の情報処理装置1は、周知のコンピュータと同様のハードウェア構成にされ、ハードディスク装置15に格納されたコード編集用プログラムであるJWeaver120に特徴を有する。
ハードウェア構成について簡単に説明すると、本実施例の情報処理装置1は、CPU11、CPU11によるプログラム実行時に作業領域として使用されるRAM13、CPU11が実行するプログラム等を記憶するハードディスク装置15、キーボードやポインティングデバイス等で構成される入力装置17、液晶ディスプレイ等で構成される表示装置18、及び、外部装置との間でのデータを授受するインタフェース19(例えばUSBインタフェース)等を備える。
ハードディスク装置15には、CPU11が実行するプログラムであるJava(登録商標)実行環境100が格納され、更に、この実行環境100で実行されるアプリケーションプログラム(Java(登録商標)プログラム)110が格納されている。また、ハードディスク装置15には、アプリケーションプログラム110の一つとして、JWeaver120が格納されている。
図1(b)は、情報処理装置1が備えるコード編集用プログラムであるJWeaver120の構成を示した図である。図1(b)に示すように、JWeaver120は、JWeaver本体121と、ウィーバ123の一群と、バイトコード編集用のクラスライブラリであるバイトコードエンハンスクラスライブラリ125と、後述するRuleファイル127の一群を構成要素とするアーカイブファイルとして構成されている。
JWeaver本体121は、JWeaver120としての主たる機能を実現するクラスファイル群から構成される(詳細後述)。
また、ウィーバ123は、バイトコードエンハンスクラスライブラリ125を利用して、特定種類の編集処理を、編集対象のバイトコードに対して実行するクラスファイルである。以下、クラスファイル等のプログラムを動作主体として表現する場合があるが、プログラムを動作主体とする表現は、対応する処理が、実際にはCPU11がプログラムを実行することによって、実現されることを意味する。
このウィーバ123は、編集処理の種類毎に、予めJWeaver120の設計者により作成され、JWeaver120に格納される。但し、ユーザは、JWeaver120の使用に当って、ウィーバ123を自作し、追加することも可能である。ウィーバ123を自作する場合には、ウィーバ123のソースコードをコンパイルするためのJava(登録商標)開発環境が必要である。
また、バイトコードエンハンスクラスライブラリ125としては、javassistが知られている。javassistは、Java(登録商標)バイトコードを扱うライブラリであり、クラスファイル内のバイトコード編集を実現することのできるライブラリとして知られている。具体的に、javassistは、指定されたクラスのバイトコードを取得する機能や、指定されたソースコードをバイトコードに変換して指定されたクラスやメソッドを編集する機能を提供する。
また、Ruleファイル127は、バイトコード編集時に用いられるものであり、図2(a)に示すように、バイトコード編集に際して用いるべきウィーバ123の指定情報、及び、ウィーバ123に対する動作パラメータの指定情報が記述されたテキストファイルとして構成されている。図2(a)は、Ruleファイル127の構成図である。
具体的に、動作パラメータの指定情報としては、編集対象のバイトコードに対して新たに追加するバイトコードに対応したソースコード(追加コード)や、編集対象のバイトコードの一部領域において元のバイトコードから置換するバイトコードに対応したソースコード(置換コード)等が記述される。即ち、本実施例では、Ruleファイル127に記述された追加コードや置換コード等に基づき、ウィーバ123が、これらのソースコードをバイトコードに変換して、編集対象のバイトコードに追加したり、編集対象のバイトコードの一部領域を置換し、これによって、編集対象のバイトコードを編集する。
このRuleファイル127については、基本的にJWeaver120のユーザがテキストファイルで作成する。但し、本実施例のJWeaver120には、基本的なバイトコードの編集処理を実現するためのRuleファイル127の一群が予め格納されている。例えば、図3(a)下段に示すメソッドの実行時間計測用のRuleファイル127等が予め格納されている。尚、Ruleファイル127の詳細については、後述する。
このような構成のJWeaver120は、起動されると、引数に設定されたPlanファイル130(詳細後述)の指定情報、編集対象のアーカイブファイル(アプリケーションプログラム110)の指定情報、編集後のアーカイブファイルを出力する先の指定情報に基づき、編集対象のアーカイブファイルが内包するクラスファイルのバイトコードを編集し、編集後のバイトコードを格納したアーカイブファイルを、指定された出力先にファイル出力する。
図2(b)は、Planファイル130の構成図である。図2(b)に示すように、Planファイル130は、編集対象のメソッドを指定するターゲット指定情報、及び、ターゲット指定情報にて指定されるメソッドのバイトコードを編集する際に参照すべきRuleファイル127の指定情報であるルール指定情報が記述されたテキストファイルである。このPlanファイル130は、JWeaver120を使用するユーザによってテキストファイルで作成される。
続いて、Ruleファイル127の作成規則について説明する。図3は、Ruleファイル127の作成規則に関する説明図である。ここでは、JWeaver120が、次に説明する3つのウィーバ123を備えることを前提として、夫々のウィーバ123に対応したRuleファイル127の作成規則について説明する。
まずJWeaver120が備える第一のウィーバ123aは、編集対象のメソッドに対応する処理の実行前に、Ruleファイル127に記述された第一のソースコード(Code:1)に対応する処理をCPU11に実行させるためのバイトコードを、当該編集対象のバイトコードに追加すると共に、編集対象のメソッドに対応する処理の実行後に、Ruleファイル127に記述された第二のソースコード(Code:2)に対応する処理をCPU11に実行させるためのバイトコードを、当該編集対象のバイトコードに追加する処理、を上記編集処理として実行するウィーバである。尚、本実施例において、このウィーバ123aには、「BeforeAfterWeaver」というクラス名が付与されている。以下では、このウィーバ123aを、「BeforeAfterWeaver」とも表現する。
上述したように、Ruleファイル127には、ウィーバ123の指定情報が記述されるが、ウィーバ123の指定情報は、後続する記述がウィーバ123の指定情報であることを示すラベル「#weaver」に続いて、Ruleファイル127内に記述される。具体的に、ウィーバ123の指定情報は、指定するウィーバ123のクラス名からなる。
そして、Ruleファイル127に、ウィーバ123の指定情報として第一のウィーバ123aを指定する情報(ウィーバ123aのクラス名)を記述する場合には、次の動作パラメータの指定情報を、同じRuleファイル127内に記述する規則となっている。
具体的には、動作パラメータの指定情報として、動作パラメータ「var」「code:1」「code:2」の設定値を記述する。尚、動作パラメータ「var」「code:1」「code:2」の設定値を記述するに際しては、設定値の記述に先駆けて、対応するラベル「#var」「#code:1」「#code:2」を記述する。
図3(a)の上段には、ウィーバ123の指定情報として第一のウィーバ123aを指定する情報(ウィーバ123aのクラス名)を記述する場合に、併せて記述すべき各動作パラメータ「var」「code:1」「code:2」の役割を示す。
図3(a)に示すように、動作パラメータ「code:1」は、メソッドの先頭に挿入する処理に対応したソースコードを表す動作パラメータとして機能し、動作パラメータ「code:2」は、メソッドの末尾に挿入する処理に対応したソースコードを表す動作パラメータとして機能する。即ち、これらの動作パラメータ「code:1」「code:2」には、対応するソースコードが設定される。
この他、動作パラメータ「var」は、動作パラメータ「code:1」「code:2」に設定されたソースコードで新規に使用されるローカル変数を宣言する処理をメソッド先頭に追加するための動作パラメータとして機能し、新規に使用されるローカル変数を宣言する記述文を値として採る。
また、図3(a)下段は、Ruleファイル127の記述例を示した図である。図3(a)下段に示すRuleファイル127は、「BeforeAfterWeaver」を使用して、メソッドの先頭に、ローカル変数nowを宣言してこの変数nowに現在時刻をセットする処理を追加し、メソッドの末尾に、メソッドの先頭で変数nowにセットした時刻と現在時刻との差分を算出して、その算出値を表示出力する処理を追加するものである。このRuleファイル127を用いることで、第一のウィーバ123aには、編集前のメソッドにて実現される一連の処理の実行時間を計測する処理を、新たにメソッドに追加するバイトコードの編集処理を実現させることができる。
続いて、JWeaver120が備える第二のウィーバ123bと、第二のウィーバ123bに対応したRuleファイル127の作成規則について、図3(b)を用いて説明する。
第二のウィーバ123bは、編集対象のメソッドにtry−catch節を挿入し、catch節に任意のコードを挿入する処理を、上記編集処理として実行するウィーバである。このウィーバ123bには、「AddCatchWeaver」というクラス名が付与されている。
そして、Ruleファイル127に、ウィーバ123の指定情報として第二のウィーバ123bを指定する情報(ウィーバ123bのクラス名)を記述する場合には、次の動作パラメータの指定情報を、同じRuleファイル127内に記述する規則となっている。
具体的には、動作パラメータの指定情報として、動作パラメータ「var」「code:1」「exception」の設定値を記述する。図3(b)には、ウィーバ123の指定情報として、第二のウィーバ123bを指定する情報を記述する場合に、併せて記述すべき各動作パラメータ「var」「code:1」「exception」の役割を示す。図3(b)に示すように、動作パラメータ「code:1」は、catch節に挿入するコードを示すものであり、動作パラメータ「exception」は、catchする例外の型を指定するものである。また、動作パラメータ「var」は、新規に使用されるローカル変数を示すものである。
この他、JWeaver120が備える第三のウィーバ123cと、第三のウィーバ123cに対応したRuleファイル127の作成規則について、図3(c)を用いて説明する。
第三のウィーバ123cは、編集対象のメソッドが実装されたクラスにおいて、当該メソッドを新たなメソッドに置き換える処理、を上記編集処理として実行するウィーバである。このウィーバ123cには、「ReplaceMethodWeaver」というクラス名が付与されている。
そして、Ruleファイル127に、ウィーバ123の指定情報として第三のウィーバ123cを指定する情報(ウィーバ123cのクラス名)を記述する場合には、次の動作パラメータの指定情報を、同じRuleファイル127内に記述する規則となっている。
具体的には、動作パラメータの指定情報として、動作パラメータ「code:1」の設定値を記述する。図3(c)には、ウィーバ123の指定情報として、第三のウィーバ123cを指定する情報を記述する場合に、併せて記述すべき動作パラメータ「code:1」の役割を示す。図3(c)に示すように、動作パラメータ「code:1」は、新たなメソッドの実装を定義するものであり、この動作パラメータ「code:1」には、新たに実装するメソッドのソースコードが設定される。
続いて、Planファイル130の作成規則及び作成したPlanファイル130を用いたJWeaver120の利用手順について、図4(a)を用いて説明する。図4(a)は、Planファイル130の作成規則及び作成したPlanファイル130を用いたJWeaver120の利用手順に関する説明図である。
具体的に、図4(a)は、「Hello」との文字列を表示出力するクラスの「sayHello()」メソッドに、図3(a)下段に示すRuleファイル127を適用することで、デバッグコードとして「Hello」との文字列を表示出力する処理の実行時間を計測するためのコードを挿入する場合のPlanファイル130の作成例と、このPlanファイル130を用いたJWeaver120の利用手順を説明したものである。
Planファイル130は、上述したように、ターゲット指定情報及びルール指定情報を有するが、ターゲット指定情報は、編集対象のメソッドが実装されたクラス名、及び、当該編集対象のメソッド名の情報からなる。また、ルール指定情報は、指定するRuleファイル127のファイル名の情報からなる。
例えば、編集対象のクラスファイルが「Targetx」というクラス名であり、編集対象のメソッドが「Targetx」クラスの「sayHello()」メソッドであり、このメソッドに適用するRuleファイル127のファイル名が「performance_log.jwr」である場合、Planファイル130に対しては、文字列「△△△.Targetx#sayHello()=performance_log.jwr」にて、ターゲット指定情報及びルール指定情報を記述する。尚、「△△△」は、パッケージ名を表す。
本実施例では、このように、ターゲット指定情報及びルール指定情報を等号で繋げて記述することにより、これらの情報を関連付けて記述する。尚、このように記述するのは、Planファイル130に、複数のターゲット指定情報、及び、各ターゲット指定情報に対応したルール指定情報を記述することができるためである。
Planファイル130に複数のターゲット指定情報を記載する場合には、ターゲット指定情報毎に行を代えて、ターゲット指定情報及びルール指定情報に対応した文字列を記述する。例えば、次の例1、例2、例3及び例4に示すようにPlanファイル130を作成する。
Planファイル130の例1:
△△△.Class1#method1()=Rulefile1.jwr
△△△.Class1#method2()=Rulefile2.jwr
Planファイル130の例2:
△△△.Class1#method1()=Rulefile1.jwr
△△△.Class1#method1()=Rulefile2.jwr
Planファイル130の例3:
△△△.Class1#method1()=Rulefile1.jwr
△△△.Class1#method2()=Rulefile1.jwr
Planファイル130の例4:
△△△.Class1#method1()=Rulefile1.jwr
△△△.Class2#method2()=Rulefile1.jwr
尚、上記「Planファイル130の例2」は、同一メソッドに対して、複数のRuleファイル127を適用する場合のPlanファイル130の記述例を示し、「Planファイル130の例3」は、異なるメソッドに対して、同一のRuleファイル127を適用する場合のPlanファイル130の記述例を示し、「Planファイル130の例4」は、異なるクラスの異なるメソッドに対して、同一のRuleファイル127を適用する場合のPlanファイル130の記述例を示す。
例えば、編集対象のクラスファイル内の複数メソッドに、実行時間を計測するためのデバッグコードを挿入したい場合には、例3に習って、ルール指定情報として「performance_log.jwr」を記述したPlanファイル130を作成する。このようにPlanファイル130を作成すると、一度のJWeaver120の実行で、複数のメソッドの夫々に対して実行時間計測用のデバッグコードを挿入することができる。
また、編集対象のアーカイブファイル(アプリケーションプログラム110)に格納された複数のクラスファイルの夫々に実装されたメソッドに対して、メソッド毎に、実行時間を計測するためのデバッグコードを挿入したい場合には、例4に習って、ルール指定情報として「performance_log.jwr」を記述したPlanファイル130を作成する。これによって、一度のJWeaver120の実行で、アーカイブファイル内の複数のクラスファイルに実装された各メソッドに対して実行時間計測用のデバッグコードを挿入することができる。
Planファイル130については、このような規則で作成する。また、Planファイル130を作成した後、ユーザは、図4(a)下段に示すように、コンソールを通じてJWeaver120を起動する。具体的には、Planファイル130の指定情報、編集対象のクラスファイルが格納されたアーカイブファイル(即ち、アプリケーションプログラム110)の指定情報、編集後アーカイブファイルの出力先の指定情報を引数に設定して、JWeaver120を起動する。これら引数に設定する指定情報は、対応するデータファイルのパス及びファイル名で表現することができる。
このような引数を設定してコンソールからJWeaver120を起動すると、JWeaver120は、引数に設定されたPlanファイル130を一行ずつ読み取り、各行のターゲット指定情報が示すメソッドに対して、同じ行のルール指定情報が示すRuleファイル127内で指定されたウィーバ123に基づく編集処理を実行する。具体的には、Ruleファイル127が示す動作パラメータの設定値に従う編集処理を実行する。
その後、JWeaver120は、編集後のバイトコードを格納したクラスファイルを新たに作成し、当該新たに作成したクラスファイルを元のクラスファイルに代えて格納した新たなアーカイブファイルを作成して、指定された出力先に、このアーカイブファイルを出力する。
尚、図4(b)は、図4(a)上段に示すクラスファイルに、図3(a)下段に示すRuleファイル127を適用して、バイトコード編集を行った前後のクラスファイルの実行結果を示す説明図であり、図4(b)上段は、バイトコード編集前のクラスファイルの出力を示す図であり、図4(b)下段は、バイトコード編集後のクラスファイルの出力を示す図である。このように、JWeaver120を用いれば、簡単にバイトコードを編集することができる。また、バイトコード編集時に、編集対象のクラスファイルに対応したソースコードが必要ないのが、JWeaver120の一つの特徴である。Ruleファイル127に記述されたソースコードは、上述したバイトコードエンハンスクラスライブラリ125の機能によってコンパイルされ、編集対象のバイトコードに書き込まれる。
続いて、JWeaver120によって実行される処理の詳細を、図5以降の図面を用いて説明する。図5は、JWeaver本体121を構成するクラスファイル群によって実現される処理であって、コンソールを通じてJWeaver120が起動されると実行される処理を表すフローチャートである。
JWeaver120が起動されると、CPU11は、引数で指定されたPlanファイル130を取得して、このPlanファイル130の先頭行を読み取り、先頭行に記述されたターゲット指定情報及びルール指定情報を取得する(S100)。そして、取得したターゲット指定情報及びルール指定情報に基づき、図6に示すプラン登録処理を実行する(S200)。
具体的には、ルール指定情報が指定するRuleファイル127の記述内容を保持するRuleクラスのインスタンス(以下、Ruleインスタンスと表現する。)を生成すると共に、ターゲット指定情報を保持するPlanクラスのインスタンス(以下、Planインスタンスと表現する。)を生成し、このPlanインスタンスに、対応するRuleインスタンスを登録する。これによって、ターゲット指定情報と、ターゲット指定情報が示すメソッドのバイトコード編集時に用いるべきウィーバ123及びウィーバ123に対する動作パラメータの設定値と、の対応付けを行う。即ち、ここでいう「プラン登録」とは、Planインスタンス及びRuleインスタンスの生成及び関連付けのことをいう。
図6は、CPU11が実行するプラン登録処理を表すフローチャートである。S200でプラン登録処理を開始すると、CPU11は、S100で取得したターゲット指定情報及びルール指定情報の内、ルール指定情報に基づき、当該ルール指定情報を通じて指定されたRuleファイル127に対応するRuleインスタンスが既に存在するか否かをチェックする(S210)。尚、Ruleインスタンスは、対応するRuleファイル127のファイル名を値として保持している。従って、ここでは、既に存在するRuleインスタンスが保持するRuleファイル127のファイル名に基づき、ルール指定情報を通じて指定されたRuleファイル127に対応するRuleインスタンスが既に存在するか否かをチェックする。
そして、該当するRuleインスタンスが存在しないと判断すると(S220でNo)、ルール指定情報を通じて指定されたRuleファイル127を取得し、このRuleファイル127の記述を読み出して、Ruleファイル127に記述されたウィーバ123の指定情報及び動作パラメータの指定情報を保持するRuleインスタンスを生成する(S230)。尚、Ruleクラスは、Ruleファイル127の記述内容を保持するためのクラスであるが、上述したように、対応するRuleファイル127のファイル名も保持する。
一方、該当するRuleインスタンスが存在すると判断した場合には(S220でYes)、ルール指定情報を通じて指定されたRuleファイル127に対応するRuleインスタンスを取得する(S235)。
このようにしてRuleインスタンスを生成又は取得すると、CPU11は、S100で取得したターゲット指定情報と同じ編集対象の情報を保持するPlanインスタンスが既に存在するか否かをチェックする(S240)。
そして、該当するPlanインスタンスが存在しない場合には(S250でNo)、ターゲット指定情報(編集対象のクラス及びメソッドの情報)を保持するPlanインスタンスを生成する(S260)。上述したように、Planクラスは、ターゲット指定情報を構成する編集対象のクラス及びメソッドの情報を保持するためのクラスである。
一方、該当するPlanインスタンスが存在する場合には(S250でYes)、ターゲット指定情報と同じ編集対象の情報を保持するPlanインスタンスを取得する(S265)。
その後、CPU11は、S260で生成又はS265で取得したPlanインスタンスに対してS230で生成又はS235で取得したRuleインスタンスを登録して、PlanインスタンスとRuleインスタンスの関連付けを行う(S270)。その後、当該プラン登録処理を完了する。
また、プラン登録処理が完了すると、CPU11は、Planファイル130の次行を読み取り(S300)、次行があれば(S400でYes)、読み取った次行について、上述したS200の処理を行うことにより、この行に記述されたターゲット指定情報及びルール指定情報に基づいたPlanインスタンス及びRuleインスタンスの生成及び関連付けを行う。
一方、次行がなければ(S400でNo)、Planファイル130に記載されたターゲット指定情報及びルール指定情報を全て読み取ったものとして、S500に移行する。そして、S500では、JWeaver120の起動時に引数に設定された編集対象のアーカイブファイルを最下層まで走査して、アーカイブファイルに含まれるクラスファイルの全てを、メモリ(RAM13)にロードする。
また、この処理を終えると、S600に移行して、ウィービング処理を実行する。図7は、CPU11が実行するウィービング処理を表すフローチャートである。
ウィービング処理を開始すると、CPU11は、編集対象のアーカイブファイルにあるエントリの一つを処理対象に選択し(S610)、処理対象に選択したエントリのファイル形式をチェックする(S620)。
そして、処理対象のエントリがear形式、war形式、jar形式等のアーカイブファイルあると判断すると(S630でYes)、S610に移行し、このエントリに対応するアーカイブファイル内を参照して、下層のアーカイブファイル内のエントリを新たに処理対象に選択する。即ち、S610〜S630では、編集対象のアーカイブファイル内を最下層まで走査して、エントリを順に処理対象に選択する。尚、下層のアーカイブファイル内のエントリを全て処理対象に選択した後のS610では、上層のエントリであって、処理対象に未選択のエントリの一つを、処理対象に選択する。
一方、S630で処理対象のエントリがアーカイブファイルではないと判断すると(S630でNo)、CPU11は、S640に移行し、処理対象のエントリがクラスファイルであるか否かを判断する。
そして、処理対象のエントリがクラスファイルでないと判断すると(S635でNo)、このエントリを、JWeaver120の起動時に引数に設定された出力先のアーカイブファイルに追加する(S655)。尚、本実施例では、上述したように、編集対象のアーカイブファイルが、下層にアーカイブファイルを備えるツリー構造を採る。このため、S655では、編集対象のアーカイブファイルのツリー構造を承継するように、出力先のアーカイブファイル内にエントリを登録する。
S655の処理後、CPU11は、S690に移行し、編集対象のアーカイブファイルに登録されている最下層までのエントリの全てについて、当該エントリを処理対象に選択したか否かを判断し、処理対象に選択していないエントリがあれば、S610に移行し、処理対象に選択していないエントリがなくなった時点で、当該ウィービング処理を終了する。
一方、S635で処理対象のエントリがクラスファイルであると判断すると(S635でYes)、S640に移行し、当該処理対象のエントリを編集対象のクラスファイルとするPlanインスタンスの有無をチェックする。
そして、該当するPlanインスタンスが存在しない場合には(S650でNo)、S655に移行し、処理対象のエントリを出力先のアーカイブファイルに追加する。その後、S690に移行する。
この他、該当するPlanインスタンスが存在する場合には(S650でYes)、処理対象のエントリが編集対象のクラスファイルであると取り扱って、このエントリに対応するクラスのバイトコードを取得すると共に(S660)、処理対象のエントリを編集対象のクラスファイルとする上記Planインスタンスを取得し(S665)、このPlanインスタンスに基づいた実ウィービング処理を実行する(S670)。
図8は、CPU11が実行する実ウィービング処理を表すフローチャートである。実ウィービング処理を開始すると、CPU11は、Planインスタンスに登録されているRuleインスタンスの一つを取得する(S671)。但し、S671では、Planファイルに登録された順に、Ruleインスタンスを取得する。
そして、取得したRuleインスタンスが保持するウィーバ123の指定情報に基づいて、該当するウィーバ123を起動する(S673)。尚、ウィーバ123には、編集対象クラスのバイトコード及び編集対象メソッドの指定情報及びRuleインスタンスが保持する動作パラメータの設定値を付与する。
これによって、編集対象のクラスファイルにおける編集対象のメソッドに対応する領域を編集対象のバイトコードに設定し、ウィーバ123に、上記付与した動作パラメータの設定値に従う特定種類の編集処理を実行させて、編集後のバイトコード(詳述すれば編集対象のクラスファイルに対応する編集後のバイトコード)を取得する。具体的には、CPU11が、ウィーバ123に対応する処理を、バイトコードエンハンスクラスライブラリ125を利用して実行して、対応するクラスファイルのバイトコードを編集することになる。尚、ウィーバ123のフローチャートについては省略するが、ウィーバ123は、外部から与えられるこれらの情報に基づき、周知のバイトコードエンハンスクラスライブラリ125を利用して、対応するバイトコードの編集処理を実行するようにプログラミングされればよい。
また、この処理を終えると、CPU11は、Planインスタンスに登録された全てのRuleインスタンスについてのS671,S673の処理を実行したか否かを判断し(S675)、実行していない場合には(S675でNo)、S671に移行して、次のRuleインスタンスを取得する(S671)。
そして、S673では、このRuleインスタンスが保持するウィーバ123の指定情報に基づいて、該当するウィーバ123を起動し、ウィーバ123に、このRuleインスタンスが示す動作パラメータの設定値に従う特定種類の編集処理を実行させるのであるが、この際、ウィーバ123には、先のS673で取得した編集後のバイトコードを付与して、このバイトコードを対象に編集処理を実行させることで、複数のRuleインスタンスが登録されている場合には、各Ruleインスタンスに基づくバイトコードの編集結果を累積的に反映させるようにして、クラスファイルのバイトコードを編集する。
一方、CPU11は、Planインスタンスに登録された全てのRuleインスタンスについてのS671,S673の処理を実行したと判断すると(S675でYes)、最終的に生成された編集後のバイトコードを、実ウィービング処理の実行結果として、図7に示すウィービング処理に渡す(S677)。
CPU11は、このようにして、S670で実ウィービング処理を実行し、この処理を終えると、S680に移行して、S670の処理で得られた実ウィービング処理の実行結果としての上記編集後のバイトコードを格納した新たなクラスファイルを生成し、これを、出力先のアーカイブファイルに追加する(S680)。その後、S690に移行し、編集対象のアーカイブファイルに登録されている最下層までのエントリの全てについて、当該エントリを処理対象に選択したか否かを判断し、全てを処理対象に選択していない場合には、S610に移行する。そして、全てのエントリを処理対象に選択し、S620以降の処理を実行すると、S690で肯定判断して、当該ウィービング処理を終了する。
また、このようにしてウィービング処理を終了すると、このウィービング処理の結果を画面に表示出力して(S700)、JWeaver120としての一連の処理を完了する。
以上、本発明の実施例について説明したが、本実施例によれば、バイトコードに対して特定種類の編集を加えることのできるウィーバ123を、編集処理の種類毎に設けると共に、各ウィーバ123に対しては、編集内容の細部を決定付ける動作パラメータを設定できるように、コード編集用プログラムであるJWeaver120を構成している。
このため、JWeaver120を用いれば、ユーザは、動作パラメータ及びウィーバを選択し、その指定情報をRuleファイル127に書き込み、このRuleファイル127の指定情報と共に編集対象の情報をPlanファイル130に書き込む程度で、自由度高くクラスファイルを編集することができる。そして、本実施例によれば、ウィーバ123を通じてバイナリコードであるクラスファイルを直接編集することができるため、ユーザは、編集対象のクラスファイルに対応するソースコードを入手し、これを編集しなくても、上記編集対象のクラスファイルを編集することができる。
特に、このJWeaver120によれば、ソースコードを、動作パラメータとしてRuleファイル127に記述することで、任意のコード(デバッグコード等)を、編集対象のクラスファイルに注入することができる。
結果、本実施例によれば、クラスファイルに対応するソースコードのユーザによる編集無しに、従来よりも自由度高く、クラスファイルを編集可能な利便性の高いツール(JWeaver120)を提供することができる。
また、本実施例では、編集対象の情報、ウィーバ123の指定情報、及び、動作パラメータの指定情報を、Planファイル130とRuleファイル127とに分けて記述する手法を採用しているので、Ruleファイル127については、特定の編集対象に限定されない汎用のデータファイルとして構成することができる。従って、本実施例によれば、バイトコード編集が必要なデバッグ対象のクラスファイルが生じる度に、Ruleファイル127を作成する必要がなく、大変便利である。
特に、JWeaver120のアーカイブファイル内に、図3(a)下段に示すような、メソッドの実行時間を計測する処理を追加するためのRuleファイル127を予め設けておけば、デバッグ作業時に、ユーザがメソッドの実行時間計測用のRuleファイル127を作成しなくても済み、簡単に、メソッドの実行時間を計測する処理を、デバッグ対象のクラスファイルに搭載することができて、大変便利である。
尚、「特許請求の範囲」記載の第一プログラム部品(又はコード編集手段)は、上記実施例において、JWeaver120が備えるウィーバ123に対応し、ファイル取得手順(又はファイル取得手段)は、Planファイル130及びRuleファイル127を取得する処理に対応する。また、第一指定情報は、編集対象のプログラムファイルとして、編集対象のクラスファイルを指定し、編集対象領域として、当該クラスファイルにおける特定メソッドを指定するPlanファイル130に記述される情報に対応し、第二指定情報及び第三指定情報は、Ruleファイル127に記述される情報に対応する。
この他、コード取得手順(又はコード取得手段)は、S660の処理に対応し、編集制御手順(又は編集制御手段)は、S673の処理に対応し、編集後ファイル出力手順(又は編集後ファイル出力手段)は、S680の処理に対応する。更に、前後追加用プログラム部品は、第一のウィーバ123a(BeforeAfterWeaver)に対応する。また、「実行時間を計測するための処理をコンピュータに実行させるためのソースコードが記述された編集規則記述ファイル」は、図3(a)下段に示すRuleファイル127に対応する。
また、本発明は、上記実施例に限定されるものではなく、種々の態様を採ることができる。例えば、上記実施例では、Java(登録商標)のアプリケーションプログラム110に、本発明の概念を適用した例を示したが、本発明は、プログラミング言語に限定されるものではない。
この他、JWeaver120には、編集対象クラスのバイトコードから、編集対象メソッドのバイトコードを削除する処理を実行することにより、編集対象メソッドに対応する処理が実行されないように編集対象クラスのバイトコードを編集するウィーバ123を設けることができる。尚、このウィーバ123を使用するに際しては、Ruleファイル127に、バイトコード編集に際して用いるべきウィーバ123の指定情報として、当該ウィーバ123を指定する情報のみを記述すればよく、動作パラメータの指定情報についての記述は不要である。
1…情報処理装置、11…CPU、13…RAM、15…ハードディスク装置、17…入力装置、18…表示装置、19…インタフェース、100…実行環境、110…アプリケーションプログラム、120…JWeaver、121…JWeaver本体、123(123a,123b,123c)…ウィーバ、125…バイトコードエンハンスクラスライブラリ、127…Ruleファイル、130…Planファイル

Claims (14)

  1. 特定種類の編集処理を、編集対象のバイナリコードに対して、前記編集対象のバイナリコードに対応するソースコードの参照無しに実行可能な手順をコンピュータに実行させるためのプログラム部品である第一プログラム部品
    を前記編集処理の種類毎に備えると共に、
    バイナリコードを編集する対象のプログラムファイルであって当該バイナリコードが格納されてなるプログラムファイル及び当該プログラムファイル内の編集対象領域を指定する情報である第一指定情報、並びに、使用する前記第一プログラム部品を指定する情報である第二指定情報が記述された単一ファイル、又は、これらの指定情報が分散して記述されたファイル群を取得するファイル取得手順と、
    前記ファイル取得手順により取得された前記単一ファイル又はファイル群に記述された前記第一指定情報に従って、当該第一指定情報を通じて指定された前記プログラムファイルのバイナリコードを取得するコード取得手順と、
    前記ファイル取得手順により取得された単一ファイル又はファイル群に記述された前記第一指定情報及び前記第二指定情報に従い、前記コンピュータに、前記第二指定情報を通じて指定された前記第一プログラム部品に基づいた前記特定種類の編集処理を、前記コード取得手順により取得されたバイナリコードの前記第一指定情報が示す編集対象領域を前記編集対象のバイナリコードとして、実行させる編集制御手順と、
    前記編集制御手順による編集後のバイナリコードを格納したプログラムファイルを、前記第一指定情報により指定された前記プログラムファイルに対応する編集後のプログラムファイルとして、出力する編集後ファイル出力手順と、
    を前記コンピュータに実行させるためのプログラム部品である第二プログラム部品を備えること
    を特徴とするコード編集用プログラム。
  2. 請求項1記載のコード編集用プログラムであって、
    前記編集処理として、前記編集対象のバイナリコードに特定のバイナリコードを追加する処理を前記コンピュータに実行させるためのプログラム部品、
    前記編集処理として、前記編集対象のバイナリコードの少なくとも一部を特定のバイナリコードに置換する処理を前記コンピュータに実行させるためのプログラム部品、
    及び、
    前記編集処理として、前記コード取得手順により取得されたバイナリコードから前記編集対象のバイナリコードの少なくとも一部を削除する処理を前記コンピュータに実行させるためのプログラム部品
    の少なくとも二以上を、前記第一プログラム部品として備えることを特徴とするコード編集用プログラム。
  3. 動作パラメータの設定値に従う特定種類の編集処理を、編集対象のバイナリコードに対して、前記編集対象のバイナリコードに対応するソースコードの参照無しに実行可能な手順をコンピュータに実行させるためのプログラム部品である第一プログラム部品
    を前記編集処理の種類毎に備えると共に、
    バイナリコードを編集する対象のプログラムファイルであって当該バイナリコードが格納されてなるプログラムファイル及び当該プログラムファイル内の編集対象領域を指定する情報である第一指定情報、並びに、使用する前記第一プログラム部品を指定する情報である第二指定情報、並びに、前記第一プログラム部品に対する前記動作パラメータの設定値を表す第三指定情報、が記述された単一ファイル、又は、これらの指定情報が分散して記述されたファイル群を取得するファイル取得手順と、
    前記ファイル取得手順により取得された前記単一ファイル又はファイル群に記述された前記第一指定情報に従って、当該第一指定情報を通じて指定された前記プログラムファイルのバイナリコードを取得するコード取得手順と、
    前記ファイル取得手順により取得された単一ファイル又はファイル群に記述された前記第一指定情報及び前記第二指定情報及び前記第三指定情報に従い、前記コンピュータに、前記第二指定情報を通じて指定された前記第一プログラム部品に基づいた処理であって、前記第三指定情報が表す前記動作パラメータの設定値に従う前記特定種類の編集処理を、前記コード取得手順により取得されたバイナリコードの前記第一指定情報が示す編集対象領域を前記編集対象のバイナリコードとして、実行させる編集制御手順と、
    前記編集制御手順による編集後のバイナリコードを格納したプログラムファイルを、前記第一指定情報により指定された前記プログラムファイルに対応する編集後のプログラムファイルとして、出力する編集後ファイル出力手順と、
    を前記コンピュータに実行させるためのプログラム部品である第二プログラム部品を備えること
    を特徴とするコード編集用プログラム。
  4. 請求項3記載のコード編集用プログラムであって、
    前記動作パラメータの少なくとも一つは、前記編集対象のバイナリコードに追加するバイナリコードに対応したソースコードである追加コード、又は、前記編集対象のバイナリコードの少なくとも一部領域において元のバイナリコードから置換するバイナリコードに対応したソースコードである置換コードが設定される動作パラメータであり、
    前記各第一プログラム部品は、前記編集処理として、前記動作パラメータの設定値が示す前記追加コードをバイナリコードに変換して前記編集対象のバイナリコードに追加する処理、又は、前記動作パラメータの設定値が示す前記置換コードをバイナリコードに変換して前記編集対象のバイナリコードの少なくとも一部を前記変換したバイナリコードに置換する処理、を前記コンピュータに実行させるためのプログラム部品であること
    を特徴とするコード編集用プログラム。
  5. 請求項3又は請求項4記載のコード編集用プログラムであって、
    前記ファイル取得手順は、
    前記第二指定情報及び前記第三指定情報が記述されたデータファイルである編集規則記述ファイルの指定情報が前記第一指定情報と共に記述されたデータファイル、である対象記述ファイルを取得する手順と、
    前記対象記述ファイルの取得後、当該対象記述ファイルを通じて指定された前記編集規則記述ファイルを取得する手順と、
    を含む手順であることを特徴とするコード編集用プログラム。
  6. 請求項3〜請求項5のいずれか一項に記載のコード編集用プログラムであって、
    前記第一プログラム部品の一つは、
    前記編集処理として、前記動作パラメータの設定値が示すソースコードに従って、前記編集対象のバイナリコードに対し、当該バイナリコードにより実現される一連の処理の開始前後で前記動作パラメータの設定値が示すソースコードに対応した処理を前記コンピュータに実行させるためのバイナリコードを追加する処理
    を前記コンピュータに実行させるためのプログラム部品であること
    を特徴とするコード編集用プログラム。
  7. 請求項5記載のコード編集用プログラムであって、
    前記第一プログラム部品の一つは、
    前記編集処理として、前記動作パラメータの設定値が示すソースコードに従って、前記編集対象のバイナリコードに対し、当該バイナリコードにより実現される一連の処理の開始前後で前記動作パラメータの設定値が示すソースコードに対応した処理を前記コンピュータに実行させるためのバイナリコードを追加する処理
    を前記コンピュータに実行させるためのプログラム部品である前後追加用プログラム部品として構成され、
    当該コード編集用プログラムは、
    前記第二指定情報として、前記前後追加用プログラム部品を指定する情報が記述され、前記第三指定情報として、前記編集対象のバイナリコードより実現される一連の処理の開始前後で当該一連の処理の実行時間を計測するための処理を前記コンピュータに実行させるためのソースコードが記述された前記編集規則記述ファイル
    を備えることを特徴とするコード編集用プログラム。
  8. 特定種類の編集処理を、編集対象のバイナリコードに対して、前記編集対象のバイナリコードに対応するソースコードの参照無しに実行可能なコード編集手段
    を前記編集処理の種類毎に備えると共に、
    バイナリコードを編集する対象のプログラムファイルであって当該バイナリコードが格納されてなるプログラムファイル及び当該プログラムファイル内の編集対象領域を指定する情報である第一指定情報、並びに、起動すべき前記コード編集手段を指定する情報である第二指定情報が記述された単一ファイル、又は、これらの指定情報が分散して記述されたファイル群を取得するファイル取得手段と、
    前記ファイル取得手段により取得された前記単一ファイル又はファイル群に記述された前記第一指定情報に従って、当該第一指定情報を通じて指定された前記プログラムファイルのバイナリコードを取得するコード取得手段と、
    前記ファイル取得手段により取得された単一ファイル又はファイル群に記述された前記第一指定情報及び前記第二指定情報に従い、前記第二指定情報を通じて指定された前記コード編集手段を起動し、前記コード編集手段に、前記特定種類の編集処理を、前記コード取得手段により取得されたバイナリコードの前記第一指定情報が示す編集対象領域を前記編集対象のバイナリコードとして、実行させる編集制御手段と、
    前記編集制御手段の動作により得られた編集後のバイナリコードを格納したプログラムファイルを、前記第一指定情報により指定された前記プログラムファイルに対応する編集後のプログラムファイルとして、出力する編集後ファイル出力手段と、
    を備えることを特徴とするコード編集装置。
  9. 請求項8記載のコード編集装置であって、
    前記編集処理として、前記編集対象のバイナリコードに特定のバイナリコードを追加する処理を実行する手段、
    前記編集処理として、前記編集対象のバイナリコードの少なくとも一部を特定のバイナリコードに置換する処理を実行する手段、
    及び、
    前記編集処理として、前記コード取得手段により取得されたバイナリコードから前記編集対象のバイナリコードの少なくとも一部を削除する処理を実行する手段
    の少なくとも二以上を、前記コード編集手段として備えることを特徴とするコード編集装置。
  10. 動作パラメータの設定値に従う特定種類の編集処理を、編集対象のバイナリコードに対して、前記編集対象のバイナリコードに対応するソースコードの参照無しに実行可能なコード編集手段
    を前記編集処理の種類毎に備えると共に、
    バイナリコードを編集する対象のプログラムファイルであって当該バイナリコードが格納されてなるプログラムファイル及び当該プログラムファイル内の編集対象領域を指定する情報である第一指定情報、並びに、起動すべき前記コード編集手段を指定する情報である第二指定情報、並びに、前記コード編集手段に対する前記動作パラメータの設定値を表す第三指定情報、が記述された単一ファイル、又は、これらの指定情報が分散して記述されたファイル群を取得するファイル取得手段と、
    前記ファイル取得手段により取得された前記単一ファイル又はファイル群に記述された前記第一指定情報に従って、当該第一指定情報を通じて指定された前記プログラムファイルのバイナリコードを取得するコード取得手段と、
    前記ファイル取得手段により取得された単一ファイル又はファイル群に記述された前記第一指定情報及び前記第二指定情報及び前記第三指定情報に従い、前記第二指定情報を通じて指定された前記コード編集手段を起動し、前記コード編集手段に、前記第三指定情報が表す前記動作パラメータの設定値に従う前記特定種類の編集処理を、前記コード取得手段により取得されたバイナリコードの前記第一指定情報が示す編集対象領域を前記編集対象のバイナリコードとして、実行させる編集制御手段と、
    前記編集制御手段の動作により得られた編集後のバイナリコードを格納したプログラムファイルを、前記第一指定情報により指定された前記プログラムファイルに対応する編集後のプログラムファイルとして、出力する編集後ファイル出力手段と、
    を備えることを特徴とするコード編集装置。
  11. 請求項10記載のコード編集装置であって、
    前記動作パラメータの少なくとも一つは、前記編集対象のバイナリコードに追加するバイナリコードに対応したソースコードである追加コード、又は、前記編集対象のバイナリコードの少なくとも一部領域において元のバイナリコードから置換するバイナリコードに対応したソースコードである置換コードが設定される動作パラメータであり、
    前記各コード編集手段は、前記編集処理として、前記動作パラメータの設定値が示す前記追加コードをバイナリコードに変換して前記編集対象のバイナリコードに追加する処理、又は、前記動作パラメータの設定値が示す前記置換コードをバイナリコードに変換して前記編集対象のバイナリコードの少なくとも一部を前記変換したバイナリコードに置換する処理、を実行する手段であること
    を特徴とするコード編集装置。
  12. 請求項10又は請求項11記載のコード編集装置であって、
    前記ファイル取得手段は、
    前記第二指定情報及び前記第三指定情報が記述されたデータファイルである編集規則記述ファイルの指定情報が前記第一指定情報と共に記述されたデータファイル、である対象記述ファイルを取得し、
    前記対象記述ファイルの取得後、当該対象記述ファイルを通じて指定された前記編集規則記述ファイルを取得する
    手段であることを特徴とするコード編集装置。
  13. 請求項10〜請求項12のいずれか一項に記載のコード編集装置であって、
    前記コード編集手段の一つは、
    前記編集処理として、前記動作パラメータの設定値が示すソースコードに従って、前記編集対象のバイナリコードに対し、当該バイナリコードにより実現される一連の処理の開始前後で前記動作パラメータの設定値が示すソースコードに対応した処理を前記コンピュータに実行させるためのバイナリコードを追加する処理
    を実行する手段であること
    を特徴とするコード編集装置。
  14. 請求項12記載のコード編集装置であって、
    前記コード編集手段の一つは、
    前記編集処理として、前記動作パラメータの設定値が示すソースコードに従って、前記編集対象のバイナリコードに対し、当該バイナリコードにより実現される一連の処理の開始前後で前記動作パラメータの設定値が示すソースコードに対応した処理を前記コンピュータに実行させるためのバイナリコードを追加する処理
    を実行する前後追加用コード編集手段として構成され、
    当該コード編集装置は、
    前記第二指定情報として、前記前後追加用コード編集手段を指定する情報が記述され、前記第三指定情報として、前記編集対象のバイナリコードより実現される一連の処理の開始前後で当該一連の処理の実行時間を計測するための処理を前記コンピュータに実行させるためのソースコードが記述された前記編集規則記述ファイル
    を備えることを特徴とするコード編集装置。
JP2009222635A 2009-09-28 2009-09-28 コード編集用プログラム及びコード編集装置 Expired - Fee Related JP4833326B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009222635A JP4833326B2 (ja) 2009-09-28 2009-09-28 コード編集用プログラム及びコード編集装置
US12/892,057 US8473903B2 (en) 2009-09-28 2010-09-28 Code edit apparatus and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009222635A JP4833326B2 (ja) 2009-09-28 2009-09-28 コード編集用プログラム及びコード編集装置

Publications (2)

Publication Number Publication Date
JP2011070533A JP2011070533A (ja) 2011-04-07
JP4833326B2 true JP4833326B2 (ja) 2011-12-07

Family

ID=43781743

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009222635A Expired - Fee Related JP4833326B2 (ja) 2009-09-28 2009-09-28 コード編集用プログラム及びコード編集装置

Country Status (2)

Country Link
US (1) US8473903B2 (ja)
JP (1) JP4833326B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014194237A2 (en) * 2013-05-30 2014-12-04 Veracode, Inc. Systems and methods for remote analysis of software applications
US20150052400A1 (en) * 2013-08-19 2015-02-19 Concurix Corporation Breakpoint Setting Through a Debugger User Interface
US10255158B2 (en) * 2013-10-15 2019-04-09 Oracle International Corporation Monitoring and diagnostics of business transaction failures
US10127035B2 (en) * 2014-02-25 2018-11-13 Flexion Mobile Limited System and method to modify run-time behavior of an application by modification of machine-readable instructions
JP2018005551A (ja) * 2016-07-01 2018-01-11 富士通株式会社 編集支援プログラム、装置および方法
US10430179B1 (en) * 2019-03-07 2019-10-01 Capital One Services, Llc Methods and systems for managing application configurations

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6310239A (ja) 1986-06-30 1988-01-16 Nec Corp 高級言語のパツチ生成方式
JPH06242943A (ja) 1993-02-15 1994-09-02 Nec Corp ソースコードレベルデバッグ装置
JPH06314194A (ja) * 1993-04-30 1994-11-08 Nec Corp パッチ方式
JPH07110780A (ja) 1993-10-14 1995-04-25 Nec Corp デバッグ装置
US5675803A (en) 1994-01-28 1997-10-07 Sun Microsystems, Inc. Method and apparatus for a fast debugger fix and continue operation
US6185591B1 (en) * 1997-07-29 2001-02-06 International Business Machines Corp. Text edit system with enhanced undo user interface
US6243859B1 (en) * 1998-11-02 2001-06-05 Hu Chen-Kuang Method of edit program codes by in time extracting and storing
JP3673189B2 (ja) * 2001-05-21 2005-07-20 株式会社東芝 書き込み制御方法および構造化文書管理装置および構造化文書編集装置およびプログラム
JP2003036171A (ja) 2001-07-24 2003-02-07 Yamatake Sangyo Systems Co Ltd プログラム実行方法及びプログラム実行装置
US7322013B1 (en) * 2001-10-25 2008-01-22 Adobe Systems Incorporated Launch and edit user interface improvements
JP2004258728A (ja) * 2003-02-24 2004-09-16 Nippon Telegr & Teleph Corp <Ntt> プログラム実行時間測定方法
JP2004287869A (ja) * 2003-03-24 2004-10-14 Hitachi Ltd プログラム実行監視装置および方法
JP2008140162A (ja) * 2006-12-01 2008-06-19 Hitachi Ltd デバッグ情報収集方法
JP4879782B2 (ja) * 2007-03-07 2012-02-22 株式会社エヌ・ティ・ティ・データ プログラムプロファイリング方法、及びプログラム

Also Published As

Publication number Publication date
JP2011070533A (ja) 2011-04-07
US20110078656A1 (en) 2011-03-31
US8473903B2 (en) 2013-06-25

Similar Documents

Publication Publication Date Title
JP4619698B2 (ja) コードセグメント作成方法及びそのシステム
JP4833326B2 (ja) コード編集用プログラム及びコード編集装置
US7426717B1 (en) System and method for debugging files in a runtime environment
US7865870B2 (en) Automatic content completion of valid values for method argument variables
JP5102828B2 (ja) アプリケーション・データ・エディタを生成するための方法及びシステム
US8117589B2 (en) Metadata driven API development
US20050223363A1 (en) Evaluation of a code segment
WO2003062986A1 (en) Flexible and extensible java bytecode instrumentation system
JPH10232767A (ja) スクリプト作成システム
US20090320007A1 (en) Local metadata for external components
WO2015130675A2 (en) Apparatus and method for testing computer program implementation against a design model
US8527254B2 (en) Simulator engine development system and simulator engine development method
JPH10222466A (ja) クライアント/サーバ型の医療用イメージング・システムで指令を実行する方法
JPH10232921A (ja) セル・オーバーラップ検出及び補正方法
TWI437457B (zh) 分析目標物件之依賴關係的方法
JP4675639B2 (ja) データ処理システム、アプリケーションプログラムのカスタマイズパラメータを表示する方法およびコンピュータプログラム製品
JP2008276735A (ja) プログラムコード変換装置及びプログラムコード変換方法
JP2009104252A (ja) デバッグ支援装置およびデバッグ支援方法
US20110246966A1 (en) Embedding source files into program symbol files
Křikava et al. SIGMA: Scala internal domain-specific languages for model manipulations
Beguelin et al. HeNCE: A Users' Guide Version 2.0
KR100417655B1 (ko) 최적화과정을참조하면서동작검증을행하도록디버그정보를생성하는디버그정보생성장치및프로그래머가최적화과정을의식하면서동작검증을할수있는디버그장치로이루어지는프로그램개발시스템
Golemon Extending and Embedding PHP
JPH10293683A (ja) プログラムの比較解析装置、プログラムの比較解析方法、及びプログラムの比較解析プログラムを記録した機械読み取り可能な記録媒体
JP4458491B2 (ja) テストコマンドファイル作成システムと方法およびプログラム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110620

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110628

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110829

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110921

R150 Certificate of patent or registration of utility model

Ref document number: 4833326

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140930

Year of fee payment: 3

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

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees