(57)【要約】【課題】  アプリケーションにエラーが発生した場合に、サーバの再起動やデバッグ用プログラムの再デプロイを行うことなく、デバッグを行う。【解決手段】  バイトコード生成部１がソースコードをコンパイルしたバイトコードを用意する。次にバイトコード変換部２はバイトコードからデバッグ用のバイトコードを生成する。そしてデプロイ部３はバイトコードをアプリケーションサーバにデプロイする場合に、デバッグ用のバイトコードも同時にデプロイする。デバッグ用のバイトコードも同時にデプロイすることにより、エラーが発生した場合に、クラス呼び出し切換え部４３はアプリケーションサーバを再起動することなくデバッグ用のクラスに切換えできる。デバッグ用のクラスに切換えすることにより、デバッグの作業を開始することができる。【選択図】        図１
2006178791.tif 000002
【特許請求の範囲】
【請求項１】
ソースコードをコンパイルして生成したバイトコードと上記バイトコードのデバッグに使用するデバッグコードとを実行する実行部と、
上記実行部での上記バイトコードと上記デバッグコードとの実行状態を記憶する第１記憶部と、
上記第１記憶部で記憶した実行状態を保持して、上記バイトコードから上記デバッグコードへ実行するコードを切換する切換部を備えることを特徴とするデバッグ装置。
【請求項２】
上記切換部は、上記実行部での上記バイトコードの実行でエラーが発生した場合に、上記バイトコードから上記デバッグコードへ実行するコードを切換することを特徴とする請求項１記載のデバッグ装置。
【請求項３】
上記デバッグ装置は、さらに、
クラス名を入力する第１入力部と、
上記第１入力部で入力した上記クラス名を記憶する第２記憶部と、
上記実行部で実行する処理が上記第２記憶部で記憶した上記クラス名に一致するか判定する第１判定部とを備え、
上記切換部は、上記第１判定部の判定が上記クラス名に一致する場合は、実行するクラスを上記バイトコードのクラスに切換し、上記第１判定部の判定が上記クラス名に一致する場合は、実行するクラスを上記デバッグコードのクラスに切換することを特徴とする請求項１記載のデバッグ装置。
【請求項４】
上記デバッグ装置は、さらに、
ブレークポイントとして、メソッド名とフィールド名と行数との組と、判定式とを入力する第２入力部と、
上記第２入力部で入力した上記ブレークポイントを記憶する第３記憶部と、
上記実行部が実行する処理が、上記第３記憶部で記憶した上記メソッドと上記フィールドと上記行数との組と一致するかを判定する第２判定部と、
上記実行部が実行する処理結果が上記第３記憶部で記憶した上記判定式と一致するかを判定する第３判定部と、
上記第２判定部の判定と上記第３判定部の判定との少なくとも１つが一致する場合は上記第１記憶部で記憶した実行状態を出力する出力部を備えることを特徴とする請求項１記載のデバッグ装置。
【請求項５】
デバッグ装置のデバッグ方法において、
ソースコードをコンパイルして生成したバイトコードと上記バイトコードのデバッグに使用するデバッグコードとを実行する実行ステップと、
上記実行ステップでの上記バイトコードと上記デバッグコードとの実行状態を記憶する第１記憶ステップと、
上記第１記憶ステップで記憶した実行状態を保持して、上記バイトコードから上記デバッグコードへ実行するコードを切換する切換ステップを備えることを特徴とするデバッグ方法。
【請求項６】
ソースコードをコンパイルして生成したバイトコードにデバッグルーチンを挿入するデバッグルーチン挿入部と、
上記デバッグルーチン挿入部で上記デバッグルーチンを挿入した上記バイトコードの名称を変更してデバッグコードとする名称変更部とを備えることを特徴とするバイトコード変換装置。
【請求項７】
上記デバッグルーチン挿入部は、ブレークポイントとして指定可能な箇所すべてにデバッグルーチンを挿入することを特徴とする請求項６記載のバイトコード変換装置。
【請求項８】
バイトコード変換装置のバイトコード変換方法において、
ソースコードをコンパイルして生成したバイトコードにデバッグルーチンを挿入するデバッグルーチン挿入ステップと、
上記デバッグルーチン挿入ステップで上記デバッグルーチンを挿入した上記バイトコードの名称を変更してデバッグコードとする名称変更ステップとを備えることを特徴とするバイトコード変換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデバッグ装置および方法とバイトコード変換装置および方法に関するものである。
【背景技術】
【０００２】
アプリケーションサーバなどのＪａｖａ（登録商標、以下ＪＶとする。）プログラムを実行するサーバにおいて、デプロイ（サーバにアップロードすること）されたアプリケーションのデバッグを行う。通常デバッグを行う場合、デバッグを行うユーザはブレークポイントを設定する。またはデバッグを行うユーザは実行中のＪＶプログラムの変数値などを取得する。そのためには、一旦アプリケーションサーバを止めてからアプリケーションサーバを再起動する。あるいは、アプリケーションサーバは起動したままの状態で、デバッグ用にデータをダンプするなどの処理を追加したアプリケーションを再びデプロイする必要があった。
【特許文献１】特開２００２−５５８４８号公報
【特許文献２】特開平１１−１１０２５０号公報
【特許文献３】特開平１０−４０１３１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
アプリケーションサーバなどのＪＶプログラムを実行するサーバにおいて、デプロイされたアプリケーションに不具合やエラーが発生したとする。この場合の対応方法は、通常は、原因を調査するために一旦アプリケーションサーバを止める。そしてデバッグ用のオプションを付けてアプリケーションサーバの起動を行う必要がある。このようにアプリケーションサーバの再起動を行うと、同じアプリケーションサーバ上で稼動している他のアプリケーションを一旦全て停止することになる。そのため、アプリケーションサーバの再起動は影響が大きく、時間も掛かるという課題がある。
【０００４】
また、別の対応方法としては、アプリケーションサーバを止めずに、エラーが発生したアプリケーションのモジュールをデバッグ用に修正する。例えば、データをダンプするなどの処理を追加したモジュールを再デプロイする方法がある。しかしこの場合、一度でエラーの原因を特定することができる保証が無い。よってエラーの原因を特定するために何度もデプロイを行う為、時間がかかるという課題がある。
【０００５】
さらに、これら２つの方法は、エラーが発生した時点のメモリの状態をクリアしてしまう。そのため、エラーが発生した状態を再現して原因を特定することが難しくなるという課題がある。
【０００６】
また、発生した障害が入力データ不備などのプログラム以外の問題で発生した不具合やエラーであることも考えられる。この場合、本来はサーバを止める必要はない。しかしアプリケーションサーバを再起動する、または再デプロイを行うなどしない限り、原因の特定ができない。そのため、本来必要のないアプリケーションサーバを再起動する、または再デプロイを行うという無駄な作業が発生するという課題がある。
【０００７】
本発明は上記の課題を解決するためになされたものである。その目的とするところは、アプリケーションサーバなどのＪＶプログラムを実行するサーバにおいて、デプロイされたアプリケーションに不具合やエラーが発生した場合にも、アプリケーションサーバの再起動を行うことなく、原因の調査を可能とすることにある。
【０００８】
他の目的は、デバッグ用に修正したモジュールを再デプロイすることなく、原因の調査を可能とすることにある。
【０００９】
また他の目的は、エラーが発生した時点のメモリの状態をクリアすることなく、原因の調査を可能とすることにある。
【００１０】
さらに他の目的は、入力データ不備などのプログラム以外の問題で発生した不具合やエラーについては、サーバを止めることなく、原因の調査を可能とすることにある。
【課題を解決するための手段】
【００１１】
本発明は上記のような課題を解決するためになされたもので、ソースコードをコンパイルして生成したバイトコードと上記バイトコードのデバッグに使用するデバッグコードとを実行する実行部と、上記実行部での上記バイトコードと上記デバッグコードとの実行状態を記憶する第１記憶部と、上記第１記憶部で記憶した実行状態を保持して、上記バイトコードから上記デバッグコードへ実行するコードを切換えする切換部を備えることを特徴とする。
【発明の効果】
【００１２】
この発明によれば、実行状態を保持して、バイトコードからデバッグコードへ切換えして実行することができる。そのため、アプリケーションサーバなどのプログラム実行エンジンを止めることはない。またエラーが発生した時点のメモリの状態を保持したままエラーの原因を調査することが可能となる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明を図面に示す実施の形態に基づいて説明する。
【００１４】
実施の形態１．
本発明の実施の形態を図１に基づいて説明する。図１は本実施の形態のデバッグ装置を表す構成図である。本実施の形態のデバッグ装置は、バイトコード生成部１とバイトコード変換部２とデプロイ部３とデバッグ装置４とから構成される。
【００１５】
バイトコード生成部１はＪＶのソースコードのコンパイルを行い、ＪＶバイトコード（バイトコードの一例）を生成する。バイトコードとは、ソースコードをコンピュータで実行可能な形式に、コンパイラなどで変換したものを指す。バイトコード変換部２はＪＶバイトコードをデバッグ用バイトコード（デバッグコードの一例）に変換する。デバッグコードとは、データをダンプするなどの処理をバイトコードに追加したものを指す。デプロイ部３はＪＶバイトコードとデバッグ用バイトコードとをデプロイする。デバッグ装置４はＪＶバイトコードの実行とデバッグ用バイトコードを使用したデバッグの処理とを行う。
【００１６】
バイトコード変換部２は、名称変更部２１とデバッグルーチン挿入部２２とからなる。
【００１７】
名称変更部２１はＪＶバイトコードのクラス名を変更する。デバッグルーチン挿入部２２はクラス名を変更されたＪＶバイトコードにデバッグルーチンを挿入してデバッグ用バイトコードに変換する。
【００１８】
デバッグ装置４は、バイトコード情報記憶部４１とプログラム実行部４２（実行部の一例）とクラス呼び出し切換部４３（切換部の一例）と判定部４４と第１記憶部４５と第２記憶部４６と第３記憶部４７と第１入力部４８と第２入力部４９と出力部５０とからなる。
【００１９】
例えば、第１記憶部４５と第２記憶部４６と第３記憶部４７とは、揮発性メモリの一例であるＲＡＭ９１４や、不揮発性メモリの一例であるＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０などにより構成されている。
【００２０】
また、例えば、第１入力部４８と第２入力部４９とは通信ボード９１５、Ｋ／Ｂ９０２、スキャナ装置９０７、ＦＤＤ９０４などから構成される。
【００２１】
また、例えば、出力部５０は通信ボード９１５、ＣＲＴ表示装置９０１などから構成される。
【００２２】
バイトコード情報記憶部４１はデプロイされたバイトコードを保持する。プログラム実行部４２はデプロイされたバイトコードを実行する。クラス呼び出し切換部４３はバイトコードとデバッグ用バイトコードとの呼び分けを行う。判定部４４はブレークポイント情報を参照しながらブレークの判定を行う。判定部４４はさらに、第１判定部４４１と第２判定部４４２と第３判定部４４３とを持つ。第１判定部は実行するクラスのクラス名と第１入力部で入力されたクラス名とが一致するかを判定する。第２判定部は実行するメソッド名とフィールド名と行数との組とブレークポイントのメソッド名とフィールド名と行数との組が一致するかを判定する。第３判定部は実行する処理が判定式と一致するかを判定する。第１記憶部４５はブレーク中に変数の値とオブジェクトの値を取得する。第２記憶部４６は上述した第１判定部４４１が判定する際に参照されるクラス名を記憶する。第３記憶部４７は上述した第２判定部４４２と第３判定部４４３とが判定する際に参照されるメソッド名とフィールド名と行数とを記憶する。第１入力部４８と第２入力部４９とはデバッグを行うユーザからのブレークポイント情報の入力に使用される。第１入力部４８はクラス名の入力に使用される。また第２入力部４９はメソッド名とフィールド名と行数との組と、判定式の入力に使用される。出力部５０は第１記憶部で記憶した変数の値とオブジェクトの値を出力する。
【００２３】
図２はＪＶソースコードが入力されてからデバッグ用バイトコードが生成されデバッグ装置４へデプロイされるまでの動作を示したものである。
【００２４】
バイトコード生成部１は一般的なＪＶのコンパイラを使用する。
【００２５】
ステップＳ１１では、バイトコード生成部１はＪＶのソースコードを受け取り、ＪＶバイトコードを生成する。
【００２６】
次に、バイトコード変換部２はバイトコード生成部１で生成したＪＶバイトコードを受け取り、デバッグ用バイトコードを生成する。
【００２７】
ステップＳ１２では、名称変更部２１はＪＶバイトコードのクラス名に「Ｄｅｂｕｇｃｏｄｅ」というプレフィックスを付けた新しいクラス名に変更する。
【００２８】
ステップＳ１３では、デバッグルーチン挿入部２２は、判定部４４の呼び出し処理を、ブレークポイントに指定される可能性のあるＪＶバイトコードの全ての位置に挿入する。
【００２９】
ステップＳ１４では、デプロイ部３は生成したデバッグ用バイトコードと元のバイトコードの両方をデバッグ装置４へデプロイする。
【００３０】
次にデバッグ装置４の動作について説明する。図３はエラーが発生してプログラムのデバッグを行う動作を示したものである。
【００３１】
ステップＳ２１では、プログラム実行部４２はデプロイされたＪＶバイトコードの実行を開始する。
【００３２】
ステップＳ２２では、プログラム実行部４２は実行中にエラーが発生したかどうかを判定する。実行中にエラーが発生しなかった場合は、プログラム実行部４２はＪＶバイトコードの最後まで実行して終了する。実行中にエラーが発生した場合は、プログラム実行部４２はステップＳ２３へ進む。
【００３３】
ステップＳ２３では、プログラム実行部４２はバイトコードの実行を一旦中断する。そしてデバッグを行うユーザは、第１入力部４８と第２入力部４９とを使用してブレークポイント情報を入力する。第２記憶部４６は、第１入力部４８で入力されたクラス名を記憶する。第３記憶部４７は第２入力部４９で入力されたメソッド名とフィールド名と行数との組と判定式とを記憶する。
【００３４】
ステップＳ２４では、プログラム実行部４２はバイトコードの実行を再開する。第１判定部４４１はブレークポイントが指定されたクラス名と次に実行するクラスのクラス名とを比較する。
【００３５】
ステップＳ２５では、第１判定部４４１はブレークポイントが指定されたクラス名と次に実行するクラスのクラス名とが一致したかどうかを判定する。指定されたクラス名と次に実行するクラスのクラス名とが一致しなかった場合は、プログラム実行部４２は、ＪＶバイトコードの最後まで実行して終了する。指定されたクラス名と次に実行するクラスのクラス名とが一致した場合は、プログラム実行部４２はステップＳ２６へ進む。
【００３６】
ステップＳ２６では、クラス呼び出し切換部４３はＪＶバイトコードの代わりにデバッグ用バイトコードを呼び出す。
【００３７】
ステップＳ２７では、プログラム実行部４２はデバッグ用バイトコードを実行する。デバッグ用バイトコードは１ラインごとに判定部４４を呼び出す。判定部４４は、次に実行するコードがブレークポイントに指定された処理と一致するかを確認する。具体的には、第２判定部４４２は、次に実行するコードがブレークポイントに指定されたメソッドの呼び出しと一致するかを確認する。また第２判定部４４２は、次に実行するコードがブレークポイントに指定されたフィールドの操作と一致するかを確認する。さらに第２判定部４４２は、次に実行するコードがブレークポイントに指定された行数と一致するかを確認する。または第３判定部４４３は、次に実行するコードが指定された条件式を真にするかを確認する。
【００３８】
ステップＳ２８では、第２判定部４４２と第３判定部４４３とは、ステップＳ２７の確認の結果が条件と一致するかを判定する。ステップＳ２７のメソッドの呼び出しとフィールドの操作と行数との全てが一致する場合、次に実行するコードはブレークポイントに指定された処理であることになる。または条件式が真にする場合、次に実行するコードはブレークポイントに指定された処理であることになる。全てのコードが条件と一致しない場合は、プログラム実行部４２はステップＳ２４へ戻る。条件に一致した場合は、プログラム実行部４２はステップＳ２９へ進む。
【００３９】
ステップＳ２９では、プログラム実行部４２はバイトコードの実行を中断する。そして第１記憶部４５は実行しているインスタンスの参照を記憶する。
【００４０】
ステップＳ２１０では、出力部５０は、第１記憶部４５から変数やオブジェクトの値を取得し、出力する。デバッグを行っているユーザは、デバッグ用バイトコードにより出力された情報を参照して、ブレークポイントの情報を更新または削除する。
【００４１】
本実施の形態は、まずバイトコード生成部１がＪＶのソースコードをコンパイルしたバイトコードを用意する。次にバイトコード変換部２はバイトコードからデバッグ用バイトコードを生成する。次にデプロイ部３はバイトコードをアプリケーションサーバにデプロイする場合に、デバッグ用バイトコードも同時にデプロイする。デバッグ用バイトコードも同時にデプロイすることにより、エラーが発生した場合に、クラス呼び出し切換部４３はアプリケーションサーバを再起動することなくデバッグ用のクラスに切換えできる。デバッグ用のクラスに切換えすることにより、デバッグの作業を開始することができる。アプリケーションサーバを再起動していないため、エラーの発生したメモリやデータベースの状態を保持したまま調査することができる。そのため原因の特定が比較的容易にできるという利点がある。
【００４２】
また、本実施の形態は、アプリケーションサーバを再起動することが不要であることと、修正したモジュールの再デプロイが不要であることとからエラーの原因調査の作業時間を短縮することができる。
【００４３】
さらに、本実施の形態は、プログラム以外の入力データなどの不備が原因で発生したエラーの場合は、アプリケーションサーバやアプリケーションは変更する必要がない。エラーの原因であった入力データなどの不備を解決し、引き続き業務を再開することができる。
【００４４】
本実施の形態では、バイトコード変換部２がＪＶのソースコードをコンパイルしたバイトコードからデバッグ用バイトコードを生成している。ここで、バイトコードをデバッグ用に書き換える以外に、ソースコードを書き換える方法が考えられる。しかしバイトコードは一定のルールで書かれている。そのため、バイトコードの書き換えの場合、バイトコード変換部２によって一定の決まりのもとに処理することができる。またアプリケーションでも、判定部４４は同じものを使いまわすことができる。
【００４５】
上述の実施の形態を簡単に言い替えると以下のようになる。
【００４６】
本実施の形態は、ＪＶプログラムを実行するデバッグ装置４において、ＪＶのソースコードをコンパイルしたＪＶバイトコードと、デバッグ用バイトコードとを予めデバッグ装置４にデプロイしておく。プログラム実行部４２はＪＶバイトコードとデバッグ用バイトコードとのクラスを適宜切換えて実行できる。エラーやバグによる不具合が発生した場合には、プログラム実行部４２はデバッグ用にモジュールを再デプロイせずに、不具合が発生した状態を保持したまま不具合の解析を行うことが可能である。
【００４７】
つまり、エラーが発生した場合、プログラム実行部４２はバイトコードの実行を中断する。次に第１入力部４８は、プログラム実行部４２に対して、クラス名を与える。また第２入力部４９は、プログラム実行部４２に対して、ブレークポイントの情報として、メソッド名とフィールド名と行数との組と判定式とを与える。第１判定部４４１は与えられたクラス名を参照する。プログラム実行部４２は、実行する処理のクラス名と与えられたクラス名が一致する場合に、デバッグ用バイトコードのクラスを実行する。第２判定部４４２と第３判定部４４３とは与えられたブレークポイントの情報を参照する。プログラム実行部４２が実行を再開すると、デバッグ用バイトコードは第２判定部４４２と第３判定部４４３とを呼び出す。実行しているバイトコードの位置が指定されたメソッドとフィールドと行数とに一致する場合と、判定式が真になる場合とには、プログラム実行部４２はそこでプログラムの実行を中断する。実行を中断した状態で、デバッグを行うユーザは変数の値やオブジェクトの値についての問合せを、プログラム実行部４２に対して行う。プログラム実行部４２は、第１記憶部４５から直前に実行していたインスタンスから情報を受け取り、出力部５０を介してデバッグを行うユーザに解答することができる。そして、プログラム実行部４２は、デバッグを行うユーザからリスタートの指示を受け取ると、中断した状態からバイトコードの実行を再開することができる。
【００４８】
また上述した実施の形態の特徴をまとめると以下のようになる。
【００４９】
まず、ＪＶのソースコードをコンパイルして作成した通常のバイトコードと、通常のバイトコードをデバッグ用に変更したデバッグ用バイトコードの両方を同時にデプロイすることができ、通常のバイトコードを実行しているときにエラーが発生した場合に、エラーが発生した状態を維持したまま、原因を調査する対象のクラスのみを通常のバイトコードからデバッグ用バイトコードに切換えて実行することにより、そのときの状態を継続してバグの解析を行うことができることを特徴とするプログラム実行エンジンである。
【００５０】
また上述のプログラム実行エンジンは、エラーが発生した場合に、ユーザからのデバッグの開始の指示を受け取ると、ブレークポイント情報記憶部からブレークポイントを指定したクラス情報を受け取り、ブレークポイントが指定されていないクラスは通常のクラスを実行し、ブレークポイントが指定されたクラスはデバッグ用のクラスを実行することを特徴とする。
【００５１】
さらに上述のプログラム実行エンジンは、ユーザからブレークポイント情報として、クラス名、メソッド名、フィールド名、行数、判定式、の５つの情報を受け取り、ブレークポイント情報記憶部に記録し、ブレークポイント判定ルーチンと、クラス呼び出し切換え手段から参照できるようにすることを特徴とする。
【００５２】
加えて上述のプログラム実行エンジンは、デバッグ用バイトコードはブレークポイント判定ルーチンが１コードおきに実行するように挿入されており、デバッグ用バイトコードの実行に伴い、判定ルーチンが実行される。もしブレークポイントが指定されたバイトコード、ブレーク判定の結果が真になった場合は、その時点でプログラムの実行を停止して、その時点での変数の値とオブジェクトの値、現在実行しているプログラムの位置を取得して、デバッグを行うユーザからの指示に従って、それらの値を出力することができることを特徴とする。
【００５３】
また別の特徴は、ＪＶのソースコードをコンパイルして作成した通常のバイトコードに対して、任意の位置でブレークすることができるようにするために、ブレークポイント判定ルーチンの呼び出しをブレークポイントに指定される可能性のあるコードの全ての位置に自動的に挿入するとともに、元のクラスと区別するために元のクラス名にＤｅｂｕｇＣｏｄｅというプレフィックスを付けた新しいクラス名に置き換えることを特徴とするバイトコード変換ツールである。
【００５４】
さらに別の特徴は、デバッグ用バイトコードから呼び出され、現在実行しているプログラムの位置が、指定されたメソッドやフィールド、行数に一致するか、あるいは判定式が真になるかどうかを判定して、もし真になる場合は、現在実行中のインスタンス自身（ｔｈｉｓ）をプログラム実行エンジンに通知して、デバッグしているユーザからの変数の値やオブジェクトの値についての問合せに対して答えることができるようにするためのブレークポイント判定ルーチンである。
【００５５】
図４は、実施の形態におけるデバッグ装置の外観の一例を示す図である。
図４において、デバッグ装置１００は、システムユニット９１０、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）表示装置９０１、キーボード（Ｋ／Ｂ）９０２、マウス９０３、コンパクトディスク装置（ＣＤＤ）９０５、プリンタ装置９０６、スキャナ装置９０７を備え、これらはケーブルで接続されている。
さらに、デバッグ装置１００は、ＦＡＸ機９３２、電話器９３１とケーブルで接続され、また、ローカルエリアネットワーク（ＬＡＮ）９４２、ゲートウェイ９４１を介してインターネット９４０に接続されている。
【００５６】
図５は、実施の形態におけるデバッグ装置のハードウェア構成の一例を示す図である。
図５において、デバッグ装置１００は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９１１を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信ボード９１５、ＣＲＴ表示装置９０１、Ｋ／Ｂ９０２、マウス９０３、ＦＤＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）９０４、磁気ディスク装置９２０、ＣＤＤ９０５、プリンタ装置９０６、スキャナ装置９０７と接続されている。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信ボード９１５は、ＦＡＸ機９３２、電話器９３１、ＬＡＮ９４２等に接続されている。
例えば、通信ボード９１５、Ｋ／Ｂ９０２、スキャナ装置９０７、ＦＤＤ９０４などは、入力部の一例である。
また、例えば、通信ボード９１５、ＣＲＴ表示装置９０１などは、出力部の一例である。
【００５７】
ここで、通信ボード９１５は、ＬＡＮ９４２に限らず、直接、インターネット９４０、或いはＩＳＤＮ等のＷＡＮ（ワイドエリアネットワーク）に接続されていても構わない。直接、インターネット９４０、或いはＩＳＤＮ等のＷＡＮに接続されている場合、デバッグ装置１００は、インターネット９４０、或いはＩＳＤＮ等のＷＡＮに接続され、ウェブサーバ９４１は不用となる。
磁気ディスク装置９２０には、オペレーティングシステム（ＯＳ）９２１、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３は、ＣＰＵ９１１、ＯＳ９２１、ウィンドウシステム９２２により実行される。
【００５８】
上記プログラム群９２３には、上述する実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、上述する実施の形態の説明において、「〜の判定」として説明するものが、「〜ファイル」として記憶されている。
また、上述する実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータの入出力を示し、そのデータの入出力のためにデータは、磁気ディスク装置９２０、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）、光ディスク、ＣＤ（コンパクトディスク）、ＭＤ（ミニディスク）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のその他の記録媒体に記録される。あるいは、信号線やその他の伝送媒体により伝送される。
【００５９】
また、上述する実施の形態の説明において「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、ハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
【００６０】
また、上述する実施の形態を実施するプログラムやデータは、また、磁気ディスク装置９２０、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）、光ディスク、ＣＤ（コンパクトディスク）、ＭＤ（ミニディスク）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のその他の記録媒体による記録装置を用いて記憶されても構わない。
【産業上の利用可能性】
【００６１】
複数のアプリケーションが同一のサーバで稼動している環境では、サーバの高い可用性が強く求められている。本発明によるデバッグ装置を利用すればサーバを再起動することなくバグの解析を行うことができる。よって上記の課題に対する解決策となり、複数のアプリケーションが同一のサーバで稼動している環境への導入することが考えられる。
【図面の簡単な説明】
【００６２】
【図１】本実施の形態のデバッグ装置を表す構成図である。
【図２】ＪＶソースコードが入力されてからデプロイされるまでの動作を示したものである。
【図３】プログラムのデバッグを行う動作を示したものである。
【図４】実施の形態におけるデバッグ装置の外観の一例を示す図である。
【図５】実施の形態におけるデバッグ装置のハードウェア構成の一例を示す図である。
【符号の説明】
【００６３】
１  バイトコード生成部、２  バイトコード変換部、２１  名称変更部、２２  デバッグルーチン挿入部、３  デプロイ部、４  デバッグ装置、４１  バイトコード情報記憶部、４２  プログラム実行部、４３  クラス呼び出し切換部、４４  判定部、４４１  第１判定部、４４２  第２判定部、４４３  第３判定部、４５  第１記憶部、４６  第２記憶部、４７  第３記憶部、４８  第１入力部、４９  第２入力部、１００  デバッグ装置、９０１  ＣＲＴ表示装置、９０２  Ｋ／Ｂ、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ装置、９０７  スキャナ装置、９１０  システムユニット、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群、９３１  電話器、９３２  ＦＡＸ機、９４０  インターネット、９４１  ゲートウェイ、９４２  ＬＡＮ。
【図１】
2006178791.tif 000003
【図２】
2006178791.tif 000004
【図３】
2006178791.tif 000005
【図４】
2006178791.tif 000006
【図５】
2006178791.tif 000007