JP2002055848A - プログラム実行方式及び当該プログラム実行方式を格納した記憶媒体 - Google Patents

プログラム実行方式及び当該プログラム実行方式を格納した記憶媒体

Info

Publication number
JP2002055848A
JP2002055848A JP2000245341A JP2000245341A JP2002055848A JP 2002055848 A JP2002055848 A JP 2002055848A JP 2000245341 A JP2000245341 A JP 2000245341A JP 2000245341 A JP2000245341 A JP 2000245341A JP 2002055848 A JP2002055848 A JP 2002055848A
Authority
JP
Japan
Prior art keywords
trace
thread
program
interpreter
program execution
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.)
Pending
Application number
JP2000245341A
Other languages
English (en)
Inventor
Hideaki Saiki
秀明 齋木
Mitsuaki Hirono
光明 廣野
Yoshiharu Konaka
義治 小中
Masanori Kadowaki
正規 門脇
Kenichi Murai
謙一 村井
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.)
Omron Corp
Original Assignee
Omron Corp
Omron Tateisi Electronics 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 Omron Corp, Omron Tateisi Electronics Co filed Critical Omron Corp
Priority to JP2000245341A priority Critical patent/JP2002055848A/ja
Publication of JP2002055848A publication Critical patent/JP2002055848A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 プログラム実行環境において、アプリケー
ションプログラムを容易かつ作業効率よくデバッグでき
るプログラム実行方式を提供する。 【解決手段】 Java仮想マシン4によって構成され
たプログラム実行環境は、(1)通常のインタプリタ形式
でスレッドを解釈して実行する通常インタプリタ5と、
(2)トレース機能を有していてプログラムを1ラインや
1命令ずつ実行し、トレースを行ってメモリの内容を外
部に出力するトレース用インタプリタ6とを備えてい
る。両インタプリタ5、6は切り替え可能となってお
り、通常インタプリタ5によりスレッドを実行でき、ま
たトレース用インタプリタ6によりスレッドをトレース
してデバッグを行うことができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プログラム実行方
式及び当該プログラム実行方式を格納した記憶媒体に関
する。具体的には、本発明は、インタプリタやオペレー
ティングシステムなどのプログラム実行環境、例えばJ
avaプログラム実行環境において、アプリケーション
単位あるいはスレッド単位で「トレースあり」と「トレ
ースなし」との切換えによるトレース実行を行えるよう
にしたプログラム実行方式及び当該プログラム実行方式
を格納した記憶媒体に関する。
【0002】
【背景技術】従来のインタプリタやオペレーティングシ
ステムなどのプログラム実行環境において、システム開
発時もしくはシステム運用時に、アプリケーションプロ
グラムのバグを修正し、正常に動作させるためアプリケ
ーションプログラムをデバッグ(debug)する手段とし
て、ソースプログラムの中にデバッグプリントを挿入す
ることが多い。
【0003】この方法でバグを含んだソースプログラム
のデバッグ(バグ修正)を行うためには、図1に示すよ
うに、正式用のソースプログラム2にデバッグプリント
を挿入してデバッグ用のソースプログラム2aに書き直
し、デバッグ用のソースプログラム2aをコンパイルし
て実行ファイル3aを作成し、プログラム実行環境1で
デバッグ用の実行ファイル3aを実行することによって
バグ取りを行う。そして、デバッグ用のソースプログラ
ム2aのバグ修正が完了したら、正式用のソースプログ
ラム2も同様に修正し、実行ファイル3にコンパイルす
る。
【0004】しかし、デバッグプリントを挿入する方法
では、図1に示すように、正式用とデバッグ用の最低2
種類のソースプログラム2、2aが混在することになる
ので、同一のソースプログラムについて2種類以上のプ
ログラムを記述しなければならず、バグ修正作業が非常
に乱雑となり、コード解析にも支障をきたすことがあ
る。
【0005】また、ソースプログラムにデバッグプリン
トを挿入することによってデバッグする方法では、デバ
ッグ出力が待ち状態になる可能性があるため、デバッグ
プリントを入れることで処理のタイミングが変わる可能
性がある。例えば、図2(a)に示すように、正式用の
ソースプログラム2が、スレッド(Thread;プログラム
実行管理単位)AとスレッドBからなり、スレッドAが
処理SA1、SA2、SA3によって、スレッドBが処
理SB1、SB2、SB3によって構成されており、ス
レッドAの処理SA1、SA2、SA3が順次実行され
た後、スレッドBの処理に制御が移り、処理SB1、S
B2、SB3が順次実行されるとする。このとき、図2
(b)に示すように、デバッグ用のソースプログラム2
aにおいて、スレッドAの処理SA2と処理SA3との
間にデバッグプリントが挿入されたとすると、スレッド
Aにおける処理SA1、SA2に続いてデバッグプリン
トの処理が実行される。ここで、デバッグ出力が待ち状
態になってしまったりすると、制御がスレッドBへ移
り、スレッドBで処理SB1、SB2、SB3が順次実
行された後、再び制御がスレッドAに戻って処理SA3
が実行され、正式用のソースプログラム2と実行順序が
変わってしまうような不都合が生じる恐れがある。
【0006】さらに、デバッグプリントを挿入すること
によってデバッグする方法では、ある現象を把握するた
めのタイミングのコツを知る必要があり、開発者にとっ
て効率的に作業が行えないという問題点があり、デバッ
グに要する時間が非常に長いものとなり、非効率的であ
った。
【0007】また、デバッグプリントを挿入する以外の
デバッグ手段としては、デバッガを利用する方法もあ
る。しかし、デバッガを用いる方法では、デバッガを使
用するための知識が必要となり、また組み込み機器のた
めのソフトウエアであれば、ハードウェア毎に設定が異
なり、対象とするハードウェアに関する知識が必要とな
るため、デバッガを習熟するための時間やデバッグに至
るまでの時間が長く掛かる不都合がある。
【0008】このデバッガの問題を解決するための公知
技術としては、インタプリタ言語であるBASICにト
レース機能が存在し、この仕組みを取り入れることが考
えられる。しかし、BASICのトレース機能は、ソー
スプログラムにトレース開始/終了のステートメントを
挿入することで実現できるため、図3(a)(b)に示
すように、デバッグ用のソースプログラム2aでは、正
式用のソースプログラム2に対してトレースの開始位置
にトレースONを、トレースの終了位置にトレースOF
Fをそれぞれ挿入する必要がある。よって、結局ソース
プログラムを書き直す必要があり、デバッグプリントを
挿入するのと同様、作業時間と手間が掛かってしまうこ
とになる。
【0009】
【発明の開示】本発明の目的とするところは、プログラ
ム実行環境において、アプリケーションプログラムを容
易かつ作業効率よくデバッグできるプログラム実行方式
を提供することにある。また、そのプログラム実行方式
を格納した記憶媒体を提供することにある。
【0010】本発明にかかるプログラム実行方式は、ト
レース機能を有する環境でプログラムを実行することが
できるプログラム実行環境と、トレース機能を有しない
環境で実行することができるプログラム実行環境とを備
え、前記両プログラム実行環境が選択的に実行可能とな
っていることを特徴としている。
【0011】また、本発明にかかる記憶媒体は、トレー
ス機能を有する環境でプログラムを実行することができ
るプログラム実行環境と、トレース機能を有しない環境
で実行することができるプログラム実行環境とを備え、
両プログラム実行環境が選択的に実行可能となっている
プログラム実行方式を格納したものである。ここで記憶
媒体としては、特にその種類は限定されることはなく、
ハードディスク、CD類、DVD、MO、各種ICメモ
リなどが該当する。
【0012】本発明にあっては、複数のプログラム実行
環境が切り換え可能となっており、トレース機能を有す
るプログラム実行環境とトレース機能を有しないプログ
ラム実行環境のいずれかでプログラムを実行可能となっ
ているため、プログラムのソースファイルにデバッグプ
リント等のトレースのための仕組みが必要なくなる。従
って、プログラムのデバッグを行うため、そのソースプ
ログラムを書き直したり、デバッグプリントを挿入した
りする必要が無くなるので、あるいはソースプログラム
の書き替え作業をわずかなものにすることができるの
で、プログラムを容易かつ作業効率よくデバッグするこ
とができる。よって、インタプリタやアプリケーション
プログラムなどのプログラム実行環境において、システ
ム開発時やシステム運用時に、デバッグのための作業時
間を削減でき、また、ソースプログラムを書き直す必要
がないので、デバッグ時のコード解析も簡単になる。
【0013】また、本発明の方式によれば、アプリケー
ションプログラムの実行中でもトレース環境が存在する
ため、トレース実行の切換え自由度が高くなる。例え
ば、アプリケーションプログラム起動前における切換
え、アプリケーションプログラム実行中での切換え、ア
プリケーションプログラム内のスレッド毎の切換え等が
可能になる。
【0014】
【発明の実施の形態】(第1の実施形態)プログラム実
行環境としてJavaプログラム実行機構(Java仮
想マシン)の場合を例として、以下本発明の一実施形態
を説明する。従来のJava仮想マシンでは、単一のプ
ログラム実行環境によってスレッドを実行しているが、
本発明にかかるJava仮想マシンは、複数のプログラ
ミング実行環境を有している。
【0015】図4はJava仮想マシン4を用いた本発
明にかかるJavaプログラム実行環境の概要を表して
いる。この実施形態では、1つのJava仮想マシン4
(Virtual Machine;プログラムから生成されたバイト
コード、すなわち中間ファイルを実行するための環境)
に対し、バイトコードを1命令ずつ逐次解釈しながら実
行するためのインタプリタ5、6を2つ備え、両インタ
プリタ5、6で共有するデータ領域7を有している。一
方のインタプリタ5(以下、通常インタプリタとい
う。)はトレース機能を備えておらず、通常のインタプ
リタ形式でスレッドを解釈して実行する。他方のインタ
プリタ6(以下、トレース用インタプリタという。)は
トレース機能を備えており、プログラムを1ラインや1
命令ずつ実行し、トレースを行ってメモリの内容を外部
に出力することができる。トレース結果の出力は、RS
−232Cのようなパラレル出力やシリアル出力から出
力させることができる。トレースの出力単位は、バイト
コード単位、メソッド(関数)呼び出し単位のどちらで
も出力可能である。
【0016】このJava仮想マシン4においては、両
インタプリタ5、6を選択的に切り換えてスレッドを実
行することができる。インタプリタ5、6の切換え方法
ないし切換え時期としては種々用意しておくことができ
る。ここでは、例として、(1)アプリケーションプログ
ラムが起動する前におけるインタプリタの切換え機能、
(2)アプリケーションプログラム実行時におけるインタ
プリタの切換え機能、(3)スレッド毎のインタプリタ切
換え機能、(4)局所的なトレースの切換え機能について
説明する。Java仮想マシン4は、これらのインタプ
リタ又はトレースの切換え機能のうち1つだけを備えて
いてもよく、複数備えていてもよい。
【0017】まず、アプリケーションプログラム起動前
のインタプリタ切換えについて説明する。このJava
仮想マシン4には、スレッドを管理するための構造体が
存在しており、そのメンバーとしてインタプリタ切換え
のためのフラグが用意されている。そして、アプリケー
ションプログラム起動時には、当該フラグによって、2
つのインタプリタのうち通常インタプリタ5で実行する
か、トレース用インタプリタ6で実行するかが決まる。
一方、Java仮想マシン4またはアプリケーションプ
ログラムには、トレース有り、トレース無しのいずれか
を設定するための環境変数(インタプリタを実行するた
めの変数)を設けてあり、コマンド入力等によって環境
変数をトレース有り、トレース無しのいずれかに設定で
きるようになっている。
【0018】しかして、このプログラム実行環境におい
て、コマンド入力等によって環境変数をトレース有りに
設定してアプリケーションプログラムを起動すると、図
5のフロー図に示すように、環境変数によって上記フラ
グがトレース有りに設定され(ステップS1でトレース
設定オン)、アプリケーションプログラムで使用される
スレッド全てに対応づけられる。従って、プログラム実
行環境がトレース用インタプリタ6に設定され(ステッ
プS2)、いずれのスレッドもトレース用インタプリタ
6で実行され、トレース結果が外部へ出力される(ステ
ップS3)。
【0019】また、コマンド入力等によって環境変数を
トレース無しに設定してアプリケーションプログラムを
起動すると、環境変数によって上記フラグがトレース無
しに設定され(図5のステップS1でトレース設定OF
F)、アプリケーションプログラムで使用されるスレッ
ド全てに対応づけられる。よって、プログラム実行環境
が通常インタプリタ5に設定され(ステップS4)、い
ずれのスレッドもトレース機能無しの通常インタプリタ
5で実行される(ステップS5)。
【0020】このようにして2つのインタプリタ5、6
を切換えるようにすれば、Java仮想マシン4が動作
する実行環境でトレースの有無を設定できるので、デバ
ッグを行なうためにソースプログラムを変更する必要が
なく、アプリケーションプログラムを容易かつ作業効率
よくデバッグできる。
【0021】次に、アプリケーションプログラム実行時
におけるインタプリタ切換え機能について説明する。ア
プリケーションプログラムの実行時(起動後)にインタ
プリタを切換える機能を持たせる場合には、トレース有
り、トレース無しのいずれかを設定するための環境変数
(インタプリタを実行するための変数)を設け、インタ
プリタ実行中に、コマンド入力等によって環境変数をト
レース有り、トレース無しのいずれかに再設定できるよ
うにする。この環境変数は、初期値ではトレース無しに
設定されている。
【0022】しかして、アプリケーションプログラムが
起動されると、図6のフロー図に示すように、環境変数
がトレース無しに設定されているので、通常インタプリ
タ5でスレッドを実行可能な状態で起動する(ステップ
S11)。このときには、まだコマンド入力はないので
(ステップS13でオフの場合)、トレース機能がオフ
の通常インタプリタ5が作動し(ステップs14)、ト
レース無しでスレッドが実行される(ステップS1
5)。
【0023】アプリケーションプログラムが終了してい
なければ(ステップS18でNOの場合)、ステップS
13〜S18の処理が繰り返されるが、実行途中でコマ
ンド入力(ステップS12)によってトレース機能がオ
ンとなるように環境変数が書き替えられた場合(ステッ
プS13でオンの場合)には、プログラム実行環境がト
レース用インタープリタに切り替えられ(ステップS1
6)、トレース用インタプリタ6で各スレッドを実行し
ながらトレースが実行され、トレース結果が外部へ出力
される(ステップS17)。
【0024】また、トレース機能がオンになった状態で
スレッドが実行されているときに、コマンド入力(ステ
ップS12)によってトレース機能がオフに切り替えら
れた場合(ステップS13でオフの場合)には、再びプ
ログラム実行環境が通常インタープリタに切り替えられ
(ステップS14)、トレース機能のない通常インタプ
リタ5でスレッドが実行される(ステップS15)。
【0025】このようにしてアプリケーションプログラ
ムの実行中に2つのインタプリタを切換えられるように
しても、Javaが動作する実行環境でトレースの有無
を設定できるので、デバッグを行なうためにソースプロ
グラムを変更する必要がなく、アプリケーションプログ
ラムを容易かつ作業効率よくデバッグできる。
【0026】次に、スレッド毎のインタプリタ切換え機
能について説明する。アプリケーションプログラムに存
在するスレッド個々に対して、それぞれトレースを実行
するか否かを設定できるようにする場合には、トレース
用インタプリタ6をオンにする機能を組み込まれたトレ
ース専用のスレッドクラス8を提供しておく。そして、
図7のスレッドCのように、トレースを行わないスレッ
ドに対しては、当該トレース用スレッドクラス8(また
は、当該トレース用クラス8を継承しているスレッドク
ラス)を継承させることなく通常のスレッドクラスを継
承してスレッドを生成させる。一方、図7のスレッド
A、Bのように、トレースを行いたいスレッドに対して
は、トレース用スレッドクラス8(または、トレース用
スレッドクラス8を継承したスレッドクラス)を継承さ
せておけば、実行時にトレース用インタプリタ6が実行
されるよう、スレッド生成時に内部でスレッド切換えの
設定が行われる。しかして、トレース用スレッドクラス
8を承継していないスレッドCが実行される場合には、
Java仮想マシン4が通常インタプリタ5に設定さ
れ、通常インタプリタ5によって当該スレッドが実行さ
れ、トレースは行われない。これに対し、トレース用ス
レッドクラス8を承継しているスレッドA、Bが実行さ
れた場合には、当該スレッドA、Bはトレース用インタ
プリタ6によって実行され、トレース結果が出力され
る。
【0027】スレッド毎のトレース切換えを行うことが
できるようにした場合の具体的なスレッド実行手順は、
図8に示すようになる。すなわち、アプリケーションプ
ログラム起動前に環境変数がトレース無しに設定されて
いる場合には、トレース設定の有無を判別することによ
って(ステップS21)トレース設定OFFと判断さ
れ、トレース用スレッドクラス8を継承しているか否か
にかかわりなくJava仮想マシン4は通常インタプリ
タ5に設定され(ステップS23)、トレース無しでス
レッドが実行される(ステップS24)。
【0028】また、アプリケーションプログラム起動前
に環境変数がトレース有りに設定されている場合には、
トレース設定の有無を判別することによって(ステップ
S21)トレース設定ONと判断された後、さらに、実
行しようとするスレッドがトレース用スレッドクラス8
を継承しているか否か判別される(ステップS22)。
このとき当該スレッドがトレース用スレッドクラス8を
継承していない場合には、Java仮想マシン4は通常
インタプリタ5に設定され(ステップS23)、トレー
スなしでスレッドが実行される(ステップS24)。こ
れに対し、スレッドがトレース用スレッドクラス8を継
承している場合には、Java仮想マシン4はトレース
用インタプリタ6に設定され(ステップS25)、当該
スレッドはトレース用インタプリタ6で解釈実行され、
トレース出力が外部へ出力される(ステップS26)。
【0029】このような方法では、スレッドの継承元を
トレース用のスレッドクラスと、トレース用インタプリ
タ6をオンにする機能のない通常のスレッドクラスとに
変更するだけでよく、ソースプログラム自体の変更作業
を最小の手間にする必要がないので、アプリケーション
プログラムを容易かつ作業効率よくデバッグできる。あ
るいは、スレッドの継承元のスレッドクラスにトレース
有りとトレース無しを切り替えるためのプロパティ等を
組み込んでおき、コマンドによって切り替えられるよう
にしてもよい。
【0030】次に、局所的なトレースの切換え機能、す
なわちアプリケーションプログラムやスレッドの一部分
だけのトレース切換え機能について説明する。この場合
には、トレース専用のスレッドクラスを提供しておき、
そのスレッドクラスもしくは当該スレッドクラスを継承
したスレッドクラスでは、トレース用インタプリタ6を
トレース実行モードとトレース中止モードとに切り替え
るためのメソッド(関数)を利用できるようにする。
【0031】図9は局所的なトレースの切り替えについ
て説明する図であって、スレッドA、B、Cのソースプ
ログラム9a、9b、9cに含まれている”トレースO
N”は、トレース用インタプリタ6をトレース実行モー
ドに切り替えるためのメソッド、”トレースOFF”
は、トレース用インタプリタ6をトレース中止モードに
切り替えるためのメソッドであって、いずれもメソッド
呼び出し時に内部で環境変数の設定を行うことにより、
トレース用スレッド6をトレースを実行する状態とトレ
ースを実行しない状態とに設定するものである。また、
トレース有りのインタプリタ6は、初期状態がトレース
中止モードで実行されるとする。
【0032】しかして、これらのソースプログラム9
a、9b、9cをコンパイルした実行ファイルが、実行
される場合には、図10に示すフロー図に従う。すなわ
ち、図9のスレッドA、Bの場合のように、コマンド入
力等によって環境変数をトレース有りに設定してアプリ
ケーションプログラムを起動すると(ステップS31で
トレース設定オン)、環境変数の設定によってトレース
用インタプリタ6が実行される(ステップS32)。ト
レース用インタプリタ6が実行されると、トレース用フ
ラグは初期値0に設定され(ステップS33)、トレー
スメソッド(”トレースON”、”トレースOFF”)
か通常の処理コマンドから判別する(ステップS3
4)。このトレース用フラグは、トレース用インタプリ
タ6をトレース実行モードとトレース中止モードに設定
するものであって、トレース用フラグが0の場合にはト
レース中止モードに設定され、1の場合にはトレース実
行モードに設定される。
【0033】トレース用フラグの初期値は0となってい
るので、スレッドA、Bの処理SA1、SB1は、トレ
ース中止モードでスレッドが実行されるが(ステップS
34、S38、S40)、メソッドが見つかると(ステ
ップS34)、そのメソッドが”トレースON”か”ト
レースOFF”か判別し(ステップS35)、”トレー
スON”であればトレースフラグを1に設定して次の処
理に進み(ステップS36)、”トレースOFF”であ
れば、トレースフラグを0に設定して次の処理に進む
(ステップS37)。
【0034】このとき”トレースON”のメソッドであ
れば、トレースフラグは1であると判別される(ステッ
プS38)ので、次の処理SA2、SA3;SB2、S
B3はトレース実行モードとなり、トレース用インタプ
リタ6によりスレッドを実行されながらトレースが実行
される(ステップS39)。
【0035】ついで、”トレースOFF”のメソッドが
実行されると、トレースフラグが0に設定される(ステ
ップS34、S35、S37)ので、1であると判別さ
れる(ステップS38)ので、トレース中止モードに戻
り、次の処理SA4、SB4はトレース用インタプリタ
6によりスレッドのみ実行される(ステップS40)。
そして、すべての処理が実行されると、スレッドA、B
の実行が終了する(ステップS41)。
【0036】次に、図9のスレッドCの場合のように、
コマンド入力等によって環境変数をトレース無しに設定
してアプリケーションプログラムを起動すると(ステッ
プS31でトレース設定オフ)、環境変数の設定によっ
て通常インタプリタ5が起動される(ステップS4
2)。そして、スレッドCがトレース用のメソッドを含
んでいるか否かにかかわらず、全ての処理SC1〜SC
4が通常インタプリタ5により実行される(ステップS
43、S44)。
【0037】この場合には、スレッドにトレース用のメ
ソッドを含んでいても通常インタプリタを実行すること
により通常のスレッドのように実行することができるの
で、正式用のソースプログラムに当初からトレース用の
メソッドを挿入しておけば、正式用のソースプログラム
とデバッグ用のソースプログラムを別個に作成する必要
が無くなり、アプリケーションプログラムを容易かつ作
業効率よくデバッグできる。
【0038】本発明にあっては、上記のようにトレース
有りのプログラム実行環境とトレース無しのプログラム
実行環境とを備えているので、図11に示すように、ソ
ースプログラム2をコンパイルして実行ファイル3を作
成した後、トレース無しのプログラム実行環境で実行フ
ァイル3(スレッド)を実行させることができ、またト
レース有りのプログラム実行環境で実行ファイル3をデ
バッグすることができる。よって、従来例のようにデバ
ッグプリントを挿入されたソースプログラム2aを別途
作成してデバッグ用の実行ファイル3aを作成する必要
が無くなる。このため、本発明によれば、デバッグのた
めの作業時間を大幅に短縮することができる。例えば、
デバッグプリント挿入によってデバッグを行う方法で
は、図12に示すように、正式用のソースファイルにデ
バッグプリントを挿入するのに要する時間が1ファイル
あたり180秒、1ファイルのコンパイル時間が10秒
とし、全部で200ファイルとすると、デバッグ用の実
行ファイルを作成するのに、約600分(約10時間)
掛かることになる。これに対し、アプリケーションプロ
グラム実行前にプログラム実行環境のトレース有り、無
しを切り替える本発明方法では、正式用の実行ファイル
をそのまま使用できるので、デバッグのための実行ファ
イルを作成する時間は必要ない。よって、本発明の方法
によれば、デバッグ作業に要する手間と時間を大幅に軽
減することができる。
【0039】
【発明の効果】本発明によれば、トレース機能を有する
プログラム実行環境とトレース機能を有しないプログラ
ム実行環境のいずれかでプログラムを実行可能となって
いるため、プログラムのソースファイルにデバッグプリ
ント等のトレースのための仕組みが必要いので、プログ
ラムのデバッグを行うためにソースプログラムを書き直
したり、デバッグプリントを挿入したりする必要が無く
なり、プログラムを容易かつ作業効率よくデバッグする
ことができるようになる。
【図面の簡単な説明】
【図1】従来のデバッグ方法の一例を示す概略図であ
る。
【図2】(a)は同上のデバッグ方法に用いられている
正式用のソースプログラムを示す図、(b)はデバッグ
用のソースプログラムを示す図である。
【図3】トレースによりデバッグを行う従来方法を説明
する図であって、(a)は正式用のソースプログラムを
示す図、(b)はデバッグ用のソースプログラムを示す
図である。
【図4】本発明の一実施形態にかかるJava仮想マシ
ンの構成を示す概略図である。
【図5】同上のJava仮想マシンにおいて、アプリケ
ーションプログラム起動前にインタプリタを切り替える
手順を示すフロー図である。
【図6】図4のJava仮想マシンにおいて、アプリケ
ーションプログラム実行中にインタプリタを切換える手
順を示すフロー図である。
【図7】図4のJava仮想マシンにおいて、スレッド
毎にトレースの有無を切換える方法を説明する図であ
る。
【図8】同上のJava仮想マシンにおいて、スレッド
毎にインタプリタを切り替える手順を示すフロー図であ
る。
【図9】図4のJava仮想マシンにおいて、局所的に
トレースの有無を切り替える方法を説明する図である。
【図10】同上のJava仮想マシンにおいて、局所的
なインタプリタの切換え手順を示すフロー図である。
【図11】本発明のデバッグ方法と従来例のデバッグ方
法を比較して説明する図である。
【図12】本発明のデバッグ方法に要する時間と従来例
のデバッグ方法に要する時間を比較して示す図である。
【符号の説明】
4 Java仮想マシン 5 通常インタプリタ 6 トレース用インタプリタ
フロントページの続き (72)発明者 小中 義治 京都府京都市右京区花園土堂町10番地 オ ムロン株式会社内 (72)発明者 門脇 正規 京都府京都市右京区花園土堂町10番地 オ ムロン株式会社内 (72)発明者 村井 謙一 京都府京都市右京区花園土堂町10番地 オ ムロン株式会社内 Fターム(参考) 5B042 GA08 GA23 HH07 HH30 MA10 MA20

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 トレース機能を有する環境でプログラム
    を実行することができるプログラム実行環境と、トレー
    ス機能を有しない環境で実行することができるプログラ
    ム実行環境とを備え、 前記両プログラム実行環境が選択的に実行可能となって
    いることを特徴とするプログラム実行方式。
  2. 【請求項2】 トレース機能を有する環境でプログラム
    を実行することができるプログラム実行環境と、トレー
    ス機能を有しない環境で実行することができるプログラ
    ム実行環境とを備え、両プログラム実行環境が選択的に
    実行可能となっているプログラム実行方式を格納した記
    憶媒体。
JP2000245341A 2000-08-11 2000-08-11 プログラム実行方式及び当該プログラム実行方式を格納した記憶媒体 Pending JP2002055848A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000245341A JP2002055848A (ja) 2000-08-11 2000-08-11 プログラム実行方式及び当該プログラム実行方式を格納した記憶媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000245341A JP2002055848A (ja) 2000-08-11 2000-08-11 プログラム実行方式及び当該プログラム実行方式を格納した記憶媒体

Publications (1)

Publication Number Publication Date
JP2002055848A true JP2002055848A (ja) 2002-02-20

Family

ID=18735886

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000245341A Pending JP2002055848A (ja) 2000-08-11 2000-08-11 プログラム実行方式及び当該プログラム実行方式を格納した記憶媒体

Country Status (1)

Country Link
JP (1) JP2002055848A (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7284238B2 (en) 2002-12-18 2007-10-16 International Business Machines Corporation Multithread tracing method and apparatus
US8799904B2 (en) 2011-01-21 2014-08-05 International Business Machines Corporation Scalable system call stack sampling
US8799872B2 (en) 2010-06-27 2014-08-05 International Business Machines Corporation Sampling with sample pacing
US8843684B2 (en) 2010-06-11 2014-09-23 International Business Machines Corporation Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration
US9176783B2 (en) 2010-05-24 2015-11-03 International Business Machines Corporation Idle transitions sampling with execution context
US9418005B2 (en) 2008-07-15 2016-08-16 International Business Machines Corporation Managing garbage collection in a data processing system
CN109388107A (zh) * 2017-08-10 2019-02-26 欧姆龙株式会社 控制装置

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7284238B2 (en) 2002-12-18 2007-10-16 International Business Machines Corporation Multithread tracing method and apparatus
US9418005B2 (en) 2008-07-15 2016-08-16 International Business Machines Corporation Managing garbage collection in a data processing system
US9176783B2 (en) 2010-05-24 2015-11-03 International Business Machines Corporation Idle transitions sampling with execution context
US8843684B2 (en) 2010-06-11 2014-09-23 International Business Machines Corporation Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration
US8799872B2 (en) 2010-06-27 2014-08-05 International Business Machines Corporation Sampling with sample pacing
US8799904B2 (en) 2011-01-21 2014-08-05 International Business Machines Corporation Scalable system call stack sampling
CN109388107A (zh) * 2017-08-10 2019-02-26 欧姆龙株式会社 控制装置

Similar Documents

Publication Publication Date Title
US7761855B2 (en) Computer program product and system for altering execution flow of a computer program
US8370810B2 (en) Debugging device and debugging method
US8806436B2 (en) Systems and methods for debugging applications using dual code generation
JP4911022B2 (ja) カウンタ制御回路、動的再構成回路およびループ処理制御方法
US8826244B2 (en) Providing programming support to debuggers
US8745596B2 (en) Program debugging with dynamically inserted instrumentation
JP5611756B2 (ja) プログラム・フロー制御
US10789192B2 (en) System and method for programming data transfer within a microcontroller
JP2015141539A (ja) 故障注入プログラム
JP2004164554A (ja) プログラム実行監視装置および方法
JP2002055848A (ja) プログラム実行方式及び当該プログラム実行方式を格納した記憶媒体
JP2002532804A (ja) ハイブリッドコンピュータプログラミング環境
US5963741A (en) Information processor which rewrites instructions in program to dynamically change program structure and method therefor
Lawall et al. Tarantula: Killing driver bugs before they hatch
JP2008040996A (ja) プログラマブルコントローラ
KR101548960B1 (ko) 가상 플랫폼을 이용한 프로그램 작성과 디버깅 방법 및 장치
JP2011090511A (ja) 実行プログラム、コンパイラ、実行プログラム動作修正装置及び実行プログラム動作修正方法
JP4295912B2 (ja) デバッグシステム
JP2001022560A (ja) ライブラリ関数バージョンアップ方法
KR19990030244A (ko) 2단 점프를 이용하여 소오스 프로그램으로부터 오브젝트 프로그램을 생성하는 언어처리 시스템 및 방법
JP3114686B2 (ja) プログラム・ディバグ方法
JP2001229044A (ja) デバッグ方法
JPH11110250A (ja) ソフトウェア実行モード切替方法
JP5109808B2 (ja) 追加実行可能情報生成装置、情報処理装置、及びプログラム
JP2005063311A (ja) プロセッサシステムのパッチ方法およびパッチ適用プログラム