(57)【要約】【課題】  プログラムの同一の場所で例外が発生した場合であっても、プロセス毎に例外処理を変えることができることを可能とする。【解決手段】  プロセスの実行中に、所定のアドレスに在る原命令がトラップ命令に書き換えられたプログラム中の所定のアドレスに在るトラップ命令が実行されることによりトラップ例外が発生したならば、テーブルにアドレスが格納されているエントリがあるかを判断し、その判断結果が肯定的ならば、エントリでアドレスに対応付けられているプロセス識別情報が実行中のプロセスの識別情報と一致するかを判断し、その判断結果が肯定的でならば、エントリでアドレスに対応付けられている例外情報に対応した例外処理ルーチンを起動する。２つめの判断結果が否定的である場合に、エントリでアドレスに対応付けられている原命令を実行し、プログラム中のトラップ命令に続く命令に制御を戻す。【選択図】        図１
2006268298.tif 000002
【特許請求の範囲】
【請求項１】
プロセスの実行中に、所定のアドレスに在る原命令がトラップ命令に書き換えられたプログラム中の前記所定のアドレスに在るトラップ命令が実行されることによりトラップ例外が発生したならば、予め用意したテーブルに前記アドレスが格納されているエントリがあるか否かを判断するエントリ検索ステップと、
前記エントリ検索ステップの判断結果が肯定的である場合に、前記エントリで前記アドレスに対応付けられているプロセス識別情報が、実行中の前記プロセスの識別情報と一致するか否かを判断するプロセス識別情報一致判断ステップと、
前記プロセス識別情報一致判断ステップの判断結果が肯定的である場合に、前記エントリで前記アドレスに対応付けられている例外情報に対応した例外処理ルーチンを起動する例外処理ルーチン起動ステップと、
を備えることを特徴とするデバッグ方法。
【請求項２】
請求項１に記載のデバッグ方法において、
前記プロセス識別情報一致判断ステップの判断結果が否定的である場合に、前記エントリで前記アドレスに対応付けられている原命令を実行する原命令実行ステップと、
前記プログラム中のトラップ命令に続く命令に制御を戻す継続ステップと、
を更に備えることを特徴とするデバッグ方法。
【請求項３】
請求項１に記載のデバッグ方法において、
前記エントリ検索ステップの判断結果が否定的である場合に、既存のトラップ例外処理に制御を移すトラップ例外処理起動ステップを更に備えることを特徴とするデバッグ方法。
【請求項４】
請求項１に記載のデバッグ方法において、
前記エントリ検索ステップの前に、前記プログラムの前記所定のアドレスにある前記原命令を前記トラップ命令に書き換える書換えステップを更に備えることを特徴とするデバッグ方法。
【請求項５】
プロセスの実行中に、所定のアドレスに在る原命令がトラップ命令に書き換えられたプログラム中の前記所定のアドレスに在るトラップ命令が実行されることによりトラップ例外が発生したならば、予め用意したテーブルに前記アドレスが格納されているエントリがあるか否かを判断するエントリ検索手段と、
前記エントリ検索手段の判断結果が肯定的である場合に、前記エントリで前記アドレスに対応付けられているプロセス識別情報が、実行中のプロセスの識別情報と一致するか否かを判断するプロセス識別情報一致判断手段と、
前記プロセス識別情報一致判断手段の判断結果が肯定的である場合に、前記エントリで前記アドレスに対応付けられている例外情報に対応した例外処理ルーチンを起動する例外処理ルーチン起動手段と、
を備えることを特徴とするデバッグ装置。
【請求項６】
請求項５に記載のデバッグ装置において、
前記プロセス識別情報一致判断手段の判断結果が否定的である場合に、前記エントリで前記アドレスに対応付けられている原命令を実行する原命令実行手段と、
前記プログラム中のトラップ命令に続く命令に制御を戻す継続手段と、
を更に備えることを特徴とするデバッグ装置。
【請求項７】
請求項５に記載のデバッグ装置において、
前記エントリ検索手段の判断結果が否定的である場合に、既存のトラップ例外処理に制御を移すトラップ例外処理起動手段を更に備えることを特徴とするデバッグ装置。
【請求項８】
請求項５に記載のデバッグ装置において、
前記エントリ検索ステップの前に、前記プログラムの前記所定のアドレスにある前記原命令を前記トラップ命令に書き換える書換えステップを更に備えることを特徴とするデバッグ装置。    
【請求項９】
コンピュータに請求項１乃至４の何れか１項に記載のデバッグ方法を行わせるためのプログラム。
【請求項１０】
請求項９に記載のプログラムを記録した、コンピュータ読取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムをデバッグするためのデバッグ方法及びデバッグ装置に関し、特に、プログラムの例外処理に関するデバッグを行うためのデバッグ方法及びデバッグ装置に関する。
【背景技術】
【０００２】
例外処理プログラムは、ハードウェアや他のソフトウェアから発生される例外によって呼び出される。これらの例外が発生されるタイミングは、動作状況によって多様に変化する。
【０００３】
そのため、例外処理プログラムは、例外の発生する状況を想定して、様々な条件で呼び出して評価しなければならない。しかし、実際の使用方法では稀なタイミングでしか起きない条件もあり、そのような条件下での例外処理プログラムを評価するには、人為的に同じような動作状況を再現する必要がある。
【０００４】
特許文献１乃至３に開示されている発明は、任意のアドレスを実行したときに、指定した内容で擬似的に例外（割り込み）を発生させる方法である。以降、擬似的に発生させる例外や割り込みを総称して「擬似例外」と呼ぶ。
【０００５】
これら従来の方法は使用すれば、通常は発生しないようなタイミングでの例外処理プログラムの評価が可能になる。
【特許文献１】特開２００３−１４０９２４号公報
【特許文献２】特開２００２−０１４８４４号公報
【特許文献２】特開平０５−０６１７１８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、従来の手法には、マルチプロセスへの対応が十分でないために、マルチプロセスを行うマルチプロセスＯＳの内部を評価するのには適していないという問題がある。
【０００７】
従来の方法で、マルチプロセスＯＳ内の複数のプロセスから実行されるコードに擬似例外を設定すると、一般に、同時に動いている複数のプロセス内のどのプロセスで擬似例外が発生するかが不明となる。
【０００８】
そのため、マルチプロセスＯＳの内部で、従来の方法が適用できるのは、特定のプロセスでしか実行しないコードや、どのプロセスで例外が発生しても支障が無い機能などに限定される。
【０００９】
そこで、本発明は、プログラムの同一の場所で例外が発生した場合であっても、プロセス毎に例外処理を変えることができることを可能とするデバッグ方法及びデバッグ装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
擬似例外の対象でなければ、元の命令を代理で実行し（ステップＢ５）、発生アドレスの次の命令に制御を返す（ステップＢ６）。
【００１１】
本発明によれば、プロセスの実行中に、所定のアドレスに在る原命令がトラップ命令に書き換えられたプログラム中の前記所定のアドレスに在るトラップ命令が実行されることによりトラップ例外が発生したならば、予め用意したテーブルに前記アドレスが格納されているエントリがあるか否かを判断するエントリ検索ステップと、前記エントリ検索ステップの判断結果が肯定的である場合に、前記エントリで前記アドレスに対応付けられているプロセス識別情報が、実行中の前記プロセスの識別情報と一致するか否かを判断するプロセス識別情報一致判断ステップと、前記プロセス識別情報一致判断ステップの判断結果が肯定的である場合に、前記エントリで前記アドレスに対応付けられている例外情報に対応した例外処理ルーチンを起動する例外処理ルーチン起動ステップと、を備えることを特徴とするデバッグ方法が提供される。
【００１２】
上記のデバッグ方法において、前記プロセス識別情報一致判断ステップの判断結果が否定的である場合に、前記エントリで前記アドレスに対応付けられている原命令を実行する原命令実行ステップと、前記プログラム中のトラップ命令に続く命令に制御を戻す継続ステップと、を更に備えるようにしてもよい。
【００１３】
上記のデバッグ方法において、前記エントリ検索ステップの判断結果が否定的である場合に、既存のトラップ例外処理に制御を移すトラップ例外処理起動ステップを更に備えるようにしてもよい。
【００１４】
上記のデバッグ方法において、前記エントリ検索ステップの前に、前記プログラムの前記所定のアドレスにある前記原命令を前記トラップ命令に書き換える書換えステップを更に備えるようにしてもよい。
【００１５】
以下に述べる例外設定手段とトラップ例外処理手段により、任意の指定プロセスが、ＯＳ内のコードを含む任意の指定アドレスを実行したときに、任意の擬似的な例外（擬似例外）を発生する。
【００１６】
入力パラメータとして擬似例外の発生プロセスと発生アドレスと例外情報を与えて、例外設定手段を呼び出し、擬似例外を発生する際に必要な情報をテーブルに保存し（ステップＡ１）、対象アドレスの原命令をトラップ命令に書き換える（ステップＡ２）。
【００１７】
トラップ命令の実行によりトラップ例外が発生したとき、トラップ例外処理手段が呼び出され、発生アドレスと発生プロセスから疑似例外の対象であるか判断し（ステップＢ１，Ｂ２）、対象であれば、例外情報をトラップ例外のものから擬似例外のものに置換し（ステップＢ３）、擬似例外に対応する例外処理に制御を移す（ステップＢ４）。
【発明の効果】
【００１８】
ＯＳ内のコードを対象とする場合でも、評価者が例外が発生するプロセスを制御することができるので、ＯＳの例外処理の評価をより詳細で効率良く行えるようになる。
【発明を実施するための最良の形態】
【００１９】
以下、図面を参照して本発明を実施するための最良の形態について詳細に説明する。
【００２０】
任意の指定プロセスが、ＯＳ内のコードを含む任意の指定アドレスを実行したときに、任意の擬似的な例外（擬似例外）を発生する。
【００２１】
次に、第１の実施形態の構成について詳細に説明する。
【００２２】
本実施形態のアーキテクチャでは、例外が発生すると、例外の種類や発生アドレスなどの情報を含む例外情報が生成され、例外の種類と発生アドレスに応じた例外処理ルーチンが呼び出される。また、トラップ命令を実行すると固有の例外であるトラップ例外が発生する。
【００２３】
本実施形態では、トラップ命令は擬似例外の発生のためにだけに使用し、トラップ例外が発生するのは擬似例外の対象アドレスが実行された場合に限られる。
【００２４】
図１を参照すると、本実施形態は例外設定手段とトラップ例外処理手段を含む。
【００２５】
例外設定手段は、入力パラメータに擬似例外の発生プロセスと発生アドレスと例外情報を取り、情報の保存と発生アドレスのトラップ命令への書き換えを行う。その際、図２に示す情報保存手段を利用する。
【００２６】
トラップ例外処理手段は、トラップ例外が発生すると呼び出される例外処理ルーチンであり、トラップ例外の発生プロセスと発生アドレスの組み合わせが、擬似例外の対象であるか調べ、その結果に応じて擬似例外の発生処理か元のアドレスへの復帰処理のいずれかを行う。その際、図３に示す判別手段と図４に示す擬似例外発生手段を用いる。
【００２７】
図５に示す管理テーブルは、各手段から共通に参照／更新される情報を格納する。
【００２８】
管理テーブルには複数のエントリが存在し、各エントリには擬似例外の発生プロセスと発生アドレスと例外情報とトラップ命令に書き換える前の発生アドレスの命令が格納される。
【００２９】
次に、第１の実施形態の動作について詳細に説明する。
【００３０】
説明のために想定する状況を、以下に述べる。
【００３１】
図６に示すようにプロセスＡとプロセスＢがあり、プロセスＡがアドレスＸを実行したときに例外情報Ｙの擬似例外を発生させたいとする。
【００３２】
プロセスＡはプログラムＡを実行するプロセスであり、処理中に例外が発生しなければプログラムＡは「通常処理Ａ１→ＯＳ処理Ａ→通常処理Ａ２」の順番で処理を行う。
【００３３】
ただし、ＯＳ処理Ａを処理中に例外情報Ｙの例外が発生したときは、例外処理ルーチンとして例外処理Ａが呼び出される。
【００３４】
プロセスＢはプログラムＢを実行するプロセスであり、処理中に例外が発生しなければプログラムＢは「通常処理Ｂ１→ＯＳ処理Ｂ→通常処理Ｂ２」の順番で処理を行う。
【００３５】
ＯＳ処理ＡとＯＳ処理Ｂは、各々の一部または全部で、同じアドレス上の命令コード列を実行する。アドレスＸは、この共通の命令コード列中のある命令Ｚを指している。
【００３６】
本実施形態の動作は以下の３つに分けられる。
【００３７】
第１の動作は、擬似例外の発生を設定する際の動作である。
【００３８】
第２の動作は、トラップ例外が発生し擬似例外を発生させる場合の動作である。
【００３９】
第３の動作は、トラップ例外が発生し擬似例外を発生させない場合の動作である。
【００４０】
ここで想定している状況にこの３つの動作に当てはめると、
第１の動作は、プロセスＡがアドレスＸを実行したとき発生する擬似例外の設定に、
第２の動作は、プロセスＡがアドレスＸを実行して例外処理Ａが呼び出される動作に、
第３の動作は、プロセスＢがアドレスＸを実行しても通常の処理が継続される動作に、
なる。
【００４１】
まず、第１の動作を説明する。
【００４２】
擬似例外の発生を設定するには、例外設定手段を呼び出す。
【００４３】
その際の入力パラメータに、
擬似例外の発生プロセスはプロセスＡを、
擬似例外の発生アドレスはアドレスＸを、
擬似例外の例外情報は例外情報Ｙを与える。
【００４４】
例外設定手段はステップＡ１で、情報保存手段を呼び出す。
【００４５】
情報保存手段は、管理テーブルにエントリを確保し（ステップＣ１）、図７に示すように例外設定手段の入力パラメータと擬似例外を発生させるアドレスの命令を該エントリに格納する（ステップＣ２〜Ｃ５）。
【００４６】
ステップＡ２で、擬似例外を発生させるアドレス（アドレスＸ）の命令（命令Ｚ）をトラップ命令に書き換えて、例外設定手段は終了する。
【００４７】
以上で、第１の動作を説明を終える。
【００４８】
次に、第２の動作を説明する。
【００４９】
擬似例外の発生を設定した後に、プロセスＡがプログラムＡを実行すると、まず、通常処理Ａ１を処理する。次に、ＯＳ処理Ａを処理しようとすると、アドレスＸでトラップ命令を実行して、トラップ例外が発生する。トラップ例外が発生すると、対応する例外処理ルーチンであるトラップ例外処理手段が呼び出される。
【００５０】
トラップ例外処理手段はステップＢ１で、判別手段を呼び出す。
【００５１】
判別手段は、トラップ例外が発生したのと同じアドレスを格納しているエントリを管理テーブルから検索し（ステップＤ１）、トラップ例外の発生プロセスの識別情報と該エントリのプロセス識別情報が一致するか調べる（ステップＤ２）。プロセス識別情報が一致するときは擬似例外を発生させる対象であると判断し（ステップＤ３）、一致しないときは対象ではないと判断する（ステップＤ４）。
【００５２】
プロセスＡがアドレスＸのトラップ命令を実行してトラップ例外が発生した場合は、該当するエントリは図７のエントリであり、プロセス識別情報が一致するので、擬似例外を発生させることになる（ステップＢ２）。
【００５３】
ステップＢ３で、例外エミュレーション手段を呼び出す。
【００５４】
例外エミュレーション手段は、管理テーブルの該エントリから元の命令（命令Ｚ）を読み出して（ステップＥ１）、トラップ例外の発生アドレス（アドレスＸ）の命令を元に戻し（ステップＥ２）、該エントリから擬似例外の例外情報（例外情報Ｙ）を読み出して（ステップＥ３）、トラップ例外の例外情報を擬似例外の例外情報（例外情報Ｙ）で置換し（ステップＥ４）、該エントリを解放する（ステップＥ５）。
【００５５】
ステップＢ４で、擬似例外の例外情報（例外情報Ｙ）と発生アドレスに対応する例外処理ルーチン（例外処理Ａ）を検索して制御を移し、ステップ例外処理手段は終了する。
【００５６】
一連の流れをプログラムＡの処理に焦点を当てて整理すると、図８に示すように「通常処理Ａ１→ＯＳ処理Ａの一部（アドレスＸの手前まで）→例外処理Ａ」の順番で処理を行っており、アドレスＸで例外情報Ｙの例外が発生したときと同じ処理になる。
【００５７】
以上で、第２の動作を説明を終える。
【００５８】
次に、第３の動作を説明する。
【００５９】
擬似例外の発生を設定した後に、プロセスＡで擬似例外を発生させるよりも先に、プロセスＢがプログラムＢを実行すると、まず、通常処理Ｂ１を処理する。次に、ＯＳ処理Ｂを処理しようとすると、アドレスＸでトラップ命令を実行して、トラップ例外が発生する。トラップ例外が発生すると、対応する例外処理ルーチンであるトラップ例外処理手段が呼び出される。
【００６０】
（ここまでは、第２の動作の説明のプロセスＡの場合と同様）
プロセスＢの場合は、判別手段のステップＤ２でプロセス識別情報が一致しないため、擬似例外を発生させる対象ではないと判断し、トラップ例外処理手段はステップＢ５に進む。
【００６１】
ステップＢ５で、管理テーブルの該エントリから元の命令（命令Ｚ）を読み出して代理で実行する。
【００６２】
ステップＢ６で、トラップ例外の発生したアドレス（アドレスＸ）の次の命令に制御を返し、ステップ例外処理手段は終了する。
【００６３】
一連の流れをプログラムＢの処理に焦点を当てて整理すると、図９に示すように「通常処理Ｂ２→ＯＳ処理Ｂ→例外処理Ｂ２」の順番で処理を行っており、アドレスＸで例外が発生しないときと同じ処理になる。
【００６４】
以上で、第３の動作を説明を終える。
【００６５】
第１の実施形態では、簡単のために、トラップ命令（及び、トラップ例外）の用途を擬似例外の発生のためだけに限定した。
【００６６】
第２の実施形態は、トラップ例外を利用する既存機能があるときの本発明の適用例である。判別手段を第１の実施形態から図１０のように変更して、ステップＤ１’とステップＤ５を追加する。この実施形態では、トラップ例外の発生アドレスと一致するエントリが管理テーブルに存在しない場合は、擬似例外の処理を中断して既存のトラップ例外の処理に制御を移す。
【００６７】
上述したデバッグ方法は、ハードウェアによって実現することも可能であるが、コンピュータにこのようなデバッグ方法を行わせるためのプログラムをコンピュータが記録媒体から読み出して実行することによっても実現することができる。
【産業上の利用可能性】
【００６８】
プログラムの例外処理の評価。特に、ＯＳの例外処理の評価に有用である。
【図面の簡単な説明】
【００６９】
【図１】本発明の実施形態による例外設定手段及びトラップ例外処理手段の動作を示すフローチャートである。
【図２】本発明の実施形態による情報保存手段の動作を示すフローチャートである。
【図３】本発明の実施形態による判別手段の動作を示すフローチャートである。
【図４】本発明の実施形態による擬似例外発生手段の動作を示すフローチャートである。
【図５】本発明の実施形態による管理テーブルの構成を示す図である。
【図６】本発明の実施形態によるプロセスＡ及びプロセスＢからＯＳ処理が呼び出され、アドレスＸを通る様子を示す図である。擬似例外発生の一例を示す図である。
【図７】本発明の実施形態による管理テーブルのデータの一例を示す図である。
【図８】本発明の実施形態によるプロセスＡからＯＳ処理が呼び出されアドレスＸから例外処理Ａに移る様子を示す図である。
【図９】本発明の実施形態によるプロセスＢからＯＳ処理が呼び出されアドレスＸを通過してＯＳ処理が継続される様子を示す図である。
【図１０】本発明の実施形態による判別手段の動作を示すフローチャートである。
【図１】
2006268298.tif 000003
【図２】
2006268298.tif 000004
【図３】
2006268298.tif 000005
【図４】
2006268298.tif 000006
【図５】
2006268298.tif 000007
【図６】
2006268298.tif 000008
【図７】
2006268298.tif 000009
【図８】
2006268298.tif 000010
【図９】
2006268298.tif 000011
【図１０】
2006268298.tif 000012