(57)【要約】【課題】マルチプロセッサシステムに含まれる複数のプロセッサを略同時にかつ効率的に停止し、ブレークポイント発生時の各プロセッサの状態を正確に把握できるデバッグ支援装置を提供する。【解決手段】複数の単位プロセッサＰ０〜Ｐ３でなるマルチプロセッサをデバッグ処理するデバッグ支援装置において、オンラインデバッガ２０１は、複数の単位プロセッサＰ０〜Ｐ３によって実行されるスレッドのうち一部のスレッドのブレークポイントによってソフトウェアの例外処理が発生した場合、例外処理が発生したスレッドを実行していた単位プロセッサと共に他のスレッドを実行していた単位プロセッサを停止し、停止された単位プロセッサの少なくとも１つにおいて、停止されている複数の単位プロセッサＰ０〜Ｐ３の状態に関するデバッグ情報を検出してデバッグ処理を実行する。【選択図】図１
2007188147.tif 000002
【特許請求の範囲】
【請求項１】
複数の単位プロセッサでなるマルチプロセッサをデバッグ処理するデバッグ支援装置であって、
複数の前記単位プロセッサがスレッドごとにプログラムを実行すると共に、前記スレッドのうち一部のスレッドのブレークポイントによってソフトウェアの例外処理が発生した場合、例外処理が発生したスレッドを実行していた単位プロセッサと共に他のスレッドを実行していた単位プロセッサを停止する単位プロセッサ停止手段と、
前記単位プロセッサ停止手段によって停止された単位プロセッサの少なくとも１つにおいて、停止されている複数の前記単位プロセッサの状態に関する情報を検出するデバッグ処理を実行するデバッグ実行手段と、
を備えることを特徴とするデバッグ支援装置。
【請求項２】
前記デバッグ実行手段が、例外処理が発生したスレッドを実行していた単位プロセッサにおいてデバッグ処理を実行することを特徴とする請求項１に記載のデバッグ支援装置。
【請求項３】
前記デバッグ実行手段が、例外処理が発生したスレッドを実行していた単位プロセッサ以外の単位プロセッサにおいてデバッグ処理を実行することを特徴とする請求項１に記載のデバッグ支援装置。
【請求項４】
前記デバッグ実行手段によるデバッグ処理の実行に使用される単位プロセッサを選択する単位プロセッサ選択手段を備え、当該単位プロセッサ選択手段は、スレッドの処理に使用されていない単位プロセッサを選択することを特徴とする請求項３に記載のデバッグ支援装置。
【請求項５】
複数の単位プロセッサでなるマルチプロセッサをデバッグ処理するデバッグ支援装置に適用されるデバッグ処理方法をコンピュータに実行させるためのプログラムであって、
複数の前記単位プロセッサによってスレッドごとに実行されているプログラムのうち一部において、ブレークポイントによるソフトウェアの例外処理が発生した場合、例外処理が発生したスレッドを実行していた単位プロセッサと共に他のスレッドを実行していた単位プロセッサを停止する単位プロセッサ停止ステップと、
前記単位プロセッサ停止ステップによって停止された単位プロセッサの少なくとも１つにおいて、停止されている複数の前記単位プロセッサの状態に関する情報を検出するデバッグ処理を実行するデバッグ実行ステップと、
を含むことを特徴とするデバッグ処理方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムをデバッグ処理するデバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラムに係り、特に複数のプロセッサを備えるマルチプロセッサ形式のプロセッサで実行されるプログラムをデバッグ処理するデバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラムに関する。
【背景技術】
【０００２】
現在、コンピュータのソフトウェア開発にデバッガと呼ばれるツールが使用されている。デバッガは、コンピュータのプロセッサやメモリを模擬的に動作させるため、コンピュータにプログラムへの割込み、ブレークポイントの設定、シングルステップ実行させる機能を有するものである。デバッガには、ソフトウェアのみで実装されたオンラインデバッガと、ハードウェアとの組合せで実装されたＩＣＥ（In-Circuit Emulator）とがある。ＩＣＥは高機能であるものの高価である。また、オンラインデバッガはＩＣＥに比べて安価ではあるがＩＣＥと同等の機能は有していない。
【０００３】
デバッガでは、プログラム中にブレークポイントと呼ばれるプログラム中断機能が設定されている。ブレークポイントが実行された場合、デバッガが起動し、デバッガ起動した時点でプロセッサが備えるレジスタやメモリ、Ｉ／Ｏを参照、変更をすることができる。
ところで、近年、複数のプロセッサを組み合わせ、複数のプロセッサを並列に動作させるプロセッサがある。このようなプロセッサには、マルチスレッドプロセッサやマルチプロセッサがあって、本明細書で、マルチスレッドプロセッサ、マルチプロセッサ等の複数のプロセッサを組み合わせたプロセッサを総称してマルチプロセッサシステムと記す。
【０００４】
マルチプロセッサシステムのデバッグ作業を支援する場合、１つのプロセッサでブレークポイントが起こったときに他のプロセッサをも停止させ、マルチプロセッサシステムで実行されている全てのプロセッサのプログラム状態の把握する技術がある。このような従来技術として、例えば、特許文献１が挙げられる。
特許文献１は、デバッグの対象となるプロセッサがブレークポイントに達して停止信号を送出した時、プロセッサのマシンサイクルの切れ目等でシステムクロックを停止する。また、この時点でシステム全体の全ての構成要素の動作を同時に停止させ、停止時における全プロセッサのメモリ、レジスタの内容、他のハードウエアモジュールのレジスタの内容等を読み出す。このような特許文献１は、ブレークポイントが起こったとき、プロセッサばかりでなく他のハードウェアモジュールを含むシステム内の動作状況を観測することができる。
【特許文献１】特開平５−３１３９４６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１の発明は、ブレークポイント命令がソフトウェアの例外発生をするだけであって、一度の処理で他のプロセッサを停止することはできない。
このため、マルチプロセッサシステムデバッグ支援の分野にあっては、より効率的にブレークポイントが発生したプロセッサと他のプロセッサとの停止タイミングを一致させる技術が望まれている。
【０００６】
本発明は、以上の点に鑑みてなされたものであって、マルチプロセッサシステムに含まれる複数のプロセッサを略同時に、かつ効率的に停止し、ブレークポイント発生時の各プロセッサの状態を把握できるマルチプロセッサシステムに適したデバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
以上の課題を解決するため、本発明のデバッグ支援装置は、複数の単位プロセッサでなるマルチプロセッサをデバッグ処理するデバッグ支援装置であって、複数の前記単位プロセッサがスレッドごとにプログラムを実行すると共に、前記スレッドのうち一部のスレッドのブレークポイントによってソフトウェアの例外処理が発生した場合、例外処理が発生したスレッドを実行していた単位プロセッサと共に他のスレッドを実行していた単位プロセッサを停止する単位プロセッサ停止手段と、前記単位プロセッサ停止手段によって停止された単位プロセッサの少なくとも１つにおいて、停止されている複数の前記単位プロセッサの状態に関する情報を検出するデバッグ処理を実行するデバッグ実行手段と、を備えることを特徴とする。
【０００８】
このような発明によれば、複数の単位プロセッサによって実行される複数のスレッドのうち一部のスレッドのブレークポイントによってソフトウェアの例外処理が発生した場合、例外処理が発生したスレッドを実行していた単位プロセッサと共に他のスレッドを実行していた単位プロセッサを停止することができる。そして、停止された単位プロセッサの少なくとも１つにおいて、停止されている複数の単位プロセッサの状態に関する情報を検出するデバッグ処理を実行することができる。
【０００９】
このため、例外処理が発生した時点でマルチプロセッサに含まれる複数の単位プロセッサを略同時に停止し、各単位プロセッサの情報を検出することができる。このような本発明は、マルチプロセッサシステムに含まれる複数のプロセッサを略同時に、かつ効率的に停止し、ブレークポイント発生時の各単位プロセッサの状態を把握できるデバッグ支援装置を提供することができるものといえる。
【００１０】
また、本発明のデバッグ支援装置は、前記デバッグ実行手段が、例外処理が発生したスレッドを実行していた単位プロセッサにおいてデバッグ処理を実行することを特徴とする。
このような発明によれば、デバッグ処理に当てられる単位プロセッサを選択する処理をなくし、例外の発生後直ちにデバッガを起動することができる。
【００１１】
また、本発明のデバッグ支援装置は、前記デバッグ実行手段が、例外処理が発生したスレッドを実行していた単位プロセッサ以外の単位プロセッサにおいてデバッグ処理を実行することを特徴とする。
このような発明によれば、デバッグ処理を実行させるのに適切な単位プロセッサを選択してデバッグ処理を実行することができる。適切な単位プロセッサを選択することにより、マルチプロセッサのデバッグの効率をより高めることができる。
【００１２】
また、本発明のデバッグ支援装置は、前記デバッグ実行手段によるデバッグ処理の実行に使用される単位プロセッサを選択する単位プロセッサ選択手段を備え、当該単位プロセッサ選択手段は、スレッドの処理に使用されていない単位プロセッサを選択することを特徴とする。
このような発明によれば、デバッグによって停止されるスレッドの数を低減し、マルチプロセッサのデバッグの効率をより高めることができる。
【００１３】
また、本発明のデバッグ処理方法をコンピュータに実行させるためのプログラムは、複数の単位プロセッサでなるマルチプロセッサをデバッグ処理するデバッグ支援装置に適用されるデバッグ処理方法をコンピュータに実行させるためのプログラムであって、複数の前記単位プロセッサによってスレッドごとに実行されているプログラムのうち一部において、ブレークポイントによるソフトウェアの例外処理が発生した場合、例外処理が発生したスレッドを実行していた単位プロセッサと共に他のスレッドを実行していた単位プロセッサを停止する単位プロセッサ停止ステップと、前記単位プロセッサ停止ステップによって停止された単位プロセッサの少なくとも１つにおいて、停止されている複数の前記単位プロセッサの状態に関する情報を検出するデバッグ処理を実行するデバッグ実行ステップと、を含むことを特徴とする。
【００１４】
このような発明によれば、複数の単位プロセッサによって実行される複数のスレッドのうち一部のスレッドのブレークポイントによってソフトウェアの例外処理が発生した場合、例外処理が発生したスレッドを実行していた単位プロセッサと共に他のスレッドを実行していた単位プロセッサを停止することができる。そして、停止された単位プロセッサの少なくとも１つにおいて、停止されている複数の単位プロセッサの状態に関する情報を検出するデバッグ処理を実行することができる。
【００１５】
このため、例外処理が発生した時点でマルチプロセッサに含まれる複数の単位プロセッサを一度の処理で略同時に停止し、各単位プロセッサの情報を検出することができる。このような本発明は、マルチプロセッサシステムに含まれる複数のプロセッサを略同時に、かつ効率的に停止し、ブレークポイント発生時の各プロセッサの状態を正確に把握できるデバッグ支援方法をコンピュータに実行させるためのプログラムを提供することができるものといえる。
【発明を実施するための最良の形態】
【００１６】
以下、図を参照して本発明に係るデバッグ支援装置及びデバッグ処理法法をコンピュータに実行させるためのプログラムの実施形態１、実施形態２を説明する。
（実施形態１）
図１は、本発明の実施形態１、実施形態２に共通の図であって、デバッグ支援装置を説明するためのブロック図である。図示したデバッグ支援装置は、複数の単位プロセッサでなるマルチプロセッサシステムに適用されるものである。
【００１７】
実施形態１に挙げたマルチプロセッサシステムは、複数のプロセッサ（マルチプロセッサシステムを構成するプロセッサであるため単位プロセッサと記す）Ｐ０〜Ｐ３を備えている。単位プロセッサＰ０〜Ｐ３は、共用メモリ１０２を共用するよう組み合わされるマルチプロセッサを構成する。なお、マルチプロセッサのプロセッサのみの部分をプロセッサ部１０１として図中に示す。
【００１８】
単位プロセッサＰ０〜Ｐ３は、各々ステートレジスタ（ＰＳＲ）を有している。ＰＳＲは、単位プロセッサＰ０〜Ｐ３のステータスを記憶するレジスタである。ステータスとは、例えば、単位プロセッサの割込みの可否状態、単位プロセッサにおけるオーバーフローの発生状態等、単位プロセッサの状態に関する情報を記憶するレジスタである。
また、マルチプロセッサで実行されるプログラムは、スレッドの単位に分けられていて、単位プロセッサＰ０〜Ｐ３は、スレッドごとにプログラムを実行する。なお、スレッドの文言は、プログラムの単位を指すと共に本明細書ではスレッド単位のプログラムをも指すものとする。
【００１９】
実施形態１のデバッグ支援装置は、単位プロセッサＰ０〜Ｐ１によって実行されているスレッドのうち一部のスレッドのブレークポイントによってソフトウェアの例外処理が発生した場合、例外処理が発生したスレッドを実行していた単位プロセッサと共に他のスレッドを実行していた単位プロセッサを停止するオンラインデバッガ２０１を備えている。
オンラインデバッガ２０１は、プロセッサ部１０１をターゲットとしてプログラムのバグの発見や修正を支援する HYPERLINK "http://e-words.jp/w/E382BDE38395E38388E382A6E382A7E382A2.html" ソフトウェアであって、共用メモリ１０２に保存されている。オンラインデバッガ２０１に対する指示は、図示しないソフトウェアによりＰＣがデバッガとなって行われる。
【００２０】
実施形態１のデバッグ支援装置は、オンラインデバッガ２０１とＰＣのソフトウェアのみによって構成できる。このため、実施形態１のデバッグ支援装置は、ハードウェア装置を使ったデバッガより安価に製造することが可能である。
オンラインデバッガ２０１にはスレッドの実行を強制的に停止させるための強制実行停止コード（ブレークポイント命令）が挿入されている。単位プロセッサＰ０〜Ｐ３によるスレッドの処理は、ブレークポイント命令実行時にオンラインデバッガ２０１によって中止される。本明細書では、スレッドの実行中止をソフトウェアの例外処理とも記す。
【００２１】
なお、スレッドの実行中止は、単位プロセッサＰ０〜Ｐ３に対する割込みによって行われる。実施形態１では、割込みに使用される割込みテーブル１０３を共用メモリ１０２に保存している。
なお、割込みテーブル１０３は、割込み処理を割込みの順番にしたがって管理するテーブルである。マルチプロセッサの図示しない割込み制御部は、割込み処理や処理中のスレッドの優先度に応じて要求された割込みに順番を付して割込みテーブル１０３に追加する。このような割込みテーブル１０３は、マルチプロセッサに対する他の割込みにも使用されている。
【００２２】
図２は、オンラインデバッガ２０１の機能ブロック図である。オンラインデバッガ２０１は、割込み制御部２０３とデバッグ情報チェック部２０４とを備えている。割込み制御部２０３は、割込みテーブル１０３を参照して単位プロセッサＰ０〜Ｐ３に割込み処理をするプログラムである。デバッグ情報チェック部２０４は、停止された単位プロセッサＰ０〜Ｐ３の少なくとも１つにおいて、停止されている複数の単位プロセッサの状態に関する情報（以降、デバッグ情報と記す）を検出するプログラムである。このようなオンラインデバッガ２０１は、実施形態１において単位プロセッサ停止手段及びデバッグ実行手段として機能する。
【００２３】
デバックの実行は、デバッグ情報チェック部２０４がステートレジスタＲ０〜Ｒ３にアクセスし、デバッグ情報を共用メモリ１０２に保存することによって行われる。デバッグの実行のため、実施形態１のデバッグ支援装置は、オンラインデバッガ２０１によって管理される管理エリア１０６を共用メモリ１０２内に備えている。共用メモリ１０２内にある管理エリア１０６は、単位プロセッサＰ０〜Ｐ３のいずれもが参照可能である。
管理エリア１０６には、オンラインデバッガ２０１の状態を示す起動フラグが書き込まれる起動フラグエリア、検出された単位プロセッサＰ０〜Ｐ３の情報が書き込まれるレジスタエリアがある。
【００２４】
図３は、マルチプロセッサ上で実行されている複数のスレッドとオンラインデバッガとの実施形態１における関係を説明するための図である。実施形態１では、図示したように、オンラインデバッガ２０１が、例外処理が発生したスレッドを実行していた単位プロセッサ以外の単位プロセッサにおいてデバッグ処理を実行する。
すなわち、図３の例では、スレッド１（スレッドＳ１）、スレッド２（スレッドＳ２）、スレッド３（スレッドＳ３）がマルチプロセッサ上で実行されている。実施形態１では、スレッドＳ１でソフトウェアの例外が発生し、オンラインデバッガ２０１がスレッドＳ２で起動する。
【００２５】
スレッドＳ２は、例外が発生したことによってオンラインデバッガ２０１を起動させ、スレッドＳ１、スレッドＳ３を停止すると共に自スレッドも停止する。オンラインデバッガ２０１は、スレッドＳ１、スレッドＳ３を実行しているプロセッサの停止を待ってオンラインデバッグを実行する。オンラインデバッガ２０１は、オンラインデバッグによってスレッドＳ１、スレッドＳ３のステータスレジスタ等に記録されている情報を参照し、ブレークポイントにおける複数のスレッドの状態を把握することができる。
【００２６】
オンラインデバッガの動作の終了後、オンラインデバッガ２０１は、スレッドＳ１、スレッドＳ２、スレッドＳ３の処理を再開させる。スレッドＳ１を実行していた単位プロセッサ、スレッドＳ３を実行していた単位プロセッサは、オンラインデバッガ２０１による処理の再開までの期間ｔ停止している。
【００２７】
図４、図５は、図３で説明した本発明の実施形態１のデバッグ支援方法をコンピュータに実行させるためのプログラムを説明するためのフローチャートである。図４は、ブレークポイントからオンラインデバッグが実行されるまでの処理を示している。また、図５は、オンラインデバッグの終了から例外発生以前の処理に戻るまでに実行されるプログラムを説明するためのフローチャートである、
本実施形態のマルチプロセッサは、マルチプロセッサのいずれかのスレッドでブレークポイントが実行された場合、オンラインデバッガ２０１によって制御される。オンラインデバッガ２０１は、マルチプロセッサ上のスレッドのいずれかにおいて実行される。
【００２８】
実施形態１では、複数のスレッドのうち、処理が行われていない空きスレッドを使ってオンラインデバッガ２０１を動作させるものとする。このような実施形態１は、スレッド及びスレッドを処理する単位プロセッサを有効に活用できるという効果を奏する。
なお、空きスレッドの検出は、例えば、オンラインデバッガ２０１のデバック情報チェック部２０４が定期的に単位プロセッサＰ０〜Ｐ３のステータスレジスタＲ０〜Ｒ３をチェックし、ステータスレジスタがＨＡＬＴの状態になった単位プロセッサを検出することによっても可能である。
【００２９】
上記のように構成した場合、主にデバック情報チェック部２０４が単位プロセッサ選択手段として機能する。
マルチプロセッサに備えられる複数の単位プロセッサのうち、１つの単位プロセッサ（単位プロセッサＰ０とする）でソフトウェアの例外が発生すると、ＨＡＬＴ状態にある他の単位プロセッサ（単位プロセッサＰ１とする）で処理されているスレッドの制御がオンラインデバッガ２０１に移行する（Ｓ３０１）。
【００３０】
単位プロセッサＰ１は、ステータスレジスタＲ１やプログラムカウンタ(図示せず)等に保存されている情報を管理エリア１０６のレジスタエリアに退避させる（Ｓ３０２）。そして、すでにオンラインデバッガ２０１が起動されているか否かを判断する（Ｓ３０３）。なお、この判断は、管理エリア１０６の起動フラグエリアに書き込まれる起動フラグを参照することによって行われる。
【００３１】
オンラインデバッガが起動していることを起動フラグが示している場合（Ｓ３０３：Ｙｅｓ）、オンラインデバッガ２０１は、処理を中止する。
一方、オンラインデバッガ２０１が起動していない場合（Ｓ３０３：Ｙｅｓ）、起動フラグエリアにオンラインデバッガ２０１が起動していることを示すフラグが書き込まれる（Ｓ３０４）。割込み制御部２０３は、単位プロセッサＰ１以外の単位プロセッサ（他のプロセッサ）に割込み処理し、停止するよう要求する（Ｓ３０５）。そして、単位プロセッサＰ０、Ｐ２、Ｐ３のステータスレジスタを参照して単位プロセッサＰ０、Ｐ２、Ｐ３が停止したか否は判断する（Ｓ３０６）。
【００３２】
ステップＳ３０６の判断の結果、単位プロセッサＰ０、Ｐ２、Ｐ３が停止したと判断された場合（Ｓ３０６：Ｙｅｓ）、オンラインデバッガ２０１は、単位プロセッサＰ１においてデバッグ動作を実行する（Ｓ３０７）。
また、図５に示したように、デバッグ処理の終了後、オンラインデバッガ２０１は、単位プロセッサＰ０、Ｐ２、Ｐ３に動作の実行（再開）を要求する（Ｓ５０１）。そして、起動フラグエリアに書き込まれている起動フラグをクリアする（Ｓ５０２）。さらに、退避したデバッグ情報等をステータスレジスタＲ１に復帰させる等し、単位プロセッサＰ１をソフトウェアの例外が発生する以前の状態に復帰させる（Ｓ５０３）。
【００３３】
以上述べた実施形態１は、例外処理が発生した時点でマルチプロセッサに含まれる複数の単位プロセッサＰ０〜Ｐ３を一度の処理で略同時に停止し、各単位プロセッサの情報を検出することができる。このため、マルチプロセッサシステムに含まれる複数の単位プロセッサを略同時に停止し、ブレークポイント発生時の各プロセッサの状態を把握することができる。また、実施形態１は、複数の単位プロセッサを一度の処理で停止させることができるので、単位プロセッサ停止の処理を効率的に行うことができる。
【００３４】
また、実施形態１は、単位プロセッサＰ０〜Ｐ１に割込み処理することによってスレッドの実行を停止させている。このため、例外の発生から速やかにスレッドを停止することができる。このような実施形態１は、複数の単位プロセッサを停止する処理の効率をいっそう高めることができる。
【００３５】
（実施形態２）
次に、本発明の実施形態２について説明する。実施形態２のデバッグ支援装置は、実施形態１で説明したデバッグ支援装置と同様の構成を有している。このため、実施形態２では、デバッグ支援装置の構成の図示及びこの説明を一部略すものとする。
実施形態２のデバッグ支援装置は、オンラインデバッガが、例外処理が発生したスレッドを実行していた単位プロセッサにおいてデバッグ処理を実行する点で実施形態１と相違する。
【００３６】
図６は、マルチプロセッサ上で実行されている複数のスレッドとオンラインデバッガとの実施形態２における関係を説明するための図である。実施形態２では、図示したように、オンラインデバッガ２０１が、例外処理が発生したスレッドを実行していた単位プロセッサ上でデバッグ処理を実行する。
すなわち、図６の例では、スレッド１（スレッドＳ１）、スレッド２（スレッドＳ２）、スレッド３（スレッドＳ３）がマルチプロセッサ上で実行されている。図６の例では、スレッドＳ１でソフトウェアの例外が発生し、オンラインデバッガ２０１がスレッドＳ１で起動する。
【００３７】
スレッドＳ１は、例外が発生したことによってオンラインデバッガ２０１を起動させ、スレッドＳ２、スレッドＳ３を停止すると共に自スレッドも停止する。オンラインデバッガ２０１は、スレッドＳ２、スレッドＳ３を実行しているプロセッサの停止を待ってオンラインデバッグを実行する。オンラインデバッガ２０１は、オンラインデバッグによってスレッドＳ２、スレッドＳ３のステータスレジスタ等に記録されている情報を参照し、ブレークポイントにおける複数のスレッドの状態を把握することができる。
【００３８】
オンラインデバッガの動作の終了後、オンラインデバッガ２０１は、スレッドＳ１、スレッドＳ２、スレッドＳ３の処理を再開させる。スレッドＳ２を実行していた単位プロセッサ、スレッドＳ３を実行していた単位プロセッサは、オンラインデバッガ２０１による処理の再開までの期間停止している。
【００３９】
図７、図８は、図６で説明した本発明の実施形態２のデバッグ支援方法をコンピュータに実行させるためのプログラムを説明するためのフローチャートである。図７（ａ）は、オンラインデバッガが起動する単位プロセッサ（単位プロセッサＰ０とする）のブレークポイントからオンラインデバッグが実行されるまでの処理を示している。また、（ｂ）は、単位プロセッサＰ０において、オンラインデバッグの終了から例外発生以前の処理に戻るまでに実行されるプログラムを説明するためのフローチャートである。
【００４０】
図８（ａ）は、単位プロセッサＰ０以外の単位プロセッサＰ１〜Ｐ３のブレークポイントからオンラインデバッグが実行されるまでの処理を示している。また、（ｂ）は、単位プロセッサＰ１〜Ｐ３において、オンラインデバッグの終了から例外発生以前の処理に戻るまでに実行されるプログラムを説明するためのフローチャートである。
単位プロセッサＰ０でソフトウェアの例外が発生すると、単位プロセッサＰ０で処理されているスレッドの制御がオンラインデバッガ２０１に移行する（Ｓ７０１）。
【００４１】
オンラインデバッガ２０１は、ステータスレジスタＲ０やプログラムカウンタ(図示せず)等に保存されている情報を管理エリア１０６のレジスタエリアに退避させる（Ｓ７０２）。そして、起動フラグエリアにオンラインデバッガ２０１が起動していることを示すフラグを書き込む（Ｓ７０３）。割込み制御部２０３は、単位プロセッサＰ０以外の単位プロセッサ（他のプロセッサ）に割込み処理し、停止するよう要求する（Ｓ７０４）。そして、単位プロセッサＰ１、Ｐ２、Ｐ３のステータスレジスタを参照して単位プロセッサＰ１、Ｐ２、Ｐ３が停止したか否は判断する（Ｓ７０５）。
ステップＳ７０５の判断の結果、単位プロセッサＰ１、Ｐ２、Ｐ３が停止したと判断された場合（Ｓ７０５：Ｙｅｓ）、オンラインデバッガ２０１は、単位プロセッサＰ０においてデバッグ動作を実行する（Ｓ７０６）。
【００４２】
また、図７（ｂ）に示したように、デバッグ処理の終了後、オンラインデバッガ２０１は、単位プロセッサＰ１、Ｐ２、Ｐ３に動作の実行（再開）を要求する（Ｓ７１０）。そして、起動フラグエリアに書き込まれている起動フラグをクリアする（Ｓ７１１）。さらに、退避したデバッグ情報等をステータスレジスタＲ０に復帰させる等し、単位プロセッサＰ０をソフトウェアの例外が発生する以前の状態に復帰させる（Ｓ７１３）。
【００４３】
また、単位プロセッサＰ０以外の単位プロセッサＰ１〜Ｐ３は、図８（ａ）に示したように、オンラインデバッガ２０１によって停止される。停止後、単位プロセッサＰ１〜Ｐ３の制御はオンラインデバッガ２０１に移行する（Ｓ８０１）。続いて、オンラインデバッガ２０１は、ステータスレジスタＲ０やプログラムカウンタ(図示せず)等に保存されている情報を管理エリア１０６のレジスタエリアに退避させ（Ｓ８０２）、処理を終了する。
【００４４】
図８（ｂ）に示したように、単位プロセッサＰ０におけるデバッグ処理の終了後、単位プロセッサＰ１〜Ｐ３は、オンラインデバッガ２０１の要求に応じてデバッグ情報等をステータスレジスタＲ１〜Ｒ３に復帰させる等する（Ｓ８１０）。この処理により、プロセッサＰ１〜Ｐ３がソフトウェアの例外が発生する以前の状態に復帰する（Ｓ８１１）。
以上述べた実施形態２は、デバッグ処理の実行に使用される単位プロセッサとしてスレッドの処理に使用されていない単位プロセッサを選択する。このため、デバッグによって停止されるスレッドの数を低減してデバッグにかかる時間を短縮する等し、デバッグの効率をより高めることができる。
【００４５】
なお、図４ないし図８で述べたデバッグ処理方法をコンピュータに実行させるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フロッピー（登録商標）ディスク（ＦＤ）、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録されて提供される。また、本実施形態のデバッグ処理方法をコンピュータに実行させるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。さらに、本実施形態のデバッグ処理方法をコンピュータに実行させるためのプログラムは、コンピュータで読み取り可能なＲＯＭ、フラッシュメモリ、メモリカード、ＵＳＢ接続型フラッシュメモリ等のメモリデバイスに記録されて提供してもよい。
【図面の簡単な説明】
【００４６】
【図１】本発明の実施形態１、実施形態２のデバッグ支援装置を説明するためのブロック図である。
【図２】図１に示したオンラインデバッガの機能ブロック図である。
【図３】本発明の実施形態１におけるマルチプロセッサ上で実行されている複数のスレッドとオンラインデバッガとの関係を説明するための図である。
【図４】図３で説明した本発明の実施形態１のデバッグ支援方法をコンピュータに実行させるためのプログラムを説明するためのフローチャートである。
【図５】図３で説明した本発明の実施形態１のデバッグ支援方法をコンピュータに実行させるためのプログラムを説明するための他のフローチャートである。
【図６】本発明の実施形態２におけるマルチプロセッサ上で実行されている複数のスレッドとオンラインデバッガとの関係を説明するための図である。
【図７】本発明の実施形態２のデバッグ支援方法をコンピュータに実行させるためのプログラムを説明するためのフローチャートである。
【図８】本発明の実施形態２のデバッグ支援方法をコンピュータに実行させるためのプログラムを説明するための他のフローチャートである。
【符号の説明】
【００４７】
１０１  プロセッサ部、２０１  オンラインデバッガ、１０２  共用メモリ、１０３  割込みテーブル、１０６  管理エリア、２０１  オンラインデバッガ、２０３  割込み制御部、２０４  デバック情報チェック部、Ｐ０，Ｐ１，Ｐ２，Ｐ３，Ｐ４  単位プロセッサＰ、Ｒ０，Ｒ１，Ｒ２，Ｒ３，Ｒ４  ステートレジスタ
【図１】
2007188147.tif 000003
【図２】
2007188147.tif 000004
【図３】
2007188147.tif 000005
【図４】
2007188147.tif 000006
【図５】
2007188147.tif 000007
【図６】
2007188147.tif 000008
【図７】
2007188147.tif 000009
【図８】
2007188147.tif 000010
【手続補正書】
【提出日】平成19年3月28日(2007.3.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
マルチプロセッサをデバッグ処理するデバッグ支援装置であって、
複数の前記単位プロセッサの各々が、プログラムを構成する単位であるスレッドごとにプログラムを実行すると共に、前記スレッドのうち一部のスレッドのブレークポイントによってソフトウェアの例外処理が発生した場合、例外処理が発生したスレッドを実行していた単位プロセッサと共に他のスレッドを実行していた単位プロセッサを停止する単位プロセッサ停止手段と、 
マルチプロセッサを構成する複数の単位プロセッサに共用されるメモリに保存され、前記単位プロセッサ停止手段によって停止された単位プロセッサのうちの例外処理が発生したスレッドを実行していた単位プロセッサ、例外処理が発生したスレッドを実行していた単位プロセッサ以外の単位プロセッサの少なくともいずれかに、停止されている複数の前記単位プロセッサの状態に関する情報を検出する処理であるデバッグ処理を直接実行させるデバッグ実行手段と、 
を備えることを特徴とするデバッグ支援装置。 
【請求項２】
前記デバッグ実行手段によるデバッグ処理の実行に使用される単位プロセッサを選択する単位プロセッサ選択手段を備え、当該単位プロセッサ選択手段は、スレッドの処理に使用されていない単位プロセッサを選択することを特徴とする請求項１に記載のデバッグ支援装置。 
【請求項３】
マルチプロセッサを構成する複数の単位プロセッサに共用されるメモリに保存され、マルチプロセッサをデバッグ処理するデバッグ支援装置に適用されるデバッグ処理方法をコンピュータに実行させるためのプログラムであって、 
複数の前記単位プロセッサの各々によってプログラムを構成する単位であるスレッドごとに実行されているプログラムのうちの一部においてブレークポイントによるソフトウェアの例外処理が発生した場合、例外処理が発生したスレッドを実行していた単位プロセッサと共に他のスレッドを実行していた単位プロセッサを停止する単位プロセッサ停止ステップと、 
前記単位プロセッサ停止ステップによって停止された単位プロセッサのうちの例外処理が発生したスレッドを実行していた単位プロセッサ、例外処理が発生したスレッドを実行していた単位プロセッサ以外の単位プロセッサの少なくともいずれかに、停止されている複数の前記単位プロセッサの状態に関する情報を検出する処理であるデバッグ処理を直接実行させるデバッグ実行ステップと、 
を含むことを特徴とするデバッグ処理方法をコンピュータに実行させるためのプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
以上の課題を解決するため、本発明のデバッグ支援装置は、マルチプロセッサをデバッグ処理するデバッグ支援装置であって、複数の前記単位プロセッサの各々が、プログラムを構成する単位であるスレッドごとにプログラムを実行すると共に、前記スレッドのうち一部のスレッドのブレークポイントによってソフトウェアの例外処理が発生した場合、例外処理が発生したスレッドを実行していた単位プロセッサと共に他のスレッドを実行していた単位プロセッサを停止する単位プロセッサ停止手段と、マルチプロセッサを構成する複数の単位プロセッサに共用されるメモリに保存され、前記単位プロセッサ停止手段によって停止された単位プロセッサのうちの例外処理が発生したスレッドを実行していた単位プロセッサ、例外処理が発生したスレッドを実行していた単位プロセッサ以外の単位プロセッサの少なくともいずれかに、停止されている複数の前記単位プロセッサの状態に関する情報を検出する処理であるデバッグ処理を直接実行させるデバッグ実行手段と、を備えることを特徴とする。 
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
このような発明によれば、複数の単位プロセッサによって実行される複数のスレッドのうち一部のスレッドのブレークポイントによってソフトウェアの例外処理が発生した場合、例外処理が発生したスレッドを実行していた単位プロセッサと共に他のスレッドを実行していた単位プロセッサを停止することができる。そして、停止された単位プロセッサのうちの例外処理が発生したスレッドを実行していた単位プロセッサ、例外処理が発生したスレッドを実行していた単位プロセッサ以外の単位プロセッサのいずれにも、デバッグ処理を直接実行させることができる。
この際、例外処理が発生したスレッドを実行していた単位プロセッサにおいてデバッグ処理を実行すれば、デバッグ処理に当てられる単位プロセッサを選択する処理をなくし、例外の発生後直ちにデバッガを起動することができる。
また、例外処理が発生したスレッドを実行していた単位プロセッサ以外の単位プロセッサにおいてデバッグ処理を実行すれば、デバッグ処理を実行させるのに適切な単位プロセッサを選択してデバッグ処理を実行することができる。適切な単位プロセッサを選択することにより、マルチプロセッサのデバッグの効率をより高めることができる。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】削除
【補正の内容】
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】削除
【補正の内容】
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
また、本発明のデバッグ処理方法をコンピュータに実行させるためのプログラムは、マルチプロセッサを構成する複数の単位プロセッサに共用されるメモリに保存され、マルチプロセッサをデバッグ処理するデバッグ処理方法をコンピュータに実行させるためのプログラムであって、複数の単位プロセッサでなるマルチプロセッサをデバッグ処理するデバッグ支援装置に適用されるデバッグ処理方法をコンピュータに実行させるためのプログラムであって、複数の前記単位プロセッサにより、プログラムを構成する単位であるスレッドごとに実行されているプログラムのうちの一部においてブレークポイントによるソフトウェアの例外処理が発生した場合、例外処理が発生したスレッドを実行していた単位プロセッサと共に他のスレッドを実行していた単位プロセッサを停止する単位プロセッサ停止ステップと、前記単位プロセッサ停止ステップによって停止された単位プロセッサのうちの例外処理が発生したスレッドを実行していた単位プロセッサ、例外処理が発生したスレッドを実行していた単位プロセッサ以外の単位プロセッサの少なくともいずれかに、停止されている複数の前記単位プロセッサの状態に関する情報を検出する処理であるデバッグ処理を直接実行させるデバッグ実行ステップと、を含むことを特徴とする。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
このような発明によれば、複数の単位プロセッサによって実行される複数のスレッドのうち一部のスレッドのブレークポイントによってソフトウェアの例外処理が発生した場合、例外処理が発生したスレッドを実行していた単位プロセッサと共に他のスレッドを実行していた単位プロセッサを停止することができる。そして、停止された単位プロセッサのうちの例外処理が発生したスレッドを実行していた単位プロセッサ、例外処理が発生したスレッドを実行していた単位プロセッサ以外の単位プロセッサのいずれにも、デバッグ処理を直接実行させることができる。
この際、例外処理が発生したスレッドを実行していた単位プロセッサにおいてデバッグ処理を実行すれば、デバッグ処理に当てられる単位プロセッサを選択する処理をなくし、例外の発生後直ちにデバッガを起動することができる。
また、例外処理が発生したスレッドを実行していた単位プロセッサ以外の単位プロセッサにおいてデバッグ処理を実行すれば、デバッグ処理を実行させるのに適切な単位プロセッサを選択してデバッグ処理を実行することができる。適切な単位プロセッサを選択することにより、マルチプロセッサのデバッグの効率をより高めることができる。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００１９
【補正方法】変更
【補正の内容】
【００１９】
実施形態１のデバッグ支援装置は、単位プロセッサＰ０〜Ｐ１によって実行されているスレッドのうち一部のスレッドのブレークポイントによってソフトウェアの例外処理が発生した場合、例外処理が発生したスレッドを実行していた単位プロセッサと共に他のスレッドを実行していた単位プロセッサを停止するオンラインデバッガ２０１を備えている。オンラインデバッガ２０１は、プロセッサ部１０１をターゲットとしてプログラムのバグの発見や修正を支援するソフトウェアであって、共用メモリ１０２に保存されている。オンラインデバッガ２０１に対する指示は、図示しないソフトウェアによりＰＣがデバッガとなって行われる。