(57)【要約】【課題】マルチスレッド型プロセッサにおける単一のスレッドのみの実行を停止させる。【解決手段】デバッグ制御装置は、デバッグ対象となるスレッドのスレッドＩＤ及び停止アドレスを入力すると共に、ＣＰＵ１５上で処理されているスレッドのうちの所定の１つのスレッドに対する処理を停止させる特定スレッド停止モード又は全てのスレッドに対する処理を停止させる全スレッド停止モードを示す実行制御モード２３を入力し、実行制御命令を出力するデバッガプログラム２２と、デバッガプログラム２２からの実行制御命令を入力し、実行制御モード２３が特定スレッド停止モードである場合には、ブレークポイントに到達時に、所定の１つのスレッドに対する処理を停止させる一方、実行制御モード２３が全スレッド停止モードである場合には、ブレークポイント到達時に、全てのスレッドを停止させる処理を行うモニタプログラム１２とを有する。【選択図】        図１
2004318658.tif 000002
【特許請求の範囲】
【請求項１】
複数のスレッドを時分割で並行処理するマルチスレッド型プロセッサ上で動作するアプリケーションソフトウェアのデバッグの制御を司るデバッガプログラムと、
前記デバッガプログラムによるデバッグの制御を実行するための実行制御命令を前記デバッガプログラムから入力し、前記アプリケーションソフトウェアのデバッグの制御を中継するモニタプログラムとを備え、
前記デバッガプログラムは、
前記アプリケーションソフトウェアのデバッグ対象となるスレッドのＩＤを示すスレッドＩＤ及びそのスレッドＩＤについてのブレークポイントとなる停止アドレスを入力すると共に、前記マルチスレッド型プロセッサ上で並行処理されているスレッドのうちの所定の１つのスレッドに対する処理を停止させる特定スレッド停止モード又は前記マルチスレッド型プロセッサ上で並行処理されている全てのスレッドに対する処理を停止させる全スレッド停止モードを示す実行制御モードを入力し、前記実行制御モードに基づいて、前記実行制御命令を前記モニタプログラムに対して出力し、
前記モニタプログラムは、
前記デバッガプログラムからの前記実行制御命令を入力し、前記実行制御モードが前記特定スレッド停止モードである場合には、前記マルチスレッド型プロセッサによる前記アプリケーションソフトウェアに対する処理が前記ブレークポイントに到達したことを判断すると、前記マルチスレッド型プロセッサ上で並行処理されているスレッドのうちの所定の１つのスレッドに対する処理を停止させる一方、前記実行制御モードが前記全スレッド停止モードである場合には、前記マルチスレッド型プロセッサによる前記アプリケーションソフトウェアに対する処理が前記ブレークポイントに到達したことを判断すると、前記マルチプロセッサ上で並行処理されている全てのスレッドに対する処理を停止させる処理を行う
ことを特徴とするデバッグ制御装置。
【請求項２】
請求項１に記載のデバッグ制御装置において、
前記モニタプログラムからの指示に従って動作する割り込みコントローラをさらに備え、
前記モニタプログラムは、
前記実行制御モードが特定スレッド停止モードである場合には、前記マルチスレッド型プロセッサによる前記アプリケーションソフトウェアに対する処理が前記ブレークポイントに到達したことを判断すると、前記マルチスレッド型プロセッサに対して割り込みを発生させるように、前記割り込みコントローラを設定することにより、前記ブレークポイントのスレッドのみを停止させると共に、他のスレッドの実行を継続させる処理を行う一方、
前記実行制御モードが全スレッド停止モードである場合には、前記マルチスレッド型プロセッサによる前記アプリケーションソフトウェアに対する処理が前記ブレークポイントに到達したことを判断すると、前記マルチスレッド型プロセッサに供給されるクロックを停止させるように、前記割り込みコントローラを設定することにより、前記マルチスレッド型プロセッサ上で並行処理されている全てのスレッドを停止させる処理を行うことを特徴とするデバッグ制御装置。
【請求項３】
請求項２に記載のデバッグ制御装置において、
前記マルチスレッド型プロセッサ上で現在実行されているスレッドのスレッドＩＤを識別し、記憶保持するスレッドＩＤレジスタをさらに備え、
前記デバッガプログラムは、ホストコンピュータに格納されており、
前記モニタプログラムは、
前記実行制御モードが特定スレッド停止モードである場合に、前記ブレークポイントに到達したことを判断して、前記マルチスレッド型プロセッサに対して割り込みを発生させた後、前記マルチスレッド型プロセッサのレジスタ資源を退避して、前記ブレークポイントに到達した時点のスレッドＩＤを前記スレッドＩＤレジスタから取得した後、当該スレッドＩＤ、前記ブレークポイントの停止アドレス及び前記アプリケーションソフトウェアに対する実行の停止要因を前記ホストコンピュータに格納された前記デバッガプログラムに通知し、
前記ホストコンピュータは、
前記モニタプログラムから前記デバッガプログラムに通知された前記スレッドＩＤ、前記ブレークポイントの停止アドレス及び前記アプリケーションソフトウェアに対する実行の停止要因に基づいて、メモリの読み出し及び書き込みを行う命令又は前記アプリケーションソフトウェアの実行の再開を行う命令を前記モニタプログラムに対して行い、
前記モニタプログラムは、
前記実行の再開を行う命令を受けた場合に、前記退避させたレジスタ資源の回復を行うことにより、前記アプリケーションソフトウェアに対する実行を再開することを特徴とするデバッグ制御装置。
【請求項４】
請求項２に記載のデバッグ制御装置において、
前記マルチスレッド型プロセッサ上で現在実行されているスレッドのスレッドＩＤを識別し、記憶保持するスレッドＩＤレジスタをさらに備え、
前記デバッガプログラムは、ホストコンピュータに格納されており、
前記モニタプログラムは、
前記実行制御モードが全スレッド停止モードである場合に、前記ブレークポイントに到達したことを判断して、前記マルチスレッド型プロセッサに対するクロックの供給を停止させた後、前記ブレークポイントの停止アドレス、前記アプリケーションソフトウェアに対する実行の停止要因及び全てのスレッドを停止する旨を前記ホストコンピュータに格納された前記デバッガプログラムに通知することを特徴とするデバッグ制御装置。
【請求項５】
請求項３に記載のデバッグ制御装置において、
前記デバッガプログラムは、
前記実行制御モードが特定スレッド停止モードである場合には、前記スレッドＩＤ、前記ブレークポイントの停止アドレス及び前記アプリケーションソフトウェアに対する実行の停止要因の通知を受けた後、これらを表示装置に表示させる一方、
前記実行制御モードが全スレッド停止モードである場合に、前記アプリケーションソフトウェアに対する実行の停止要因及び全てのスレッドを停止する旨の通知を受けた後、これらを表示装置に表示させることを特徴とするデバッグ制御装置。
【請求項６】
複数のスレッドを時分割で並行処理するマルチスレッド型プロセッサ上で動作するアプリケーションソフトウェアのデバッグの制御を司るデバッガプログラムと、前記デバッガプログラムによるデバッグの制御を実行するための実行制御命令を前記デバッガプログラムから入力し、前記アプリケーションソフトウェアのデバッグの制御を中継するモニタプログラムとを備えるデバッグ制御装置の制御方法であって、
前記アプリケーションソフトウェアのデバッグ対象となるスレッドのＩＤを示すスレッドＩＤ及びそのスレッドＩＤについてのブレークポイントとなる停止アドレスを前記デバッガプログラムに入力すると共に、前記マルチスレッド型プロセッサ上で並行処理されているスレッドのうちの所定の１つのスレッドに対する処理を停止させる特定スレッド停止モード又は前記マルチスレッド型プロセッサ上で並行処理されている全てのスレッドに対する処理を停止させる全スレッド停止モードを示す実行制御モードを前記デバッガプログラムに入力するステップと、
前記デバッガプログラムに入力するステップにおける前記実行制御モードに基づいて、前記実行制御命令を前記モニタプログラムに対して出力する第２のステップと、
前記モニタプログラムに対して出力するステップにおける前記実行制御命令に基づいて、前記実行制御モードが前記特定スレッド停止モードである場合には、前記マルチスレッド型プロセッサによる前記アプリケーションソフトウェアに対する処理が前記ブレークポイントに到達したことを判断すると、前記マルチスレッド型プロセッサ上で並行処理されているスレッドのうちの所定の１つのスレッドに対する処理を停止させる一方、前記実行制御モードが前記全スレッド停止モードである場合には、前記マルチスレッド型プロセッサによる前記アプリケーションソフトウェアに対する処理が前記ブレークポイントに到達したことを判断すると、前記マルチプロセッサ上で並行処理されている全てのスレッドに対する処理を停止させる処理を行うステップとを備えることを特徴とするデバッグ制御装置の制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数個のスレッドを時分割で並行処理するマルチスレッド型プロセッサ上で動作するアプリケーションソフトウェアのデバッグを制御するデバッグ制御装置及びその制御方法に関する。
【０００２】
【従来の技術】
まず、前提として、シングルスレッド型プロセッサにおけるデバッグシステムについて説明する。
【０００３】
シングルスレッド型プロセッサにおけるデバッグシステムにおいては、アプリケーションソフトウェアの命令列における任意の箇所（ブレークポイント）でアプリケーションソフトウェアの実行を停止させて、停止させた時点におけるレジスタ及びメモリの内容確認並びに実行軌跡の確認等を操作者が行うことにより、プログラム論理及びハードウェア動作の確認並びにデバッグが行われる。
【０００４】
ところで、複数のスレッドを時分割並行処理を可能とするマルチスレッド型プロセッサが現在広く知られている。ここで、複数のスレッドには、各々にとって独立したレジスタ資源と実行ユニットとが備えられており、このマルチスレッド型プロセッサにおいては、時間の経過又はイベントの発生を契機としてスレッドを順に切替えることにより、複数のプログラム（スレッド）を同時並行で動作させることが可能である。
【０００５】
また、マルチスレッド型プロセッサとマルチプロセッサとが異なる点は、マルチプロセッサでは、任意の時点において、複数のプログラムを複数のプロセッサによって同時に実行する並行処理の機構を有するのに対して、マルチスレッド型プロセッサでは、任意の時点において、１つのプログラム（スレッド）のみが実行されるのであるが、複数のスレッドを切替えながら実行するので、所定の期間で考えると、複数のプログラム（スレッド）が同時並行で動作する。また、マルチスレッド型プロセッサには、複数のレジスタ資源及び実行ユニットが備えられているものの、命令フェッチユニット及び命令デコードユニットについてはそれぞれが１つ備えられているのみなので、マルチスレッド型プロセッサはハードウェア量を小さくできる利点を有している。
【０００６】
一方、デバッグシステムの重要な目的と機能は、前述したように、連続して実行されるアプリケーションソフトウェアにおける着目すべき任意の箇所にブレークポイントを設定することを可能にすることである。この点、マルチスレッド型プロセッサにおいては、着目すべき単一のスレッドのみの実行を停止させたい場合と、全てのスレッドの停止、すなわちシステム全体を停止をさせたい場合とが想定される。
【０００７】
マルチスレッド型プロセッサにおけるデバッグシステムの実行を制御するために、マルチプロセッサシステムにおけるデバッグシステムの実行制御方式を準用することは技術的に可能である。すなわち、特許第１４３１２７３号において、マルチプロセッサシステムにおけるデバッガにより、システム全体を停止するための方式が開示されており、各プロセッサが行う割り込み処理を各スレッドの処理に置き換えることにより、全てのスレッドの停止、すなわちシステム全体の実行を停止させる機能が実現される。
【０００８】
【特許文献１】
特許１４３１２７３号公報
【０００９】
【発明が解決しようとする課題】
しかしながら、従来の方法によると、マルチスレッド型プロセッサにおける単一のスレッドのみに着目して、その１つのスレッドの実行を停止させる機能を実現することができない。
【００１０】
前記に鑑み、本発明の目的は、マルチスレッド型プロセッサにおける単一のスレッドのみの実行を停止させることである。また、単一のスレッドのみの実行を停止させるか、又は全てのスレッドの停止、すなわちシステム全体を停止させるかのいずれかを選択することを可能にすることである。
【００１１】
【課題を解決するための手段】
前記課題を解決するために、本発明に係るデバッグ制御装置は、複数のスレッドを時分割で並行処理するマルチスレッド型プロセッサ上で動作するアプリケーションソフトウェアのデバッグの制御を司るデバッガプログラムと、デバッガプログラムによるデバッグの制御を実行するための実行制御命令をデバッガプログラムから入力し、アプリケーションソフトウェアのデバッグの制御を中継するモニタプログラムとを備え、デバッガプログラムは、アプリケーションソフトウェアのデバッグ対象となるスレッドのＩＤを示すスレッドＩＤ及びそのスレッドＩＤについてのブレークポイントとなる停止アドレスを入力すると共に、マルチスレッド型プロセッサ上で並行処理されているスレッドのうちの所定の１つのスレッドに対する処理を停止させる特定スレッド停止モード又はマルチスレッド型プロセッサ上で並行処理されている全てのスレッドに対する処理を停止させる全スレッド停止モードを示す実行制御モードを入力し、実行制御モードに基づいて、実行制御命令をモニタプログラムに対して出力し、モニタプログラムは、デバッガプログラムからの実行制御命令を入力し、実行制御モードが特定スレッド停止モードである場合には、マルチスレッド型プロセッサによるアプリケーションソフトウェアに対する処理がブレークポイントに到達したことを判断すると、マルチスレッド型プロセッサ上で並行処理されているスレッドのうちの所定の１つのスレッドに対する処理を停止させる一方、実行制御モードが全スレッド停止モードである場合には、マルチスレッド型プロセッサによる前記アプリケーションソフトウェアに対する処理がブレークポイントに到達したことを判断すると、マルチプロセッサ上で並行処理されている全てのスレッドに対する処理を停止させる処理を行う。
【００１２】
本発明に係るデバッグ制御装置によると、マルチスレッド型プロセッサ上で並行処理されている単一のスレッドのみの実行を停止させることできる。このため、例えば、他のスレッドにおいては、実行を停止させることによりシステムの挙動に重大な影響があるようなスレッドに対して、その処理を停止させることなくデバッグを行うことができる。また、単一のスレッドのみを停止させるのではなく、全てのスレッドを停止させることができる。このため、例えば、あるスレッドの停止時点の他のスレッドの状態を確認する必要がある場合等に有効である。さらに、単一のスレッドのみの実行を停止させるか又は全てのスレッドの停止、すなわちシステム全体を停止させるかのいずれかを選択することができる。
【００１３】
本発明に係るデバッグ制御装置において、モニタプログラムからの指示に従って動作する割り込みコントローラをさらに備え、モニタプログラムは、実行制御モードが特定スレッド停止モードである場合には、マルチスレッド型プロセッサによるアプリケーションソフトウェアに対する処理がブレークポイントに到達したことを判断すると、マルチスレッド型プロセッサに対して割り込みを発生させるように、割り込みコントローラを設定することにより、ブレークポイントのスレッドのみを停止させると共に、他のスレッドの実行を継続させる処理を行う一方、実行制御モードが全スレッド停止モードである場合には、マルチスレッド型プロセッサによるアプリケーションソフトウェアに対する処理がブレークポイントに到達したことを判断すると、マルチスレッド型プロセッサに供給されるクロックを停止させるように、割り込みコントローラを設定することにより、マルチスレッド型プロセッサ上で並行処理されている全てのスレッドを停止させる処理を行うことが好ましい。
【００１４】
このようにすると、特定スレッド停止モードである場合には、ブレークポイント到達時に、マルチスレッド型プロセッサに対して割り込みを発生させる一方、全スレッド停止モードの場合には、ブレークポイント到達時に、マルチスレッドプロセッサに対するクロックの供給を停止させるので、マルチスレッド型プロセッサ上で並行処理されている単一のスレッドのみの実行を停止させることできる一方、全てのスレッドの停止すなわちシステム全体を停止させることができる。
【００１５】
本発明に係るデバッグ制御装置において、マルチスレッド型プロセッサ上で現在実行されているスレッドのスレッドＩＤを識別し、記憶保持するスレッドＩＤレジスタをさらに備え、デバッガプログラムは、ホストコンピュータに格納されており、モニタプログラムは、実行制御モードが特定スレッド停止モードである場合に、ブレークポイントに到達したことを判断して、マルチスレッド型プロセッサに対して割り込みを発生させた後、マルチスレッド型プロセッサのレジスタ資源を退避して、ブレークポイントに到達した時点のスレッドＩＤをスレッドＩＤレジスタから取得した後、当該スレッドＩＤ、ブレークポイントの停止アドレス及びアプリケーションソフトウェアに対する実行の停止要因を前記ホストコンピュータに格納されたデバッガプログラムに通知し、ホストコンピュータは、モニタプログラムからデバッガプログラムに通知されたスレッドＩＤ、ブレークポイントの停止アドレス及びアプリケーションソフトウェアに対する実行の停止要因に基づいて、メモリの読み出し及び書き込みを行う命令又はアプリケーションソフトウェアの実行の再開を行う命令をモニタプログラムに対して行い、モニタプログラムは、実行の再開を行う命令を受けた場合に、退避させたレジスタ資源の回復を行うことにより、アプリケーションソフトウェアに対する実行を再開することが好ましい。
【００１６】
このようにすると、マルチスレッド型プロセッサ上で並行処理されている単一のスレッドのみの実行を停止させることできると共に、その後アプリケーションソフトウェアに対する実行を再開することができる。
【００１７】
本発明に係るデバッグ装置において、マルチスレッド型プロセッサ上で現在実行されているスレッドのスレッドＩＤを識別し、記憶保持するスレッドＩＤレジスタをさらに備え、デバッガプログラムは、ホストコンピュータに格納されており、モニタプログラムは、実行制御モードが全スレッド停止モードである場合に、ブレークポイントに到達したことを判断して、マルチスレッド型プロセッサに対するクロックの供給を停止させた後、ブレークポイントの停止アドレス、アプリケーションソフトウェアに対する実行の停止要因及び全てのスレッドを停止する旨をホストコンピュータに格納されたデバッガプログラムに通知することが好ましい。
【００１８】
このようにすると、全てのスレッドの停止すなわちシステム全体を停止させることができる。
【００１９】
本発明に係るデバッグ制御装置において、デバッガプログラムは、実行制御モードが特定スレッド停止モードである場合には、スレッドＩＤ、ブレークポイントの停止アドレス及びアプリケーションソフトウェアに対する実行の停止要因の通知を受けた後、これらを表示装置に表示させる一方、実行制御モードが全スレッド停止モードである場合に、アプリケーションソフトウェアに対する実行の停止要因及び全てのスレッドを停止する旨の通知を受けた後、これらを表示装置に表示させることが好ましい。
【００２０】
このようにすると、スレッドの処理内容に応じて操作者が停止形態を変更できる利便性がある。
【００２１】
本発明に係るデバッグ制御装置の制御方法は、複数のスレッドを時分割で並行処理するマルチスレッド型プロセッサ上で動作するアプリケーションソフトウェアのデバッグの制御を司るデバッガプログラムと、デバッガプログラムによるデバッグの制御を実行するための実行制御命令をデバッガプログラムから入力し、アプリケーションソフトウェアのデバッグの制御を中継するモニタプログラムとを備えるデバッグ制御装置の制御方法であり、アプリケーションソフトウェアのデバッグ対象となるスレッドのＩＤを示すスレッドＩＤ及びそのスレッドＩＤについてのブレークポイントとなる停止アドレスをデバッガプログラムに入力すると共に、マルチスレッド型プロセッサ上で並行処理されているスレッドのうちの所定の１つのスレッドに対する処理を停止させる特定スレッド停止モード又はマルチスレッド型プロセッサ上で並行処理されている全てのスレッドに対する処理を停止させる全スレッド停止モードを示す実行制御モードをデバッガプログラムに入力するステップと、デバッガプログラムに入力するステップにおける実行制御モードに基づいて、実行制御命令をモニタプログラムに対して出力するステップと、モニタプログラムに対して出力するステップにおける実行制御命令に基づいて、実行制御モードが特定スレッド停止モードである場合には、マルチスレッド型プロセッサによるアプリケーションソフトウェアに対する処理がブレークポイントに到達したことを判断すると、マルチスレッド型プロセッサ上で並行処理されているスレッドのうちの所定の１つのスレッドに対する処理を停止させる一方、実行制御モードが全スレッド停止モードである場合には、マルチスレッド型プロセッサによるアプリケーションソフトウェアに対する処理がブレークポイントに到達したことを判断すると、マルチプロセッサ上で並行処理されている全てのスレッドに対する処理を停止させる処理を行うステップとを備える。
【００２２】
本発明に係るデバッグ制御装置の制御方法によると、マルチスレッド型プロッサ上で並行処理されている単一のスレッドのみの実行を停止させることできる。このため、例えば、他のスレッドにおいては、実行を停止させることによりシステムの挙動に重大な影響があるようなスレッドに対して、その処理を停止させることなくデバッグを行うことができる。また、単一のスレッドのみを停止させるのではなく、全てのスレッドを停止させることができる。このため、例えば、あるスレッドの停止時点の他のスレッドの状態を確認する必要がある場合等に有効である。さらに、単一のスレッドのみの実行を停止させるか又は全てのスレッドの停止、すなわちシステム全体を停止させるかのいずれかを選択することができる。
【００２３】
【発明の実施の形態】
以下、本発明の一実施形態について図１〜図３を参照しながら説明する。
【００２４】
まず、本実施形態に係るデバッグ制御装置の構成について図１を参照しながら説明する。
【００２５】
図１に示すように、ターゲットシステム１０は、アプリケーションソフトウェア１１及びモニタプログラム１２を格納する主記憶装置１３と、スレッドのＩＤ識別して記憶保持するスレッドＩＤレジスタ１４と、ＣＰＵ１５（マルチスレッド型プロセッサ）と、スイッチ１６を介してＣＰＵ１５に対してクロック信号を供給するクロック信号発振器１７と、割り込みコントローラ１８とを有する。主記憶装置１３、スレッドＩＤレジスタ１４、ＣＰＵ１５及び割り込みコントローラ１８は、バス１９に接続されている。また、ホストコンピュータ２０にはＯＳ２１及びデバッガプログラム２２とが格納されており、ホストコンピュータ２０は表示装置３０に接続されている。さらに、ターゲットシステム１０とホストコンピュータ２０とは通信路４０を介して接続されている。
【００２６】
次に、本実施形態に係るデバッグ制御装置の動作について概説する。
【００２７】
図１に示すように、まず、表示装置３０を介して操作者により入力されるアプリケーションソフトウェア１１に対する実行指示に関する入力情報は、ホストコンピュータ２０内のＯＳ２１を経由して、デバッガプログラム２２に記憶される。すなわち、デバッガプログラム２２は、入力情報として、アプリケーションソフトウェア１１のデバッグ対象となるスレッドＩＤ及びそのスレッドＩＤについてのブレークポイントとなる停止アドレスを入力すると共に、ＣＰＵ１５上で並行処理されているスレッドのうちの所定の１つのスレッドに対する処理を停止させる特定スレッド停止モード又はＣＰＵ１５上で並行処理されている全てのスレッドに対する処理を停止させる全スレッド停止モードを示す実行制御モード２３２３を入力する。デバッガプログラム２２は、入力された実行制御モード２３に応じて、アプリケーションソフトウェア１１に対してブレークポイントを設定するための指示をターゲットシステム１０内のモニタプログラム１２に通知する。
【００２８】
次に、モニタプログラム１２は割り込みコントローラ１８に対して、実行制御モード２３に応じた命令を通知する。すなわち、実行制御モード２３が特定スレッド停止モードである場合には、ＣＰＵ１５によるアプリケーションソフトウェア１１に対する処理がブレークポイントに到達したときに、ＣＰＵ１５に対して割り込みを発生させるように、割り込みコントローラに命令を通知する。一方、実行制御モード２３が全スレッド停止モードである場合には、ＣＰＵ１５上によるアプリケーションソフトウェア１１に対する処理がブレークポイントに到達したことを判断すると、ＣＰＵ１５に供給されるクロックを停止させるように、割り込みコントローラ１８に対して命令を通知する。
【００２９】
次に、割り込みコントローラ１８は、アプリケーションソフトウェア１１に対する処理がブレークポイントに到達したときに、実行制御モード２３が特定スレッド停止モードである場合には、ＣＰＵ１５に対して割り込みの発生を設定する一方、実行制御モード２３が全スレッド停止モードである場合には、ＣＰＵ１５に対してクロック信号発振器１７からのクロック供給の停止を設定する。
【００３０】
次に、アプリケーションソフトウェア１１の実行が再開されて、ブレークポイントへの到達又は未定義命令の実行により、アプリケーションソフトウェア１１の実行が停止すると、ＣＰＵ１５は実行が停止されたスレッドＩＤをスレッドＩＤレジスタ１４に記憶すると共に、モニタプログラム１２はブレークポイントの停止アドレス及び前記アプリケーションソフトウェアに対する実行の停止要因を取得する。次に、デバッガプログラム２２は、モニタプログラム１２を介して、スレッドＩＤをスレッドＩＤレジスタ１４から取得し、さらに、ブレークポイントの停止アドレス及びアプリケーションソフトウェア１１に対する実行の停止要因をモニタプログラム１２から読み出す。そして、デバッガプログラム２２は、これらのスレッドＩＤ、停止アドレス及び停止要因を表示装置３０に表示させる。
【００３１】
これにより、特定スレッド停止モードである場合には、ＣＰＵ１５上で並行処理されているスレッドのうちの所定の１つのスレッドに対する処理を停止させる一方、全スレッド停止モードである場合には、ＣＰＵ１５上で並行処理されている全てのスレッドを停止させることができる。
【００３２】
次に、上記デバッガプログラム２２のモニタプログラム１２に対するブレークポイント設定処理について図２を参照しながら説明する。
【００３３】
図２に示すように、まず、ステップａ１において、デバッガプログラム２２は、表示装置３０を介してアプリケーションソフトウェアの実行に関する操作者からの前記した入力情報を受けて、実行制御モード２３、スレッドＩＤ及び停止アドレスを記憶する。
【００３４】
次に、ステップａ２に進んで、デバッガプログラム２２は実行制御モード２３を判定し、実行制御モード２３が全スレッド停止モードであるときは、ステップａ３に進む一方、実行制御モード２３が特定スレッド停止モードであるときは、ステップａ４に進む。
【００３５】
次に、ステップａ３において、デバッガプログラム２２は、モニタプログラム１２を介して、アプリケーションソフトウェア１１の停止アドレスに対してブレークポイントを設定する。その後、ステップａ５において、デバッガプログラム２２は、ブレークポイントに到達した際にはクロック信号発振器１７からのクロックの供給を停止させるように割り込みコントローラ１８を設定する。
【００３６】
一方、ステップａ４において、デバッガプログラム２２は、モニタプログラム１２を介して、アプリケーションソフトウェア１１の停止アドレスに対してブレークポイントを設定する。その後、ステップａ６において、デバッガプログラム２２は、ブレークポイントに到達した際にＣＰＵ１５に対して割り込みを発生させるように割り込みコントローラ１８を設定する。
【００３７】
次に、上記モニタプログラム１２によるブレークポイントの通知処理について図３を参照しながら説明する。
【００３８】
まず、ステップｂ１において、モニタプログラム１２は、アプリケーションソフトウェア１１の実行がブレークポイントに到達すると、ＣＰＵ１５に割り込みを発生させて、まず、ＣＰＵ１５のレジスタ資源をメモリに退避させる。次に、ステップｂ２において、モニタプログラム１２は、スレッドＩＤレジスタ１４から現在実行していたスレッドＩＤを取得する。次に、ステップｂ３において、モニタプログラム１２は、ホストコンピュータ２０内のデバッガプログラム２２に対して、ＣＰＵ１５によるアプリケーションソフトウェア１１の停止要因、停止アドレス及びスレッドＩＤを通知する。
【００３９】
次に、ステップｂ４において、モニタプログラム１２は、デバッガプログラム２２から停止要因、停止アドレス及びスレッドＩＤの通知に基づいたコマンドをホストコンピュータ２０から受信する。次に、ステップｂ５において、モニタプログラム１２は受信したコマンドの種別を解析する。そして、ステップｂ６において、モニタプログラム１２によって、解析後のコマンドの種別が判定される。コマンド種別がメモリリード又はメモリライト（以下、メモリＲ／Ｗという）を指示するコマンドである場合は、ステップｂ７において、指定されるアドレスに対してメモリＲ／Ｗの動作を行う。一方、コマンド種別が実行の再開を指示するコマンドである場合は、ステップｂ８において、退避されたレジスタ資源を回復して、アプリケーションソフトウェア１１の実行動作に復帰する。
【００４０】
ここで、前記一連のモニタプログラム１２の実行は、マルチスレッド型プロセッサにおいては、１つのスレッド内の処理として実行されることである。すなわち、マルチスレッド型プロセッサにおいては、モニタプログラム１２はスレッド内の処理の延長で割り込み処理として実行されるため、モニタプログラム１２の実行途中にスレッドの切替えは矛盾なく行われるので、他のスレッドの実行が停止されることはない。単一のスレッド内においては、デバッガプログラム２２からのコマンド待ちをしている間、実質的にアプリケーションソフトウェア１１の処理を停止させている。
【００４１】
次に、デバッガプログラム２２によるブレークポイントの通知処理について図４を参照しながら説明する。
【００４２】
図４に示すように、デバッガプログラム２２は、ステップｃ１において、通常のデバッグ処理を行っているが、ターゲットシステム１０内のＣＰＵ１５又はモニタプログラム１２からＣＰＵ１５によるアプリケーションソフトウェア１１の停止要因、停止アドレス及びスレッドＩＤを受信すると（ステップｃ２）、アプリケーションソフトウェア１１の停止要因、停止アドレス及びスレッドＩＤを表示装置３０に表示させる（ステップｃ３）。
【００４３】
最後に、デバッガプログラム２２により表示装置３０に表示される画面について図５を参照しながら説明する。
【００４４】
図５に示すように、表示装置３０の画面には、操作者によりアプリケーションプログラム１１の現在の実行箇所５１及びブレークポイントの設定箇所５２をソースコードの位置が表示されており、一般的に「コードウィンドウ」と称されるものである。また、これとは別に「コマンドウィンドウ」等と称されるウィンドウ上で操作者がコマンドを入力することにより、ブレークポイントの設定等をデバッガプログラム２２に指示することを可能にする。
【００４５】
以上のように本実施形態によると、単一のスレッドに着目してデバッグを行う場合の特定スレッド停止モードである場合には、アプリケーションソフトウェア１１におけるスレッド内の任意の箇所にブレークポイントを設定した後、アプリケーションソフトウェア１１の実行がブレークポイントで停止したときに、そのスレッドのみの実行を停止させると共に、他のスレッドの実行を継続させることができる。これにより、他のスレッドにおいて、実行停止によりシステムの挙動に重大な影響を与えるスレッドがあるような場合に、そのスレッドの実行を停止をさせることなくデバッグを行うことができる。
【００４６】
また、システムの全体に着目してデバッグを行う全スレッド停止モードである場合には、アプリケーションソフトウェア１１におけるスレッド内の任意の箇所にブレークポイントを設定した後、アプリケーションソフトウェア１１がブレークポイントで停止したときに、そのスレッドのみの実行を停止させるのではなく、全てのスレッドの実行を停止させることができる。これにより、例えば、あるスレッドが停止した時点に他のスレッドの実行状態を確認する必要がある場合等に特に有効である。
【００４７】
【発明の効果】
本発明によると、マルチスレッド型プロセッサ上で並行処理されている単一のスレッドのみの実行を停止させることできる。このため、例えば、他のスレッドにおいては、実行を停止させることによりシステムの挙動に重大な影響があるようなスレッドに対して、その処理を停止させることなくデバッグを行うことができる。また、単一のスレッドのみを停止させるのではなく、全てのスレッドを停止させることができる。このため、例えば、あるスレッドの停止時点の他のスレッドの状態を確認する必要がある場合等に有効である。さらに、単一のスレッドのみの実行を停止させるか又は全てのスレッドの停止、すなわちシステム全体を停止させるかのいずれかを選択することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るデバッグ制御装置を示すブロック図である。
【図２】デバッガプログラムによるブレークポイント設定処理を示すフローチャートである。
【図３】モニタプログラムによるブレークポイント通知処理を示すフローチャートである。
【図４】デバッガプログラムによるブレークポイント通知処理を示すフローチャートである。
【図５】表示装置の表示画面を示す図である。
【符号の説明】
１０  ターゲットシステム
１１  アプリケーションソフトウェア
１２  モニタプログラム
１３  主記憶装置
１４  スレッドＩＤレジスタ
１５  ＣＰＵ（マルチスレッド型プロセッサ）
１６  スイッチ
１７  クロック信号発振器
１８  割り込みコントローラ
１９  バス
２０  ホストコンピュータ
２１  ＯＳ
２２  デバッガプログラム
２３  実行制御モード
３０  表示装置
４０  通信路
【図１】
2004318658.tif 000003
【図２】
2004318658.tif 000004
【図３】
2004318658.tif 000005
【図４】
2004318658.tif 000006
【図５】
2004318658.tif 000007