(57)【要約】【課題】  コンピュータ上で複数のプロセスが実行されるプログラムのデバッグ作業を効率的に行うことができるプログラムを提供すること。【解決手段】  コンピュータ上で複数のプロセスを実行するプログラムに対してデバッグ処理を行うためのプログラムによって、コンピュータを、複数のプロセスの一部又は全部の親子関係を示す親子関係テーブルを記憶する親子関係テーブル記憶部４２、デバッグ処理の対象となるプロセスを識別するプロセス識別情報を取得するとともに、親子関係テーブルに基づいて、取得されるプロセス識別情報により識別されるプロセスの関連プロセスを選出する命令対象プロセス選択部４６、選出される関連プロセスに対してデバッグ処理を行うための命令部４８として機能させる。【選択図】        図３
2006185360.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ上で複数のプロセスを実行するプログラムに対してデバッグ処理を行うためのプログラムデバッグ装置であって、
前記複数のプロセスの一部又は全部の親子関係を示す親子関係テーブルを記憶する親子関係テーブル記憶手段と、
前記デバッグ処理の対象となるプロセスを識別するプロセス識別情報を取得するプロセス識別情報取得手段と、
前記親子関係テーブルに基づいて、前記プロセス識別情報取得手段により取得されるプロセス識別情報により識別されるプロセスの関連プロセスを選出する関連プロセス選出手段と、
前記関連プロセス選出手段により選出される関連プロセスに対して、前記デバッグ処理を行うデバッグ処理手段と、
を含むことを特徴とするプログラムデバッグ装置。
【請求項２】
請求項１に記載のプログラムデバッグ装置において、
前記デバッグ処理は、前記関連プロセス選出手段により選出される関連プロセスの実行停止又は実行再開のための処理である、
ことを特徴とするプログラムデバッグ装置。
【請求項３】
請求項１又は２に記載のプログラムデバッグ装置において、
前記複数のプロセスのうち前記コンピュータ上で実行中のプロセスの親子関係を示す親子関係データを取得するとともに、該親子関係データに基づいて前記親子関係テーブル記憶手段に記憶される前記親子関係テーブルを更新する親子関係更新手段をさらに含む、
ことを特徴とするプログラムデバッグ装置。
【請求項４】
請求項３に記載のプログラムデバッグ装置において、
前記親子関係更新手段は、前記コンピュータ上で新規にプロセスが生成される場合に、該プロセスの親子関係を示す親子関係データを取得するとともに、該親子関係データに基づいて前記親子関係テーブル記憶手段に記憶される前記親子関係テーブルを更新する、
ことを特徴とするプログラムデバッグ装置。
【請求項５】
請求項３又は４に記載のプログラムデバッグ装置において、
前記親子関係更新手段は、前記コンピュータ上で既に実行されているプロセスが消滅する場合に、該プロセスに関するデータを前記親子関係テーブル記憶手段に記憶される前記親子関係テーブルから削除する、
ことを特徴とするプログラムデバッグ装置。
【請求項６】
請求項１乃至５のいずれかに記載のプログラムデバッグ装置において、
前記プロセス識別情報取得手段は、ユーザにより入力される前記デバッグ処理に関する命令に含まれるプロセス識別情報を取得する、
ことを特徴とするプログラムデバッグ装置。
【請求項７】
請求項１乃至５のいずれかに記載のプログラムデバッグ装置において、
前記プロセス識別情報取得手段は、前記コンピュータ上で発生する特定種類のイベントに関連するプロセスを識別するプロセス識別情報を取得する、
ことを特徴とするプログラムデバッグ装置。
【請求項８】
請求項１乃至７のいずれかに記載のプログラムデバッグ装置において、
前記関連プロセス選出手段は、前記親子関係テーブルに基づいて、前記プロセス識別情報取得手段により取得されるプロセス識別情報により識別されるプロセス、及び該プロセスの直接並びに間接の子プロセスを前記関連プロセスとして選出する、
ことを特徴とするプログラムデバッグ装置。
【請求項９】
コンピュータ上で複数のプロセスを実行するプログラムに対してデバッグ処理を行うためのプログラムデバッグ方法であって、
前記複数のプロセスの一部又は全部の親子関係を示す親子関係テーブルを記憶手段に記憶する親子関係テーブルステップと、
前記デバッグ処理の対象となるプロセスを識別するプロセス識別情報を取得するプロセス識別情報取得ステップと、
前記親子関係テーブルに基づいて、前記プロセス識別情報取得ステップで取得されるプロセス識別情報により識別されるプロセスの関連プロセスを選出する関連プロセス選出ステップと、
前記関連プロセス選出ステップで選出される関連プロセスに対して、前記デバッグ処理を行うデバッグ処理ステップと、
を含むことを特徴とするプログラムデバッグ方法。
【請求項１０】
複数のプロセスを実行するプログラムに対してデバッグ処理を行うためのプログラムであって、
前記複数のプロセスの一部又は全部の親子関係を示す親子関係テーブルを記憶する親子関係テーブル記憶手段、
前記デバッグ処理の対象となるプロセスを識別するプロセス識別情報を取得するプロセス識別情報取得手段、
前記親子関係テーブルに基づいて、前記プロセス識別情報取得手段により取得されるプロセス識別情報により識別されるプロセスの関連プロセスを選出する関連プロセス選出手段、及び
前記関連プロセス選出手段により選出される関連プロセスに対して、前記デバッグ処理を行うデバッグ処理手段
としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラムデバッグ装置、プログラムデバッグ方法及びプログラムに関し、特にマルチプロセスデバッガに関する。
【背景技術】
【０００２】
デバッガは、コンピュータプログラムの不具合（バグ）の発見を支援するためのコンピュータプログラムである。デバッガ（シンボリックデバッガ）を用いることにより、ユーザが任意にソースプログラム中にブレークポイントを設定して、該ブレークポイントに対応する命令箇所でプログラムの実行を中断させることができる（ブレークポイント機能）。さらに、決まった処理量（例えば１命令）ずつプログラムを実行させたり（ステップ実行機能）、或いはプログラム実行中にレジスタやメモリの内容を確認したりすることもできるようになる（ウォッチ機能（又はトレース機能））。
【０００３】
特に、下記非特許文献１に開示されたＧＤＢ（The GNU Source-Level Debugger）では、コンピュータで実行される複数のプロセスうち一部又は全部を任意に指定して、それら指定されたプロセスの実行を中断させたり、それらの実行を再開させたりすることができる。
【非特許文献１】リチャード  ストールマン，ポーランド  ペッシュ，スタン  シェブス他、”Debugging with GDB”、[online]、平成１２年３月、[平成１２年１２月２１日検索]、インターネット<URL:http://www.asahi-net.or.jp/~wg5k-ickw/html/online/gdb-5.0/gdb-ja_toc.html>
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、コンピュータ上で複数のプロセスが実行されるプログラムのデバッグ作業を従来のデバッガを用いて行うと、次のような問題がある。すなわち、あるプロセスにブレークポイントを設定すると、そのブレークポイントに対応する命令箇所で同プロセスの実行が中断されるに過ぎなかったり、或いは実行中の全プロセスの実行が中断されてしまったりする。このため、ブレークポイントを設定したプロセスの子プロセスに不具合がある場合には、いずれにしても、その不具合を発見することが困難であった。
【０００５】
本発明は上記課題に鑑みてなされたものであって、その目的は、コンピュータ上で複数のプロセスが実行されるプログラムのデバッグ作業を効率的に行うことができるプログラムデバッグ装置、プログラムデバッグ方法及びプログラムを提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明に係るプログラムデバッグ装置は、コンピュータ上で複数のプロセスを実行するプログラムに対してデバッグ処理を行うためのプログラムデバッグ装置であって、前記複数のプロセスの一部又は全部の親子関係を示す親子関係テーブルを記憶する親子関係テーブル記憶手段と、前記デバッグ処理の対象となるプロセスを識別するプロセス識別情報を取得するプロセス識別情報取得手段と、前記親子関係テーブルに基づいて、前記プロセス識別情報取得手段により取得されるプロセス識別情報により識別されるプロセスの関連プロセスを選出する関連プロセス選出手段と、前記関連プロセス選出手段により選出される関連プロセスに対して、前記デバッグ処理を行うデバッグ処理手段と、を含むことを特徴とする。
【０００７】
また、本発明に係るプログラムデバッグ方法は、コンピュータ上で複数のプロセスを実行するプログラムに対してデバッグ処理を行うためのプログラムデバッグ方法であって、前記複数のプロセスの一部又は全部の親子関係を示す親子関係テーブルを記憶手段に記憶する親子関係テーブルステップと、前記デバッグ処理の対象となるプロセスを識別するプロセス識別情報を取得するプロセス識別情報取得ステップと、前記親子関係テーブルに基づいて、前記プロセス識別情報取得ステップで取得されるプロセス識別情報により識別されるプロセスの関連プロセスを選出する関連プロセス選出ステップと、前記関連プロセス選出ステップで選出される関連プロセスに対して、前記デバッグ処理を行うデバッグ処理ステップと、を含むことを特徴とする。
【０００８】
さらに、本発明に係るプログラムは、複数のプロセスを実行するプログラムに対してデバッグ処理を行うためのプログラムであって、前記複数のプロセスの一部又は全部の親子関係を示す親子関係テーブルを記憶する親子関係テーブル記憶手段、前記デバッグ処理の対象となるプロセスを識別するプロセス識別情報を取得するプロセス識別情報取得手段、前記親子関係テーブルに基づいて、前記プロセス識別情報取得手段により取得されるプロセス識別情報により識別されるプロセスの関連プロセスを選出する関連プロセス選出手段、及び前記関連プロセス選出手段により選出される関連プロセスに対して、前記デバッグ処理を行うデバッグ処理手段としてコンピュータを機能させるためのプログラムである。
【０００９】
本発明によれば、デバッグ対象であるプログラムにより実行される複数のプロセスのうち一部又は全部の親子関係を示す親子関係テーブルが記憶される。そして、デバッグ処理の対象となるプロセスを識別するプロセス識別情報が取得され、このプロセス識別情報により識別されるプロセスの関連プロセスが、親子関係テーブルに基づいて選出される。このとき、親子関係テーブルに基づいて、プロセス識別情報取得手段により取得されるプロセス識別情報により識別されるプロセス、及び該プロセスの直接並びに間接の子プロセスを関連プロセスとして選出するようにしてもよい。そして、選出される関連プロセスに対してデバッグ処理が行われる。こうすれば、プロセス識別情報により識別されるプロセスのみならず、親子関係テーブルに基づいて選出される関連プロセスに対してまで、デバッグ処理を行うことができ、デバッグ作業を効率化することができる。
【００１０】
本発明の一態様では、前記デバッグ処理は、前記関連プロセス選出手段により選出される関連プロセスの実行停止又は実行再開のための処理である。こうすれば、関連プロセスの実行を一括して停止又は再開させることができる。
【００１１】
また、本発明の一態様では、前記複数のプロセスのうち前記コンピュータ上で実行中のプロセスの親子関係を示す親子関係データを取得するとともに、該親子関係データに基づいて前記親子関係テーブル記憶手段に記憶される前記親子関係テーブルを更新する親子関係更新手段をさらに含む。こうすれば、現にコンピュータで実行中のプロセスの親子関係に基づき、親子関係テーブルを更新できるようになる。
【００１２】
この態様では、前記親子関係更新手段は、前記コンピュータ上で新規にプロセスが生成される場合に、該プロセスの親子関係を示す親子関係データを取得するとともに、該親子関係データに基づいて前記親子関係テーブル記憶手段に記憶される前記親子関係テーブルを更新するようにしてもよい。こうすれば、新規にプロセスが生成される場合に、速やかに親子関係テーブルを更新することができる。
【００１３】
また、本発明の一態様では、前記親子関係更新手段は、前記コンピュータ上で既に実行されているプロセスが消滅する場合に、該プロセスに関するデータを前記親子関係テーブル記憶手段に記憶される前記親子関係テーブルから削除する。こうすれば、プロセスが消滅する場合に、速やかに親子関係テーブルを更新することができる。
【００１４】
また、本発明の一態様では、前記プロセス識別情報取得手段は、ユーザにより入力される前記デバッグ処理に関する命令に含まれるプロセス識別情報を取得する。こうすれば、ユーザによる命令の入力に応じて、該命令に含まれるプロセス識別情報によって識別されるプロセスの関連プロセスに対してデバッグ処理を行うことができる。
【００１５】
また、本発明の一態様では、前記プロセス識別情報取得手段は、前記コンピュータ上で発生する特定種類のイベントに関連するプロセスを識別するプロセス識別情報を取得する。こうすれば、特定種類のイベントの発生に応じて、該イベントに関連するプロセスの関連プロセスに対してデバッグ処理を行うことができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の一実施形態について図面に基づき詳細に説明する。
【００１７】
図１は、本発明の一実施形態に係るプログラム開発環境の一例を示す図である。このプログラム開発環境１０は、本発明の一実施形態に係るプログラムデバッグ方法を適用したものであり、図示しないデータ通信ネットワークによって通信接続されたターゲットコンピュータ１２及びホストコンピュータ１４を含んで構成されている。ターゲットコンピュータ１２は、本発明の一実施形態に係るプログラムデバッグ装置として機能するコンピュータであり、ホストコンピュータ１４はターゲットコンピュータ１２上で実行されるプログラムのデバッグを行うためのコンピュータである。これらのコンピュータとしては、例えば公知のパーソナルコンピュータシステム、或いはワークステーション等を用いて構成することができる。
【００１８】
ターゲットコンピュータ１２では、ＯＳ（オペレーティングシステム）２０が動作しており、ユーザアプリケーションプログラム１６とデバッグエージェントプログラム１８がインストールされている。そして、ＯＳ２０上で、ユーザアプリケーションプログラム１６とデバッグエージェントプログラム１８が実行される。ユーザアプリケーションプログラム１６は、複数のプロセスを実行するプログラムであり、ユーザのデバッグ作業の対象である。デバッグエージェントプログラム１８は、ＯＳ２０上で動作する一種のアプリケーションプログラムであって、ホストコンピュータ１４からの制御に従って動作し、またＯＳ２０から取得したデバッグ用の各種データをホストコンピュータ１４に送信するようになっている。ＯＳ２０は、各種デバッグ用のプログラムを含んでおり、デバッグエージェントプログラム１８ではこれらのプログラムを利用してユーザアプリケーションプログラム１６のデバッグ（各プロセスの実行中断、実行再開、メモリやレジスタの内容確認等）を行うことができるようになっている。
【００１９】
ホストコンピュータ１４では、ＯＳ２２が動作しており、該ＯＳ２２上でデバッグ通信プログラム２４及びホストデバッガプログラム２６が実行される。ホストデバッガプログラム２６は、ユーザアプリケーションプログラム１６のデバッグ作業を行うための一種のアプリケーションプログラムであり、ユーザアプリケーションプログラム１６により起動されるプロセスのうち一部又は全部を指定して、その実行中断や実行再開を指示することができる。また、ユーザアプリケーションプログラム１６の任意の命令箇所にブレークポイントを設定したり、ターゲットコンピュータ１２のメモリやレジスタにデータを書き込み、又そこからデータを読み出したり、プロセスリストの取得やプロセスの状態情報の取得を行ったりすることができる。さらに、デバッグエージェントプログラム１８では、ユーザアプリケーションプログラム１６に設定されたブレークポイントの到来（ヒットイベント）、プログラム例外の発生、ステップ実行の終了を監視するようになっている。そして、これらの事象が生じた場合には、それを示すデータをホストデバッガプログラム２６に通知する。ホストデバッガプログラム２６では、こうして通知される各種のデータをディスプレイ等に表示する。
【００２０】
デバッグ通信プログラム２４は、ホストデバッガプログラム２６とデバッグエージェントプログラム１８とのデータ通信を中継するものであり、ホストデバッガプログラム２６のデータをデバッグエージェントプログラム１８で処理可能なデータに変換し、或いは逆に、デバッグエージェントプログラム１８のデータをホストデバッガプログラム２６で処理可能なデータに変換している。
【００２１】
ここで、デバッグエージェントプログラム１８の機能構成について説明する。図２は、ターゲットコンピュータ１２上でデバッグエージェントプログラム１８によって実現される機能を示す機能ブロック図である。デバッグエージェントプログラム１８は、ターゲットコンピュータ１２によって実行されることで、デバッグプロトコル送受信ブロック２８、プロセス制御ブロック３０、デバッグ処理ブロック３２及びイベント処理ブロック３４の機能を実現するものである。デバッグプロトコル送受信ブロック２８は、送信部２８ａ、プロトコルエンコード部２８ｂ、受信部２８ｃ及びプロトコルデコード部２８ｄを含んで構成されている。プロセス制御ブロック３０は、コマンド解析部３０ａ及びデバッグプロセス管理部３０ｂを含んで構成されている。デバッグ処理ブロック３２は、静的情報処理部３２ａ及び実行制御部３２ｂを含んで構成されている。
【００２２】
まず、デバッグプロトコル送受信ブロック２８は、データ通信ネットワークを介してホストコンピュータ１４上で実行されているデバッグ通信プログラム２４と通信を行う。具体的には、プロトコルエンコード部２８ｂは、デバッグ処理ブロック３２から渡される処理結果をデバッグ通信プログラム２４で解釈可能なデータに変換する。送信部２８ａは、プロトコルエンコード部２８ｂによりエンコードされたデバッグ処理ブロック３２の処理結果をデバッグ通信プログラム２４に送信する。ホストデバッガプログラム２６では、こうしてデバッグ通信プログラム２４に送信される処理結果を表示等する。受信部２８ｃは、デバッグ通信プログラム２４から送信されるデータを受信する。このデータは、ホストデバッガプログラム２６から入力されるものであり、実行中断命令、実行再開命令、メモリ読み出し命令、レジスタ読み出し命令等を示す。実行中断命令や実行再開命令は、実行中断又は実行再開すべきプロセスを識別するプロセスＩＤ（識別情報）を含む。プロトコルデコード部２８ｄは、受信部２８ｃにより受信されるデータをプロセス制御ブロック３０で解釈可能なデータに変換する。こうして変換されたデータはプロセス制御ブロック３０に渡される。
【００２３】
プロセス制御ブロック３０は、デバッグプロトコル送受信ブロック２８から渡されるデータを解析し、該データが示す命令に応じたデバッグ命令をデバッグ処理ブロック３２に発行する。具体的には、コマンド解析部３０ａはプロトコルデコード部２８ｄから渡されるデータを解析し、該データが示す命令が実行中断命令、実行再開命令、メモリ読み出し命令、レジスタ読み出し命令等のいずれであるかを判断する。メモリ読み出し命令やレジスタ読み出し命令であれば、そのままデバッグ処理ブロック３２に対してそれらの命令に応じたデバッグ命令を発行する。一方、実行中断命令や実行再開命令であれば、それらの命令の内容をデバッグプロセス管理部３０ｂに渡す。
【００２４】
デバッグプロセス管理部３０ｂは、実行中断命令や実行再開命令に含まれるプロセスＩＤを後述する親子関係テーブルに照査し、該プロセスＩＤにより識別されるプロセスの関連プロセスを選出する。この関連プロセスは、具体的には直接又は間接の子プロセスの全てである。デバッグプロセス管理部３０ｂは、こうして選出する関連プロセス（実行中断命令や実行再開命令に含まれるプロセスＩＤによって識別されるプロセスを含む。）の実行中断や実行再開のためのデバッグ命令をデバッグ処理ブロック３２に対して発行する。
【００２５】
デバッグ処理ブロック３２は、コマンド解析部３０ａ又はデバッグ処理ブロック３２により発行されるデバッグ命令に従い、デバッグ処理を実行する。すなわち、静的情報処理部３２ａは、コマンド解析部３０ａにより発行されるデバッグ命令に応じてメモリやレジスタの読み出しを行い、その内容をデバッグプロトコル送受信ブロック２８のプロトコルエンコード部２８ｂに渡す。実行制御部３２ｂは、デバッグ処理ブロック３２により発行されるデバッグ命令に応じて複数プロセスの実行中断や実行再開を行う。
【００２６】
イベント処理ブロック３４は、ＯＳ２０での特定イベントの発生を検知する。特定イベントは、ここではスレッドの生成イベント、スレッドの消滅イベント、プロセスの生成イベント、プロセスの消滅イベント、予めユーザアプリケーションプログラム１６に設定したブレークポイントに対応する命令箇所の到来（ブレークのヒットイベント）、プログラム例外、ステップ実行の終了イベントである。スレッドの生成イベントやスレッドの消滅イベントの発生を検知すると、その旨をデバッグプロトコル送受信ブロック２８に渡す。これによりこれらイベントの発生がホストコンピュータ１４（さらに特定的にはホストデバッガプログラム２６）に通知される。一方、プロセスの生成イベントの発生を検知すると、その旨をプロセス制御ブロック３０のデバッグプロセス管理部３０ｂに渡す。これにより、新たに発生したプロセスの親子関係の管理がデバッグプロセス管理部３０ｂにて開始される。プロセスの消滅イベントの発生を検知した場合も、その旨をデバッグプロセス管理部３０ｂに渡す。これにより、消滅したプロセスの親子関係の管理がデバッグプロセス管理部３０ｂにて終了される。ブレークのヒットイベントの発生を検知すると、該ヒットイベントに係るブレークポイントが設定されたプロセスのＰＩＤ（プロセスＩＤ）を含むプロセス実行中断命令をデバッグプロセス管理部３０ｂに渡す。デバッグプロセス管理部３０ｂでは、親子関係テーブルに基づき、どのプロセスに対して実行中断処理を行うべきかを判断し、それらのプロセスの実行を中断させるためのデバッグ命令をデバッグ処理ブロック３２に発行する。プログラム例外を検知すると、ＯＳ２０に含まれる例外ハンドラを実行する。また、ステップ実行の終了イベントを検知すると、該ステップ実行の終了イベントに係るプロセスのＰＩＤを含むプロセス実行中断命令をデバッグプロセス管理部３０ｂに渡す。デバッグプロセス管理部３０ｂでは、親子関係テーブルに基づき、どのプロセスに対して中断処理を行うべきかを判断し、それらのプロセスの実行を中断させるためのデバッグ命令をデバッグ処理ブロック３２に発行する。
【００２７】
ここで、図３を参照しながらデバッグプロセス管理部３０ｂについてさらに説明する。同図に示すように、デバッグプロセス管理部３０ｂは、親子関係テーブル更新部４０、親子関係テーブル記憶部４２、命令発行プロセスリスト記憶部４４、命令対象プロセス選択部４６及び命令部４８を含んで構成されている。親子関係テーブル記憶部４２は、ターゲットコンピュータ１４のメモリを含んで構成されるものであり、デバッグ対象となるプロセスの親子関係を示す親子関係テーブルを記憶する。図４は、ターゲットコンピュータ１２で実行中の複数のプロセスの親子関係の一例を示す図であり、図５は、親子関係を示す親子関係テーブルを示す図である。図５に示すように、親子関係テーブルは、管理対象ＰＩＤと親プロセスＰＩＤと子プロセスＰＩＤとを対応づけて記憶している。管理対象ＰＩＤは、親子関係の管理を行うプロセス、すなわちデバッグ対象である実行中のプロセスを識別する識別情報（ＰＩＤ）である。親プロセスＰＩＤは、対応する管理対象ＰＩＤにより識別されるプロセスの親プロセスを識別する識別情報（ＰＩＤ）である。親プロセスが存在しない場合、或いは判明しない場合にはヌル値（図中横線で示される。）が格納される。子プロセスＰＩＤは、対応する管理対象ＰＩＤにより識別されるプロセスの子プロセスを識別する識別情報（ＰＩＤ）である。子プロセスが存在しない場合、或いは判明しない場合にはヌル値（図中横線で示される。）が格納される。
【００２８】
親子関係テーブル更新部４０は、イベント処理ブロック３４からプロセスの生成イベントの発生が通知される場合に、その生成されたプロセスのＰＩＤを管理対象ＰＩＤとするレコードを親子関係テーブルに追加し、その生成されたプロセスの親プロセスのＰＩＤを親子関係テーブルの当該レコードの親プロセスＰＩＤ欄に格納する。また、同レコードの子プロセスＰＩＤ欄にヌル値を格納する。さらに、生成されたプロセスの親プロセスのＰＩＤを管理対象ＰＩＤとする、登録済みのレコードを参照し、その子プロセスＰＩＤ欄に生成されたプロセスのＰＩＤを格納する。以上の処理は、親子関係登録処理として後に詳述する。親子関係テーブル更新部４０では、イベント処理ブロック３４からプロセスの消滅イベントの発生が通知される場合に、その消滅したプロセスのＰＩＤを管理対象ＰＩＤとするレコードを親子関係テーブルから削除する。さらに、その消滅したプロセスのＰＩＤをその他のレコードの親プロセスＰＩＤ欄や子プロセスＰＩＤ欄から削除する。
【００２９】
命令対象プロセス選択部４６は、イベント処理ブロック３４やコマンド解析部３０ａからプロセス実行中断命令又はプロセス実行再開命令を渡される場合に、それら命令に含まれるＰＩＤにより識別されるプロセスの直接の子プロセスのＰＩＤを親子関係テーブルから読み出す。さらに、その読み出したＰＩＤにより識別されるプロセスの直接の子プロセス（元のＰＩＤにより識別されるプロセスから見て間接の子プロセス）のＰＩＤを親子関係テーブルから読み出す。この処理を繰り返すことにより、直接又は間接の子プロセスの全てについてＰＩＤを取得することができる。これらのＰＩＤは、ターゲットコンピュータ１２のメモリを含んで構成された命令発行プロセスリスト記憶部４４に順次記憶される。命令部４８は、命令発行プロセスリスト記憶部４４に記憶されたＰＩＤを読み出し、それらＰＩＤにより識別されるプロセスに対して、イベント処理ブロック３４やコマンド解析部３０ａから渡されるプロセス実行中断命令又はプロセス実行再開命令を実行するよう、デバッグ命令をデバッグ処理ブロック３２に発行する。こうして、イベント処理ブロック３４やコマンド解析部３０ａからプロセス実行中断命令が渡される場合に、それら命令に含まれるＰＩＤによって識別されるプロセスの直接又は間接の子プロセスの全ての実行を中断させることができる。また、コマンド解析部３０ａからプロセス実行再開命令が渡される場合に、それら命令に含まれるＰＩＤによって識別されるプロセスの直接又は間接の子プロセスの全ての実行を再開させることができる。
【００３０】
ここで、デバッグエージェントプログラム１８の主要な処理をフロー図に基づいて説明する。図６は、デバッグエージェントプログラム１８による親子関係登録処理を示すフロー図である。同図に示す親子関係登録処理は、イベント処理ブロック３４からプロセスの生成イベントの発生が検知されたことが通知されると、デバッグプロセス管理部３０ｂに含まれる親子関係テーブル更新部４０により実行されるものである。この処理では、まずプロセスの生成イベントのイベント情報を取得する（Ｓ１０１）。イベント情報は、生成されたプロセスのＰＩＤを含んでおり、このＰＩＤが親子関係テーブルのいずれかのレコードの管理対象ＰＩＤ欄に既に記憶されているか否かを調べる（Ｓ１０２）。そして、記憶されていれば親子関係登録処理を終了する。一方、記憶されていなければ、Ｓ１０１において取得したイベント情報に含まれるＰＩＤの親子関係データをＯＳ２０に問い合わせ、取得する（Ｓ１０３）。親子関係データは、Ｓ１０１において取得したイベント情報に含まれるＰＩＤによって識別されるプロセスの親プロセス及び子プロセスのＰＩＤを含んでいる。そして、親子関係データに含まれる親プロセスのＰＩＤが、親子関係テーブルのいずれかのレコードの管理対象ＰＩＤ欄に既に記憶されているか否かを調べる（Ｓ１０４）。そして、記憶されていれば、そのレコードの子プロセスＰＩＤ欄に、Ｓ１０１で取得したイベント情報に含まれるＰＩＤを格納する（Ｓ１０５）。記憶されていなければ、このＳ１０５の処理をスキップする。最後に、親子関係テーブルに新規レコードを追加し、その管理対象ＰＩＤ欄にＳ１０１で取得したイベント情報に含まれるＰＩＤを格納する。このとき、親プロセス欄及び子プロセス欄にはヌル値を格納する。
【００３１】
以上のようにして、新たにプロセスが生成された場合に該プロセスに関する親子関係を親子関係テーブルに記憶させることができる。
【００３２】
次に、図７は、デバッグエージェントプログラム１８によるデバッグ処理を示すフロー図である。この処理は、ホストデバッガプログラム２６からデバッグ命令が入力され、該デバッグ命令がデバッグ通信プログラム２４によってデバッグエージェントプログラム１８に送信される場合に実行されるものである。同図に示すように、この処理では、まず受信部２８ｃがデバッグ命令を受信し（Ｓ２０１）、このデバッグ命令をプロトコルデコード部２８ｄがデコードする（Ｓ２０２）。次に、コマンド解析部３０ａは、デコードされたデバッグ命令を解析し、その命令の種類を取得する（Ｓ２０３）。このとき、命令の種類が特定のもの、すなわちプロセスの実行中断命令又は実行再開命令であれば（Ｓ２０４）、複数プロセス命令処理を実行する（Ｓ２０５）。この処理により、実行中断命令や実行再開命令に含まれるＰＩＤによって識別されるプロセスの直接又は間接の子プロセスの全てに対して、実行中断処理又は実行再開処理を実行するよう、デバッグ命令がデバッグ処理ブロック３２に発行される。一方、命令の種類が特定のものでなければ、ホストデバッガプログラム２６から入力された命令内容を変えず、デバッグ命令をデバッグ処理ブロック３２に発行する（Ｓ２０６）。その後、プロトコルエンコード部２８ｂは、デバッグ命令の処理結果をデコードし（Ｓ２０７）、それを送信部２８ａがホストコンピュータ１４に送信する。
【００３３】
以上の処理によれば、特にプロセスの実行中断命令又は実行再開命令がホストデバッガプログラム２６に入力される場合に、それらの命令に含まれるＰＩＤによって識別されるプロセスのみならず、その直接又は間接の子プロセスの全てについて実行中断処理又は実行再開処理が実行されるようになる。
【００３４】
図８は、デバッグエージェントプログラム１８による複数プロセス命令処理を示すフロー図である。同図に示す処理は、図７のＳ２０５や図９のＳ４０３で実行されるものである。図８に示すように、この処理では、まず直接の命令対象となるプロセスのＰＩＤを取得する（Ｓ３０１）。そして、このＰＩＤが管理対象ＰＩＤ欄に格納されたレコードを親子関係テーブルから読み出し、その子プロセスＰＩＤ欄からＰＩＤをよみだす（Ｓ３０２）。そして、それらのＰＩＤを命令発行プロセスリスト記憶部４４に格納する（Ｓ３０３）。さらに、命令発行プロセスリスト記憶部４４に格納されたＰＩＤが親プロセスＰＩＤ欄に格納されたレコードが親子関係テーブルに存在するか否かを調べる（Ｓ３０４）。そして、このようなレコードがあれば、そのレコードの子プロセスＰＩＤ欄からＰＩＤを取得して命令発行プロセスリスト記憶部４４に追加記憶する（Ｓ３０５）。この場合、Ｓ３０４の処理を再び実行する。Ｓ３０４においてレコードが存在しないと判断すると、命令部４８は命令発行プロセスリスト４４に記憶されたＰＩＤについて、プロセス実行中断命令やプロセス実行再開命令を発行する（Ｓ３０６）。
【００３５】
以上の処理によれば、あるＰＩＤが取得される場合にそのＰＩＤにより識別されるプロセスの直接又は間接の子プロセスの全てについて、それらのＰＩＤを確実に取得することができる。
【００３６】
最後に、図９は、デバッグエージェントプログラム１８によるイベント処理を示すフロー図である。同図に示す処理は、イベント処理ブロック３４を中心に実行されるものであり、イベント発生を検出すると（Ｓ４０１）、それが特定イベントであるか否かを判断する（Ｓ４０２）。そして、特定イベント、すなわちブレークのヒットイベント又はステップ実行の終了イベントであれば、デバッグプロセス管理部３０ｂに対して、図８に示す複数プロセス命令処理を実行させる（Ｓ４０３）。その後、デバッグ処理ブロック３２が命令の結果を取得し、それをプロトコルエンコード部２８ｂがエンコードする（Ｓ４０４）。そして、エンコードされた命令結果をホストコンピュータ１４に送信する（Ｓ４０５）。一方、Ｓ４０２において、イベントが特定イベントでないと判断されると、イベント処理ブロック３４はプロトコルエンコード部２８ｂにイベント発生を通知する。これにより、プロトコルエンコード部２８ｂがイベント発生を示すデータをエンコードし、それを送信部２８ａがホストコンピュータ１４に送信する（Ｓ４０６）。
【００３７】
以上の処理によれば、ＯＳ２０においてブレークのヒットイベントやステップ実行の終了イベントが発生すれば、それらのイベントに関連するプロセスの直接又は間接の子プロセスの全てに対して、それらの実行を中断させることができる。
【００３８】
以上説明した実施形態では、デバッグ対象であるプログラムにより実行される複数のプロセスのうち一部又は全部の親子関係を示す親子関係テーブルが親子関係テーブル記憶部４２に記憶される。そして、デバッグ処理の対象となるプロセスを識別するＰＩＤが取得され、このＰＩＤにより識別されるプロセスの直接又は間接の子プロセスの全てが、親子関係テーブルに基づいて選出される。そして、それら選出されるプロセスに対してデバッグ処理が行われる。こうして、本実施形態によれば、取得されたＰＩＤにより識別されるプロセスのみならず、親子関係テーブルに基づいて選出される直接又は間接の子プロセスの全てに対してまで、デバッグ処理を行うことができ、デバッグ作業を効率化することができる。
【００３９】
なお、本発明は上記実施形態に限定されるものではなく、種々の変形実施が可能である。例えば、以上の説明ではターゲットコンピュータ１２とは異なるホストコンピュータ１４においてホストデバッガプログラム２６を実行するようにしたが、ターゲットコンピュータ１２においてホストデバッガプログラム２６又はそれと同等のプログラムを実行させるようにしてもよい。こうすれば、１つのコンピュータでプログラムのデバッグ作業を行うことができる。
【図面の簡単な説明】
【００４０】
【図１】本発明の実施形態に係るプログラム開発環境を示す図である。
【図２】ターゲットコンピュータにおいてデバッグエージェントプログラムによって実現される機能を示す機能ブロック図である。
【図３】デバッグプロセス管理部の機能ブロック図である。
【図４】ターゲットコンピュータで実行中の複数のプロセスの親子関係の一例を示す図である。
【図５】図４に示される複数のプロセスの親子関係を示す親子関係テーブルを示す図である。
【図６】親子関係登録処理を示すフロー図である。
【図７】デバッグ処理を示すフロー図である。
【図８】複数プロセス命令処理を示すフロー図である。
【図９】イベント処理を示すフロー図である。
【符号の説明】
【００４１】
１０  プログラム開発環境（コンピュータネットワークシステム）、１２  ターゲットコンピュータ、１４  ホストコンピュータ、１６  ユーザアプリケーションプログラム、１８  デバッグエージェントプログラム、２０，２２  オペレーティングシステム、２４  デバッグ通信プログラム、２６  ホストデバッガプログラム、２８  デバッグプログラム送受信ブロック、２８ａ  送信部、２８ｂ  プロトコルエンコード部、２８ｃ  受信部、２８ｄ  プロトコルデコード部、３０  プロセス制御ブロック、３０ａ  コマンド解析部、３０ｂ  デバッグプロセス管理部、３２  デバッグ処理ブロック、３２ａ  静的情報処理部、３２ｂ  実行制御部、３４  イベント処理ブロック、４０  親子関係テーブル更新部、４２  親子関係テーブル記憶部、４４  命令発効プロセスリスト記憶部、４６  命令対象プロセス選択部、４８  命令部。
【図１】
2006185360.tif 000003
【図２】
2006185360.tif 000004
【図３】
2006185360.tif 000005
【図４】
2006185360.tif 000006
【図５】
2006185360.tif 000007
【図６】
2006185360.tif 000008
【図７】
2006185360.tif 000009
【図８】
2006185360.tif 000010
【図９】
2006185360.tif 000011