(57)【特許請求の範囲】
【請求項１】
複数のタスクが時分割に切替えられて、連続的に実行される実行環境下で、少なくとも２つ以上のタスクに共用されるメモリ領域内の一部の記録内容を書き換えるデバッグ設定と、書き換えた記録内容を元の記録内容に戻すデバッグ解除を随時行ってデバッグを実行するデバッグシステムであって、
前記各タスクに使用されるメモリ領域の物理アドレス空間範囲を記憶しているアドレス空間記憶手段と、
デバッグ設定の対象となるタスクとデバッグ設定が行われる物理アドレスを特定するアドレス情報との対応関係を示す設定情報を記憶している設定情報記憶手段と、
タスク切替時において、次のタスクが前記設定情報において、デバッグ設定の対象となっている場合に、
前記設定情報においてデバッグ設定の対象となっている、当該次のタスクを含む全てのタスクについて各タスクのアドレス情報の特定する物理アドレスにおける記録内容をデバッグ設定後の状態にするデバッグ設定制御手段と、
次のタスクと、前記設定情報においてデバッグ設定の対象となっている次のタスク以外のタスクとにそれぞれ使用される物理アドレス空間範囲が重複し、かつ、次のタスクのアドレス情報の特定する物理アドレスが、当該次のタスク以外のタスクのアドレス情報の特定する物理アドレスと一致しない場合に、当該次のタスク以外のタスクのアドレス情報の特定する物理アドレスにおける記録内容をデバッグ解除後の状態にするデバッグ解除処理を実行し、次のタスクと前記設定情報においてデバッグ設定の対象となっている次のタスク以外のタスクとにそれぞれ使用される物理アドレス空間範囲が重複し、かつ、次のタスクのアドレス情報の特定する物理アドレスが、当該次のタスク以外のタスクのアドレス情報の特定する物理アドレスと一致する場合には、当該次のタスク以外のタスクについては、前記デバッグ解除処理の実行を抑止するデバッグ解除制御手段と、
を備えることを特徴とするデバッグシステム。
【請求項２】
複数のタスクが時分割に切替えられて、連続的に実行される実行環境下で、少なくとも２つ以上のタスクに共用されるメモリ領域内の一部の記録内容を書き換えるデバッグ設定と、書き換えた記録内容を元の記録内容に戻すデバッグ解除を随時行ってデバッグを実行するデバッグシステムであって、
前記各タスクに使用されるメモリ領域の物理アドレス空間範囲を記憶しているアドレス空間記憶手段と、
デバッグ設定の対象となるタスクとデバッグ設定が行われる物理アドレスを特定するアドレス情報との対応関係を示す設定情報を記憶している設定情報記憶手段と、
タスク切替時期が到来する毎に、前記設定情報において、切替前のタスクと次のタスクの両者がデバッグ設定の対象となっているか否か及び両者によってそれぞれ使用される物理アドレス空間範囲が重複しているか否かを判定し、
両者がデバッグ設定の対象となっており、かつ、両者によってそれぞれ使用される物理アドレス空間範囲が重複している場合に、両者の各アドレス情報によって特定される物理アドレスが一致するか否かを判定し、
タスク実行開始時に、実行開始するタスクが、前記設定情報において、デバッグ設定の対象となっている場合に、当該実行開始タスクのアドレス情報の特定する物理アドレスにおいてのみ、デバッグ設定を行い、その後、タスク切替時期が到来する毎に、前記設定情報において、次のタスクがデバッグ設定の対象となっている場合に、当該次のタスクのアドレス情報の特定する物理アドレスにおいてのみ、デバッグ設定を行い、切替前のタスクと次のタスクの両者の各アドレス情報によって特定される物理アドレスが一致する場合に限り、当該デバッグ設定を抑止するデバッグ設定制御手段と、
タスク切替時期において、切替前のタスクと次のタスクの両者の各アドレス情報によって特定される物理アドレスが不一致である場合に限り、切替前のタスクに係る物理アドレスにおいてデバッグ解除を行うデバッグ解除制御手段と、
を備えることを特徴とするデバッグシステム。
【請求項３】
複数のタスクが時分割に切替えられて、連続的に実行される実行環境下で、少なくとも２つ以上のタスクに共用されるメモリ領域内の一部の記録内容を書き換えるデバッグ設定と、書き換えた記録内容を元の記録内容に戻すデバッグ解除を随時行ってデバッグを実行するデバッグ装置に用いるデバッグ方法であって、
前記デバッグ装置は、
前記各タスクに使用されるメモリ領域の物理アドレス空間範囲を記憶しているアドレス空間記憶手段と、
デバッグ設定の対象となるタスクとデバッグ設定が行われる物理アドレスを特定するアドレス情報との対応関係を示す設定情報を記憶している設定情報記憶手段と
を備え、
前記デバッグ方法は、
タスク切替時において、次のタスクが前記設定情報において、デバッグ設定の対象となっている場合に、
前記設定情報においてデバッグ設定の対象となっている、当該次のタスクを含む全てのタスクについて各タスクのアドレス情報の特定する物理アドレスにおける記録内容をデバッグ設定後の状態にするデバッグ設定制御ステップと、
次のタスクと、前記設定情報においてデバッグ設定の対象となっている次のタスク以外のタスクとにそれぞれ使用される物理アドレス空間範囲が重複し、かつ、次のタスクのアドレス情報の特定する物理アドレスが、当該次のタスク以外のタスクのアドレス情報の特定する物理アドレスと一致しない場合に、当該次のタスク以外のタスクのアドレス情報の特定する物理アドレスにおける記録内容をデバッグ解除後の状態にするデバッグ解除処理を実行し、次のタスクと前記設定情報においてデバッグ設定の対象となっている次のタスク以外のタスクとにそれぞれ使用される物理アドレス空間範囲が重複し、かつ、次のタスクのアドレス情報の特定する物理アドレスが、当該次のタスク以外のタスクのアドレス情報の特定する物理アドレスと一致する場合には、当該次のタスク以外のタスクについては、前記デバッグ解除処理の実行を抑止するデバッグ解除制御ステップと、
を含むことを特徴とするデバッグ方法。
【請求項４】
複数のタスクが時分割に切替えられて、連続的に実行される実行環境下で、少なくとも２つ以上のタスクに共用されるメモリ領域内の一部の記録内容を書き換えるデバッグ設定と、書き換えた記録内容を元の記録内容に戻すデバッグ解除を随時行ってデバッグを実行するデバッグ装置に用いるデバッグ方法であって、
前記デバッグ装置は、
前記各タスクに使用されるメモリ領域の物理アドレス空間範囲を記憶しているアドレス空間記憶手段と、
デバッグ設定の対象となるタスクとデバッグ設定が行われる物理アドレスを特定するアドレス情報との対応関係を示す設定情報を記憶している設定情報記憶手段と
を備え、
前記デバッグ方法は、
タスク切替時期が到来する毎に、前記設定情報において、切替前のタスクと次のタスクの両者がデバッグ設定の対象となっているか否か及び両者によってそれぞれ使用される物理アドレス空間範囲が重複しているか否かを判定し、
両者がデバッグ設定の対象となっており、かつ、両者によってそれぞれ使用される物理アドレス空間範囲が重複している場合に、両者の各アドレス情報によって特定される物理アドレスが一致するか否かを判定し、
タスク実行開始時に、実行開始するタスクが、前記設定情報において、デバッグ設定の対象となっている場合に、当該実行開始タスクのアドレス情報の特定する物理アドレスにおいてのみ、デバッグ設定を行い、その後、タスク切替時期が到来する毎に、前記設定情報において、次のタスクがデバッグ設定の対象となっている場合に、当該次のタスクのアドレス情報の特定する物理アドレスにおいてのみ、デバッグ設定を行い、切替前のタスクと次のタスクの両者の各アドレス情報によって特定される物理アドレスが一致する場合に限り、当該デバッグ設定を抑止するデバッグ設定制御ステップと、
タスク切替時期において、切替前のタスクと次のタスクの両者の各アドレス情報によって特定される物理アドレスが不一致である場合に限り、切替前のタスクに係る物理アドレスにおいてデバッグ解除を行うデバッグ解除制御ステップと、
を含むことを特徴とするデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチタスク環境のデバッグシステム及び方法に関し、特に、複数のタスクが同一メモリにアクセスする環境下において、当該メモリの記録内容の書き換えを随時行った場合に、当該メモリへアクセスする他のタスクの動作に影響を与えないように制御する技術に関する。
【背景技術】
【０００２】
近年、情報家電や自動車制御機器の高機能化、高性能化に伴い、システムに組込まれるソフトウェアの大規模化、複雑化が進んでいる。そのため、組込みソフトウェア分野において、Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ（ＯＳ）の利用が増加しており、ＯＳのほとんどがマルチタスクＯＳである。
このマルチタスクＯＳを利用することにより、同時に複数の処理を並行して実行させることが可能となる。具体的には、マイクロコンピュータの処理時間を分割し、複数のアプリケーションプログラムを順番に割り当てることにより、複数の処理を同時に処理しているようにみせている。
【０００３】
マルチタスクＯＳ上で動作するアプリケーションプログラムは、タスクと呼ばれる実行単位として処理される。ＯＳによってはタスクをプロセスと呼ぶことがあり、さらに、同じプロセスに属し、マイクロコンピュータ資源を共有する実行単位をスレッドと呼ぶが、本発明では、特にプロセスとスレッドという実行単位を区別して使わない限り、マルチタスク環境で動作する実行単位をタスクと呼ぶ。
【０００４】
マルチタスク環境で動作する複数のタスクは、独立したメモリ資源を持ちマイクロコンピュータで実行されるが、特定の条件において、メモリ資源を共有することがある。
ＬｉｎｕｘというマルチタスクＯＳでは、１つのアプリケーションプログラムが複数のプロセスとして起動された場合と、１つのプロセスが複数のスレッドとして起動された場合、同一のメモリ資源を共有する。
【０００５】
マイクロコンピュータがメモリ管理ユニット（ＭＭＵ）を使用する場合、Ｌｉｎｕｘは仮想記憶機能を使用し、タスクは論理アドレス空間で動作する。１つのアプリケーションプログラムが複数のプロセスとして起動される場合、それぞれのプロセスは異なった論理アドレス空間で動作するが、物理アドレス空間は共有される。また、１つのプロセスが複数のスレッドとして起動される場合、同じ論理アドレス空間で動作し、物理アドレス空間は共有される。
【０００６】
このように、マルチタスク環境で複数のタスクがメモリ資源を共有する場合、デバッガを用いてデバッグ対象のタスクのブレーク設定やメモリの記録内容の書き換えを行うと、デバッグ対象外のタスクの動作に影響を与えることになる。
具体的には、デバッグ対象外のタスクを実行中に他のタスクについて設定されたブレーク設定に基づくブレーク停止が発生したり、デバッグ用に書き換えられた命令が実行されて、実行中のタスクの動作に不具合が生じてしまう。
【０００７】
このような不具合を防止する技術として、特許文献１にデバッグ対象のタスクに対してのみ、当該タスクについて設定されたブレーク設定に基づくブレーク停止を発生させ、デバッグ対象外のタスクに対しては、デバッグ対象のタスクと共有するメモリにおけるブレーク設定を無効化する処理を行い、その後デバッグ対象外のタスクの実行を再開させる技術が開示されている。
【０００８】
これにより、デバッグ対象外のタスク実行中における不要なブレークの発生を抑制し、当該タスクを正常稼動させることができ、マルチタスク環境下でのデバッグ効率を向上することができる。
【特許文献１】特開２０００−１７２５３２
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上記従来技術においては、デバッグ対象外のタスクでブレークが発生した場合に再実行を行う必要があり、再実行処理に時間がかかり、デバッグ対象外のタスクのリアルタイム性、すなわち、定められた時間要求を満たして動作することを阻害するという問題が生じる。
本発明は、上記の課題を解決するもので、デバッグ対象のタスクへのブレーク設定が、デバッグ対象外のタスクの動作に影響を与えない、マルチタスク環境のデバッグシステム及び方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、複数のタスクが時分割に切替えられて、連続的に実行される実行環境下で、少なくとも２つ以上のタスクに共用されるメモリ領域内の一部の記録内容を書き換えるデバッグ設定と、書き換えた記録内容を元の記録内容に戻すデバッグ解除を随時行ってデバッグを実行するデバッグシステムであって、前記各タスクに使用されるメモリ領域の物理アドレス空間範囲を記憶しているアドレス空間記憶手段と、デバッグ設定の対象となるタスクとデバッグ設定が行われる物理アドレスを特定するアドレス情報との対応関係を示す設定情報を記憶している設定情報記憶手段と、タスク切替時において、次のタスクが前記設定情報において、デバッグ設定の対象となっている場合に、当該次のタスクのアドレス情報の特定する物理アドレスにおける記録内容をデバッグ設定後の状態にし、当該次のタスク以外のタスクのアドレス情報の特定する物理アドレスの内、当該次のタスクに使用される物理アドレス空間範囲内に属する物理アドレスにおける記録内容をデバッグ解除後の状態にし、次のタスクがデバッグ設定の対象となっていない場合に、当該次のタスク以外のタスクのアドレス情報の特定する物理アドレスの内、当該次のタスクに使用される物理アドレス空間範囲内に属する物理アドレスにおける記録内容をデバッグ解除後の状態にする設定制御手段とを備える。
【００１１】
又、本発明は、複数のタスクが時分割に切替えられて、連続的に実行される実行環境下で、少なくとも２つ以上のタスクに共用されるメモリ領域内の一部の記録内容を書き換えるデバッグ設定と、書き換えた記録内容を元の記録内容に戻すデバッグ解除を随時行ってデバッグを実行するデバッグ装置に用いるデバッグ方法であって、前記デバッグ装置は、前記各タスクに使用されるメモリ領域の物理アドレス空間範囲を記憶しているアドレス空間記憶手段と、デバッグ設定の対象となるタスクとデバッグ設定が行われる物理アドレスを特定するアドレス情報との対応関係を示す設定情報を記憶している設定情報記憶手段とを備え、前記デバッグ方法は、タスク切替時において、次のタスクが前記設定情報において、デバッグ設定の対象となっている場合に、当該次のタスクのアドレス情報の特定する物理アドレスにおける記録内容をデバッグ設定後の状態にし、当該次のタスク以外のタスクのアドレス情報の特定する物理アドレスの内、当該次のタスクに使用される物理アドレス空間範囲内に属する物理アドレスにおける記録内容をデバッグ解除後の状態にし、次のタスクがデバッグ設定の対象となっていない場合に、当該次のタスク以外のタスクのアドレス情報の特定する物理アドレスの内、当該次のタスクに使用される物理アドレス空間範囲内に属する物理アドレスにおける記録内容をデバッグ解除後の状態にする設定制御ステップを含むこととしてもよい。
【発明の効果】
【００１２】
本発明は、上記構成を備えることにより、タスク切替時に次のタスクに使用される物理アドレス空間範囲内において、デバッグ設定がされた状態になっている物理アドレスにおける記録内容は、デバッグ解除後の状態にされるので、デバッグ対象となっている、次のタスク以外の他のタスクにおけるデバッグ設定が、次のタスクの動作に影響を与えないように制御することができる。
【００１３】
ここで、前記設定制御手段は、タスク実行開始時に、実行開始するタスクが、前記設定情報において、デバッグ設定の対象となっている場合に、当該実行開始タスクのアドレス情報の特定する物理アドレスにおいてのみ、デバッグ設定を行う第１設定手段と、その後、タスク切替時期が到来する毎に、前記設定情報において、次のタスクがデバッグ設定の対象となっている場合に当該タスクのアドレス情報の物理アドレスおいてのみ、デバッグ設定を行う第２設定手段と、前記設定情報において、切替前のタスクがデバッグ設定の対象となっている場合に、当該デバッグ設定の物理アドレスにおいて、デバッグ解除をする解除手段とを有することとしてもよい。
【００１４】
又、前記設定制御ステップは、タスク実行開始時に、実行開始するタスクが、前記設定情報において、デバッグ設定の対象となっている場合に、当該実行開始タスクのアドレス情報の特定する物理アドレスにおいてのみ、デバッグ設定を行う第１設定ステップと、その後、タスク切替時期が到来する毎に、前記設定情報において、次のタスクがデバッグ設定の対象となっている場合に当該タスクのアドレス情報の物理アドレスおいてのみ、デバッグ設定を行う第２設定ステップと、前記設定情報において、切替前のタスクがデバッグ設定の対象となっている場合に、当該デバッグ設定の物理アドレスにおいて、デバッグ解除をする解除ステップとを含むこととしてもよい。
【００１５】
これにより、デバッグ設定の対象となっているタスクの物理アドレスにおいてのみ、デバッグの設定と解除が行われるので、タスク切替時におけるデバッグ設定及び解除の処理を最小限にすることができ、デバッグの設定及び解除に要する処理負荷を最小限にとどめることができる。
ここで、前記設定制御手段は、タスク切替時期が到来する毎に、前記設定情報において、切替前のタスクと次のタスクの両者がデバッグ設定の対象となっているか否かを判定する設定判定手段と、両者がデバッグ設定の対象となっている場合に、両者の各アドレス情報によって特定される物理アドレスが一致するか否かを判定するアドレス判定手段とを有し、両者の物理アドレスが一致しない場合に限り、前記第２設定手段は、前記デバッグ設定を行い、前記解除手段は、前記デバッグ解除をすることとしてもよい。
【００１６】
又、前記設定制御ステップは、タスク切替時期が到来する毎に、前記設定情報において、切替前のタスクと次のタスクの両者がデバッグ設定の対象となっているか否かを判定する設定判定ステップと、両者がデバッグ設定の対象となっている場合に、両者の各アドレス情報によって特定される物理アドレスが一致するか否かを判定するアドレス判定ステップとを含み、両者の物理アドレスが一致しない場合に限り、前記第２設定ステップは、前記デバッグ設定を行い、
前記解除ステップは、前記デバッグ解除をすることとしてもよい。
【００１７】
これにより、次のタスクと切替前のタスクのデバッグ設定が、同一の物理アドレスにおいて行われている場合には、タスク切替時におけるデバッグ設定及び解除の処理を省くことができるので、タスク切替時における処理負荷を軽減することができる。
ここで、前記設定制御手段は、タスク切替時期が到来する毎に、切替前のタスクに使用される物理アドレス空間範囲と次のタスクに使用される物理アドレス空間範囲とが重複するか否かを判定する重複判定手段を有し、重複する場合に限り、前記解除手段は、前記デバッグ解除をすることとしてもよい。
【００１８】
又、前記設定制御ステップは、タスク切替時期が到来する毎に、切替前のタスクに使用される物理アドレス空間範囲と次のタスクに使用される物理アドレス空間範囲とが重複するか否かを判定する重複判定ステップを含み、重複する場合に限り、前記解除ステップは、前記デバッグ解除をすることとしてもよい。
これにより、切替前のタスクが次のタスクと共通する物理アドレス空間範囲を使用しない場合には、タスク切替時におけるデバッグ解除処理を省くことができるので、デバッグ解除処理に要する処理負荷を軽減することができる。
【発明を実施するための最良の形態】
【００１９】
＜構成＞
（デバッグシステムの構成）
図１は、本実施の形態に係るデバッグシステム１００の構成を示す機能ブロック図である。デバッグシステム１００は、端末１〜３と、デバッグ装置１０から構成される。
各端末は、デバッグ装置と通信回線で接続され、通信回線を介して各種コマンドをデバッグ装置１０に出力し、当該コマンドに基づく処理結果をデバッグ装置１０から受取り、端末の表示部（図外）に表示させる。  
【００２０】
デバッグ装置１０は、各端末からのアプリケーションプログラム実行コマンドの入力に応じて、アプリケーションプログラムをＲＡＭ上の物理アドレス空間にロードし、当該アプリケーションプログラムをマルチタスクＯＳ上で実行することにより、タスクを実行し、実行結果を当該アプリケーションプログラムの実行を要求した端末に送信する。
端末からのコマンドが、デバッグ対象となるアプリケーションプログラムの実行命令である場合には、デバッグ装置１０は、後述するブレーク設定表において登録されている論理アドレス空間上のアドレスに対応付けられている、ＲＡＭ１２の物理アドレス空間上のアドレスに記録されている元命令をブレーク命令に書き換えた後、デバッグ対象となるアプリケーションプログラムをマルチタスクＯＳ１１上で実行し、ブレーク命令が検出されると、当該アプリケーションプログラムを停止し、処理結果を当該端末に送信する。
【００２１】
図１では、端末１からのアプリケーションプログラム実行コマンドの入力に応じて、タスク１が実行され、端末２からのアプリケーション実行コマンドの入力に応じて、タスク２が実行され、端末３からのアプリケーション実行コマンドの入力に応じてタスク３が実行されていることを具体例として示している。
又、図１では、タスク１、タスク２、タスク３がＲＡＭ１２上のメモリ領域を共用していることを示している。
（デバッグ装置の構成）
図２は、デバッグ装置１０の構成を示す機能ブロック図である。デバッグ装置１０は、マルチタスクＯＳ部１０１、ブレーク設定部１０２、ブレーク解除部１０３、通信部１０４、アプリケーション記憶部１０５、ページテーブル記憶部１０６、タスク管理情報記憶部１０７、ブレーク設定表記憶部１０８から構成される。
【００２２】
（マルチタスクＯＳ部１０１）
ＣＰＵ、ＭＭＵ（memory management unit）、マルチタスクＯＳ１１を含むＲＯＭ、ＲＡＭ１２から構成され、各アプリケーションプログラムの実行、アプリケーションプログラムに起因するタスクの実行の時分割制御を行う。
ＭＭＵは、論理アドレスから物理アドレスへの変換、ＲＯＭ、ＲＡＭ１２を管理する。
【００２３】
（アプリケーション記憶部１０５）
デバッグ対象となるアプリケーションプログラムとデバッグ対象外のアプリケーションプログラムとを記憶している。
（ページテーブル記憶部１０６）
ページテーブルを記憶している。
【００２４】
ここで、「ページテーブル」とは、マルチタスクＯＳ部１０１によって作成され、管理されるテーブルであり、実行中のタスクが参照する論理アドレスをＲＡＭ１２上の物理アドレスに変換するためのテーブルのことをいい、具体的には、マルチタスクＯＳ部１０１が、タスクが参照する論理アドレス空間範囲を論理アドレスの範囲に応じて複数のブロック（以下、各ブロックを「論理ページ」という。）に分割し、分割したブロック単位で対応する大きさの物理アドレス空間範囲（以下、「物理ページ」という。）を割り当て、ページテーブルには、タスク毎に、各論理ページと当該論理ページに割当てられた物理ページにおける先頭の物理アドレス（以下、「ベースアドレス」という。）との対応関係が示されている。
【００２５】
論理ページのサイズとしては、例えば４ＫＢｙｔｅが用いられ、この場合には、論理アドレスの下位１２ビットがオフセット値として、対応する物理ページのベースアドレスに加えられ、論理アドレスから物理アドレスへの変換が行われる。
図４は、ページテーブルをイメージ的に表した図である。図４に示すように、論理アドレスの範囲に応じて、各論理アドレスが属する論理ページが特定され、さらに、特定された各論理ページについて、同じサイズの物理ページがＲＡＭ１２上に割当てられる。
【００２６】
図６は、マルチタスクＯＳ部１０１によって行われるアドレス変換の過程をイメージ的に表した図である。図６では、タスク１の参照する論理アドレスＫが物理アドレスに変換される過程を具体例として示している。
図６では、タスク１の参照する論理アドレスＫ（図６の６０１）について、ページテーブル（図６の６０２、説明の便宜上、６０２の内容は、ここでは、図４のページテーブルの内容としている。）を用いて、当該論理アドレスＫが属する論理ページＬ１が特定され（図６の６０３）、さらに当該ページテーブルを用いて、論理ページＬ１に対応付けられている物理ページＰＨ１におけるベースアドレス１が特定され（図６の６０４）、特定されたベースアドレス１と論理アドレスＫのオフセット値に基づいて、論理アドレスＫに対応する物理アドレスが算出（図６の６０５）される過程が示されている。
【００２７】
（タスク管理情報記憶部１０７）
タスク管理情報を記憶している。
ここで、「タスク管理情報」とは、時分割制御の対象となるタスクの識別子と、タスクの実行状態を示す状態情報と、タスクのコンテキストの退避先を示すスタックポインタの値と、現時点におけるタスクの実行の優先順位を示すタスク優先度との対応関係を示す情報のことをいう。タスク管理情報は、マルチタスクＯＳ部１０１によって作成され、管理される。
【００２８】
図５は、タスク管理情報の具体例を示す。
（ブレーク設定部１０２）
ブレーク設定の登録処理及びブレーク設定処理を行う。
ここで、「ブレーク設定」とは、アプリケーションプログラムの実行を途中で停止する命令と停止するポイントを論理アドレスで指定することをいう。
１．ブレーク設定の登録処理
端末からブレーク設定を登録するための登録コマンドが通信部１０４を介して入力されると、登録コマンドを解析して、登録コマンドの指定するタスク識別子、ブレーク設定する論理アドレス、ブレーク種別を特定し、特定したタスク識別子、論理アドレス、ブレーク種別をブレーク設定表に登録する。
【００２９】
ブレーク設定表に登録するブレーク設定は、１つのタスクについて、複数あってもよい。
ここで、「ブレーク設定表」とは、タスクの識別子と当該タスクについて設定されるブレーク設定の論理アドレスと、ブレーク種別との対応関係を示すテーブルのことをいう。
又、「ブレーク種別」とは、ブレーク設定の種類がソフトウェアブレークか、ハードウェアブレークを示す識別子のことをいう。
【００３０】
「ソフトウェアブレーク」とは、アプリケーションプログラムにおいて、特定の論理アドレスの元命令を、当該アプリケーションプログラムを停止する命令（以下、「ブレーク命令」という。）に書き換えることにより、アプリケーションプログラムの実行を途中で停止するブレーク設定のことをいう。
又、「ハードウェアブレーク」とは、ＣＰＵのレジスタにアプリケーションプログラムにおける停止位置を示す論理アドレス（以下、「ブレークアドレス」という。）を設定し、ＣＰＵが設定された論理アドレスの参照またはこの論理アドレスの命令の実行が行われた際に、アプリケーションプログラムの実行を途中で停止するブレーク設定のことをいう。
【００３１】
ブレーク設定がソフトウェアブレークである場合には、ブレーク命令によって書き換えられる元命令は、ブレーク設定表に退避され、対応するタスク識別子及び論理アドレスと対応付けてブレーク設定表に格納される。
２．ブレーク設定処理
マルチタスクＯＳ部１０１によってタスクの実行が開始される時又はタスクの切替が行われる時に、次に実行予定のタスクの識別子をマルチタスクＯＳ部１０１より取得して次に実行予定のタスク識別子を特定し、特定したタスク識別子が後述するブレーク設定表に登録されているか否かを判定し、登録されている場合には、さらにブレーク設定表において、当該タスクの識別子に対応付けられているブレーク種別に基づいて、登録されているブレーク設定がソフトウェアブレークか、ハードウェアブレークかを判別し、ハードウェアブレークの場合には、レジスタにブレーク設定表に登録されている論理アドレスを設定し、ソフトウェアブレークの場合、ブレーク設定表に登録されている論理アドレスに対応するＲＡＭ１２上の物理アドレスをマルチタスクＯＳ部１０１より取得し、ＲＡＭ１２上において、当該物理アドレスに格納されている元命令をブレーク設定表に退避し、当該物理アドレスにブレーク命令を書き込む。
【００３２】
（ブレーク解除部１０３）
ブレーク設定の削除処理及びブレーク設定解除処理を行う。
１．ブレーク設定の削除処理
端末からブレーク設定を削除するための削除コマンドが通信部１０４を介して入力されると、削除コマンドを解析して、削除コマンドの指定するタスク識別子、論理アドレス、ブレーク種別を特定し、特定したタスク識別子、論理アドレス、ブレーク種別を有するブレーク設定をブレーク設定表から削除する。
２．ブレーク設定解除処理
マルチタスクＯＳ部１０１によってタスクの切替が行われる時に、停止したタスクの識別子をマルチタスクＯＳ部１０１より取得し、取得したタスク識別子がブレーク設定表に登録されているか否かを判定し、登録されている場合には、さらにブレーク設定表において、当該タスクの識別子に対応付けられているブレーク種別に基づいて、登録されているブレーク設定がソフトウェアブレークか、ハードウェアブレークかを判別し、ハードウェアブレークの場合には、レジスタに設定されているブレークアドレスの設定を解除し、ソフトウェアブレークの場合、ブレーク設定表に登録されている論理アドレスに対応するＲＡＭ１２上の物理アドレスをマルチタスクＯＳ部１０１より取得し、ＲＡＭ１２上の当該物理アドレスにブレーク設定表に退避されている元命令を書き込み、ブレーク設定を解除する。
【００３３】
（通信部１０４）
各端末から入力された各種コマンドを受信し、マルチタスクＯＳ部１０１、ブレーク設定部１０２、ブレーク解除部１０３、通信部１０４に出力する。
（ブレーク設定表記憶部１０８）
ブレーク設定表を記憶している。図３は、ブレーク設定表の具体例を示す。
＜動作＞
（ブレーク設定の登録処理）
図８は、ブレーク設定部１０２の行うブレーク設定登録処理の動作を示すフローチャートである。
【００３４】
ブレーク設定部１０２は、端末からブレーク設定を登録するための登録コマンドが通信部１０４を介して入力されると（ステップＳ８０１）、登録コマンドを解析し（ステップＳ８０２）、登録コマンドの指定するタスク識別子、ブレーク設定する論理アドレス、ブレーク種別を特定し（ステップＳ８０３）、特定したタスク識別子、論理アドレス、ブレーク種別をブレーク設定表に登録する（ステップＳ８０４）。
（ブレーク設定の削除処理）    
図２１は、ブレーク解除部１０３の行うブレーク設定削除処理の動作を示すフローチャートである。
【００３５】
ブレーク解除部１０３は、端末からブレーク設定を削除するための削除コマンドが通信部１０４を介して入力されると（ステップＳ２１０１）、削除コマンドを解析し（ステップＳ２１０２）、削除コマンドの指定するタスク識別子、論理アドレス、ブレーク種別を特定し（ステップＳ２１０３）、特定したタスク識別子、論理アドレス、ブレーク種別を有するブレーク設定をブレーク設定表から削除する（ステップＳ２１０４）。
（タスク切替処理Ａ）
図７は、マルチタスクＯＳ部１０１の行うタスク切替処理Ａの動作を示すフローチャートである。
【００３６】
マルチタスクＯＳ部１０１は、ディスパッチ（タスク切替）が発生すると（ステップＳ７０１）、実行中のタスクを停止し（ステップＳ７０２）、実行中のタスクのコンテキスト（レジスタセット、プログラムカウンタ、ステータスレジスタ等）を当該タスクに割当てたＲＡＭ１２上のメモリ領域（スタック領域）に格納して、コンテキストを退避し（ステップＳ７０３）、タスク管理情報記憶部１０７に記憶されているタスク管理情報において、該当するタスク識別子に対応付けられているスタックポインタの値を退避先のスタックポインタの値に書き換え、そのタスク優先度と状態情報を更新し、ブレーク設定部１０２に制御を移行し、後述するブレーク設定処理Ａを実行させ（ステップＳ７０４）、さらにブレーク解除部１０３に制御を移行し、後述するブレーク解除処理Ａを実行させた後（ステップＳ７０５）、タスク管理情報のタスク優先度を参照して、タスク優先度が最上位のタスクを次に実行すべきタスクと決定し、当該タスクのスタックポインタの示すコンテキストの退避先から当該タスクのコンテキストを読出し、コンテキストを復帰させ（ステップＳ７０６）、当該タスクの実行を開始する（ステップＳ７０７）。
（ブレーク設定処理Ａ）
図９は、ブレーク設定部１０２の行うブレーク設定処理Ａの動作を示すフローチャートである。
【００３７】
ブレーク設定部１０２は、マルチタスクＯＳ部１０１より、次に実行予定のタスクのタスク識別子を取得して次に実行予定のタスク識別子を特定し、さらにブレーク設定表記憶部１０８に記憶されているブレーク設定表を参照して、当該タスク識別子についてのブレーク設定の登録の有無を検索し（ステップＳ９０１）、ブレーク設定の登録がある場合には（ステップＳ９０２：Ｙ）、そのブレーク種別がソフトウェアブレークか否かを判定する（ステップＳ９０３）。
【００３８】
ソフトウェアブレークである場合に（ステップＳ９０３：Ｙ）、当該ブレーク設定がされている論理アドレスをマルチタスクＯＳ部１０１に通知して、当該論理アドレスのＲＡＭ１２上の物理アドレスを特定させ、特定された物理アドレスをマルチタスクＯＳ部１０１より取得し、当該物理アドレスに格納されている元命令を当該ブレーク設定がされているタスク識別子、論理アドレスと対応付けてブレーク設定表に格納することにより、元命令を退避し（ステップＳ９０４）、元命令の物理アドレスにブレーク命令を書き込むことによりブレーク設定を行い（ステップＳ９０５）、取得したタスク識別子について登録されている全てのブレーク設定について、検索が完了したか否かを判定し（ステップ９０７）、完了している場合には（ステップＳ９０７：Ｙ）、ブレーク設定処理Ａを終了し、完了していない場合には（ステップＳ９０７：Ｎ）、ステップＳ９０１の処理に移行する。
【００３９】
ステップＳ９０３の判定が否定的である場合（ステップＳ９０３：Ｎ）、ブレーク設定部１０２は、ＣＰＵのレジスタにブレークアドレスを設定する（ステップＳ９０６）。
又、ステップＳ９０２の判定が否定的である場合には（ステップＳ９０２：Ｎ）、ブレーク設定部１０２は、ブレーク設定処理Ａを終了する。
（ブレーク解除処理Ａ）
図１０は、ブレーク解除部１０３の行うブレーク解除処理Ａの動作を示すフローチャートである。
【００４０】
ブレーク解除部１０３は、停止したタスクの識別子をマルチタスクＯＳ部１０１より取得し、さらにブレーク設定表記憶部１０８に記憶されているブレーク設定表を参照して、当該タスク識別子についてのブレーク設定の登録の有無を検索し（ステップＳ１０１）、ブレーク設定の登録がある場合には（ステップＳ１０２：Ｙ）、そのブレーク種別がソフトウェアブレークか否かを判定する（ステップＳ１０３）。
【００４１】
ソフトウェアブレークである場合に（ステップＳ１０３：Ｙ）、当該ブレーク設定がされている論理アドレスをマルチタスクＯＳ部１０１に通知して、当該論理アドレスのＲＡＭ１２上の物理アドレスを特定させ、特定された物理アドレスをマルチタスクＯＳ部１０１より取得し、当該ブレーク設定についてブレーク設定表に退避されている元命令を取得した物理アドレスに書き込み、元命令を復帰させ（ステップＳ１０４）、停止したタスク識別子について登録されている全てのブレーク設定について、検索が完了したか否かを判定し（ステップＳ１０６）、完了している場合には（ステップＳ１０６：Ｙ）、ブレーク解除処理Ａを終了し、完了していない場合には（ステップＳ１０６：Ｎ）、ステップＳ１０１の処理に移行する。
【００４２】
ステップＳ１０３の判定が否定的である場合（ステップＳ１０３：Ｎ）、ブレーク解除部１０３は、ＣＰＵのレジスタのブレークアドレス設定を解除する（ステップＳ１０５）。
又、ステップＳ１０２の判定が否定的である場合には（ステップＳ１０２：Ｎ）、ブレーク解除部１０３は、ブレーク解除処理Ａを終了する。
【００４３】
（実施の形態２）
実施の形態１におけるデバッグシステム１００においては、タスクの切替が行われる毎に、ブレーク設定処理とブレーク解除処理を行うこととしたが、実施の形態２におけるデバッグシステム２００（実施の形態１の図１に示すデバッグシステム１００とは、後述するデバッグ装置の構成のみが異なり、他の構成要素は同一であるので、デバッグシステム２００の構成を示す機能ブロック図の図示は省略する。以下、後述するデバッグシステム３００、４００、５００についても同様とする。）においては、次に実行されるタスクについても直前に停止したタスクと同じブレーク設定がされている場合に、タスク切替時のブレーク設定処理及びブレーク解除処理が省かれ、タスク切替処理が迅速に行われる。
＜構成＞
実施の形態１におけるデバッグシステム１００と共通する構成要素については説明を省略し、相違点を中心に説明する。
（デバッグ装置の構成）
図２２は、デバッグシステム２００に含まれるデバッグ装置２０の構成を示す機能ブロック図である。
【００４４】
デバッグ装置２０は、マルチタスクＯＳ部２０１、ブレーク設定部２０２、ブレーク解除部２０３、通信部１０４、アプリケーション記憶部１０５、ページテーブル記憶部１０６、タスク管理情報記憶部１０７、ブレーク設定表記憶部１０８から構成される。
図２２において、実施の形態１におけるデバッグ装置１０と同一の構成要素については、同一の番号を付している。
【００４５】
マルチタスクＯＳ部２０１、ブレーク設定部２０２及びブレーク解除部２０３の有する機能における相違点については、後述する。
＜動作＞
実施の形態１との相違点を中心に説明し、同一の動作を行うものについては、説明を省略する。
（タスク切替処理Ｂ）
図１１は、マルチタスクＯＳ部２０１の行うタスク切替処理Ｂの動作を示すフローチャートである。図１１に示すように、実施の形態１におけるタスク切替処理Ａとは、ステップＳ１１４及びステップＳ１１５で示すブレーク設定処理及びブレーク解除処理の内容が異なる。
（ブレーク設定処理Ｂ）
図１２は、ブレーク設定部２０２の行うブレーク設定処理Ｂの動作を示すフローチャートである。ブレーク設定処理Ｂは、ステップＳ１２１〜ステップＳ１２５の処理において、実施の形態１におけるブレーク設定処理Ａと異なり、ステップＳ１２６〜ステップＳ１３０の処理は、図９のブレーク設定処理ＡのステップＳ９０３〜ステップＳ９０７の処理と同じである。
【００４６】
以下、ステップＳ１２１〜ステップＳ１２５の処理について説明し、その他の処理については、説明を省略する。
ブレーク設定部２０２は、マルチタスクＯＳ部２０１より、停止したタスクと次に実行予定のタスクのタスク識別子をそれぞれ取得して両者のタスク識別子を特定し、さらにブレーク設定表記憶部１０８に記憶されているブレーク設定表を参照して、両者のタスク識別子についてのブレーク設定の登録の有無を検索し（ステップＳ１２１）、両者のブレーク設定の登録がある場合には（ステップＳ１２２：Ｙ）、両者のブレーク設定の論理アドレスをマルチタスクＯＳ部２０１に通知し、両者の論理アドレスがそれぞれ属する物理ページをマルチタスクＯＳ部２０１より取得し、両者の物理ページが重複するか否かを判定する（ステップＳ１２３）。
【００４７】
ここで、マルチタスクＯＳ部２０１は、ページテーブル記憶部１０６に記憶されているページテーブルを参照して、通知された両者の論理アドレスに対応付けられている物理ページを特定し、ブレーク設定部２０２に通知する。
ステップＳ１２３において、両者の物理ページが重複する場合には（ステップＳ１２３：Ｙ）、ブレーク設定部２０２は、両者の論理アドレスのオフセット値が一致するか否かを判定し（ステップＳ１２４）、一致する場合には（ステップＳ１２４：Ｙ）、ステップＳ１３０の処理に移行し、一致しない場合には（ステップＳ１２４：Ｎ）、ステップＳ１２６の処理に移行する。
【００４８】
ステップＳ１２３において、両者の物理ページが重複しない場合には（ステップＳ１２３：Ｎ）、ステップＳ１２６の処理に移行する。
又、ステップＳ１２２において、両者のブレーク設定の登録がなく（ステップＳ１２２：Ｎ）、次に実行すべきタスクについてのブレーク設定のみが登録されている場合には（ステップＳ１２５：Ｙ）、ブレーク設定部２０２は、ステップＳ１２６の処理に移行する。
【００４９】
又、ステップＳ１２５の判定が否定的である場合には（ステップＳ１２５：Ｎ）、ブレーク設定部２０２は、ブレーク設定処理Ｂを終了する。
（ブレーク解除処理Ｂ）
図１３は、ブレーク解除部２０３の行うブレーク解除処理Ｂの動作を示すフローチャートである。
【００５０】
ブレーク解除処理Ｂは、ステップＳ１３１〜ステップＳ１３５の処理において、実施の形態１におけるブレーク解除処理Ａと異なり、ステップＳ１３６〜ステップＳ１３９の処理は、図１０のブレーク解除処理ＢのステップＳ１０３〜ステップＳ１０６の処理と同じである。
以下、ステップＳ１３１〜ステップＳ１３５の処理について説明し、その他の処理については、説明を省略する。
【００５１】
ブレーク解除部２０３は、マルチタスクＯＳ部２０１より、停止したタスクと次に実行予定のタスクのタスク識別子をそれぞれ取得し、さらにブレーク設定表記憶部１０８に記憶されているブレーク設定表を参照して、両者のタスク識別子についてのブレーク設定の登録の有無を検索し（ステップＳ１３１）、両者のブレーク設定の登録がある場合には（ステップＳ１３２：Ｙ）、両者のブレーク設定の論理アドレスをマルチタスクＯＳ部２０１に通知し、両者の論理アドレスがそれぞれ属する物理ページをマルチタスクＯＳ部２０１より取得し、両者の物理ページが重複するか否かを判定する（ステップＳ１３３）。
【００５２】
ここで、マルチタスクＯＳ部２０１は、ページテーブル記憶部１０６に記憶されているページテーブルを参照して、通知された両者の論理アドレスに対応付けられている物理ページを特定し、ブレーク解除部２０３に通知する。
ステップＳ１３３において、両者の物理ページが重複する場合には（ステップＳ１３３：Ｙ）、ブレーク解除部２０３は、両者の論理アドレスのオフセット値が一致するか否かを判定し（ステップＳ１３４）、一致する場合には（ステップＳ１３４：Ｙ）、ステップＳ１３９の処理に移行し、一致しない場合には（ステップＳ１３４：Ｎ）、ステップＳ１３６の処理に移行する。
【００５３】
ステップＳ１３３において、両者の物理ページが重複しない場合には（ステップＳ１３３：Ｎ）、ステップＳ１３６の処理に移行する。
又、ステップＳ１３２において、両者のブレーク設定の登録がなく（ステップＳ１３２：Ｎ）、停止したタスクについてのブレーク設定のみが登録されている場合には（ステップＳ１３５：Ｙ）、ブレーク解除部２０３は、ステップＳ１３６の処理に移行する。
【００５４】
又、ステップＳ１３５の判定が否定的である場合には（ステップＳ１３５：Ｎ）、ブレーク解除部２０３は、ブレーク解除処理Ｂを終了する。
（実施の形態３）
実施の形態１におけるデバッグシステム１００おいては、タスクの切替が行われる毎に、ブレーク設定処理とブレーク解除処理を行うこととしたが、実施の形態３におけるデバッグシステム３００においては、タスク切替時にブレーク設定表に登録されている全てのブレーク設定が予め行われ、ブレーク設定表に登録されているブレーク設定の内、次に実行すべきタスクとブレーク設定の物理アドレスが異なる全てのブレーク設定が解除される。
【００５５】
＜構成＞
実施の形態１におけるデバッグシステム１００と共通する構成要素については説明を省略し、相違点を中心に説明する。
（デバッグ装置の構成）
図２３は、デバッグシステム３００に含まれるデバッグ装置３０の構成を示す機能ブロック図である。
【００５６】
デバッグ装置３０は、マルチタスクＯＳ部３０１、ブレーク設定部３０２、ブレーク解除部３０３、通信部１０４、アプリケーション記憶部１０５、ページテーブル記憶部１０６、タスク管理情報記憶部１０７、ブレーク設定表記憶部１０８から構成される。
図２３において、実施の形態１におけるデバッグ装置１０と同一の構成要素については、同一の番号を付している。
【００５７】
マルチタスクＯＳ部３０１、ブレーク設定部３０２及びブレーク解除部３０３の有する機能における相違点については、後述する。
＜動作＞
実施の形態１との相違点を中心に説明し、同一の動作を行うものについては、説明を省略する。
（タスク切替処理Ｃ）
図１５は、マルチタスクＯＳ部３０１の行うタスク切替処理Ｃの動作を示すフローチャートである。
【００５８】
図１５に示すように、タスク切替処理Ｃにおいては、実施の形態１におけるタスク切替処理Ａとは、ステップＳ７０４及びステップＳ７０５でそれぞれ示すブレーク設定処理及びブレーク解除処理の内容が異なる。
（ブレーク設定処理Ｃ）
図１４は、ブレーク設定部３０２の行うブレーク設定処理Ｃの動作を示すフローチャートである。
【００５９】
ブレーク設定部３０２は、ブレーク設定表に登録されている各ブレーク設定を検索し（ステップＳ１４１）、検索した各ブレーク設定の示すブレーク種別に基づいて、当該ブレーク設定がソフトウェアブレークか否かを判定する（ステップＳ１４２）。
ソフトウェアブレークである場合に（ステップＳ１４２：Ｙ）、当該ブレーク設定がされている論理アドレスをマルチタスクＯＳ部３０１に通知して、当該論理アドレスのＲＡＭ１２上の物理アドレスを特定させ、特定された物理アドレスをマルチタスクＯＳ部３０１より取得し、当該物理アドレスに格納されている元命令を当該ブレーク設定がされているタスク識別子、論理アドレスと対応付けてブレーク設定表に格納することにより、元命令を退避し（ステップＳ１４３）、元命令の物理アドレスにブレーク命令を書き込むことによりブレーク設定を行い（ステップＳ１４４）、ブレーク設定表に登録されている全てのブレーク設定について、ブレーク設定を完了したか否かを判定し（ステップ１４６）、完了している場合には（ステップＳ１４６：Ｙ）、ブレーク設定処理Ｃを終了し、完了していない場合には（ステップＳ１４６：Ｎ）、ステップＳ１４１の処理に移行する。
【００６０】
ステップＳ１４２の判定が否定的である場合（ステップＳ１４２：Ｎ）、ブレーク設定部３０２は、ＣＰＵのレジスタにブレークアドレスを設定する（ステップＳ１４５）。
（ブレーク解除処理Ｃ）
図１６は、ブレーク解除部３０３の行うブレーク解除処理Ｃの動作を示すフローチャートである。
【００６１】
ブレーク解除部３０３は、次に実行予定のタスクの識別子をマルチタスクＯＳ部３０１より取得し、さらにブレーク設定表記憶部１０８に記憶されているブレーク設定表を参照して、当該タスク識別子以外のタスク識別子についてのブレーク設定の登録の有無を検索し（ステップＳ１６１）、次に実行予定のタスク識別子以外のタスク識別子についてのブレーク設定の登録がある場合には（ステップＳ１６２：Ｙ）、当該タスク識別子と次に実行予定のタスク識別子の両者のブレーク設定の論理アドレスをマルチタスクＯＳ部３０１に通知し、両者の論理アドレスがそれぞれ属する物理ページをマルチタスクＯＳ部３０１より取得し、両者の物理ページが重複するか否かを判定する（ステップＳ１６３）。
【００６２】
ここで、マルチタスクＯＳ部３０１は、ページテーブル記憶部１０６に記憶されているページテーブルを参照して、通知された両者の論理アドレスに対応付けられている物理ページを特定し、ブレーク解除部３０３に通知する。
ステップＳ１６３において、両者の物理ページが重複する場合には（ステップＳ１６３：Ｙ）、ブレーク解除部３０３は、両者の論理アドレスのオフセット値が一致するか否かを判定し（ステップＳ１６４）、一致する場合には（ステップＳ１６４：Ｙ）、ステップＳ１６８の処理に移行し、一致しない場合には（ステップＳ１６４：Ｎ）、そのブレーク種別がソフトウェアブレークか否かを判定する（ステップＳ１６５）。
【００６３】
ソフトウェアブレークである場合に（ステップＳ１６５：Ｙ）、当該ブレーク設定がされている論理アドレスをマルチタスクＯＳ部３０１に通知して、当該論理アドレスのＲＡＭ１２上の物理アドレスを特定させ、特定された物理アドレスをマルチタスクＯＳ部３０１より取得し、当該ブレーク設定についてブレーク設定表に退避されている元命令を取得した物理アドレスに書き込み、元命令を復帰させ（ステップＳ１６６）、次に実行すべきタスク識別子以外のタスク識別子について登録されている全てのブレーク設定について、検索が完了したか否かを判定し（ステップＳ１６８）、完了している場合には（ステップＳ１６８：Ｙ）、ブレーク解除処理Ｃを終了し、完了していない場合には（ステップＳ１６８：Ｎ）、ステップＳ１６１の処理に移行する。
【００６４】
ステップＳ１６５の判定が否定的である場合（ステップＳ１６５：Ｎ）、ブレーク解除部３０３は、ＣＰＵのレジスタのブレークアドレス設定を解除する（ステップＳ１６７）。
又、ステップＳ１６２の判定が否定的である場合には（ステップＳ１６２：Ｎ）、ブレーク解除部３０３は、ブレーク解除処理Ｃを終了する。
【００６５】
又、ステップＳ１６４の判定が肯定的である場合には（ステップＳ１６４：Ｙ）、ステップＳ１６８の処理に移行する。
又、ステップＳ１６３の判定が否定的である場合には（ステップＳ１６３：Ｎ）、ステップＳ１６５の処理に移行する。
（実施の形態４）
実施の形態１におけるデバッグシステム１００おいては、タスクの切替が行われる毎に、ブレーク解除処理を行うこととしたが、実施の形態４におけるデバッグシステム４００においては、タスク切替時に実施の形態１と同様にブレーク設定が行われ、次に実行すべきタスクと停止したタスクとが物理ページを共有しない場合には、ブレーク解除処理が省略され、ブレーク解除処理の処理負荷が軽減される。
＜構成＞
実施の形態１におけるデバッグシステム１００と共通する構成要素については説明を省略し、相違点を中心に説明する。
（デバッグ装置の構成）
図２４は、デバッグシステム４００に含まれるデバッグ装置４０の構成を示す機能ブロック図である。
【００６６】
デバッグ装置４０は、マルチタスクＯＳ部４０１、ブレーク設定部１０２、ブレーク解除部４０３、通信部１０４、アプリケーション記憶部１０５、ページテーブル記憶部１０６、タスク管理情報記憶部１０７、ブレーク設定表記憶部１０８から構成される。
図２４において、実施の形態１におけるデバッグ装置１０と同一の構成要素については、同一の番号を付している。
【００６７】
マルチタスクＯＳ部４０１、ブレーク解除部４０３の有する機能における相違点については、後述する。
＜動作＞
実施の形態１との相違点を中心に説明し、同一の動作を行うものについては、説明を省略する。
（タスク切替処理Ｄ）
図１７は、マルチタスクＯＳ部４０１の行うタスク切替処理Ｄの動作を示すフローチャートである。
【００６８】
図１７に示すように、タスク切替処理Ｄにおいては、実施の形態１におけるタスク切替処理Ａとは、ステップＳ７０５で示すブレーク解除処理の内容が異なる。
（ブレーク解除処理Ｄ）
図１８は、ブレーク解除部４０３の行うブレーク解除処理Ｄの動作を示すフローチャートである。
【００６９】
ブレーク解除部４０３は、停止したタスク及び次に実行すべきタスクのタスク識別子をマルチタスクＯＳ部４０１より取得し、さらに、次に実行予定のタスクに割当てられた物理ページと、停止したタスクに割当てられた物理ページとをマルチタスクＯＳ部４０１を介して特定し、特定した前者の物理ページと後者の各物理ページとを比較し（ステップＳ１８１）、前者の物理ページと後者の物理ページが重複するか否かを判定する（ステップＳ１８２）。
【００７０】
両者が重複する場合（ステップＳ１８２：Ｙ）、ブレーク解除部４０３は、ブレーク設定表を参照して、停止したタスク識別子についてのブレーク設定の登録の有無を検索し（ステップＳ１８３）、ブレーク設定の登録がある場合には（ステップＳ１８４：Ｙ）、停止したタスク識別子についてのブレーク設定がソフトウェアブレークか否かを判定する（ステップＳ１８５）。
【００７１】
ステップＳ１８５の判定がソフトウェアブレークである場合に（ステップＳ１８５：Ｙ）、当該ブレーク設定がされている論理アドレスをマルチタスクＯＳ部４０１に通知して、当該論理アドレスのＲＡＭ１２上の物理アドレスを特定させ、特定された物理アドレスをマルチタスクＯＳ部４０１より取得し、当該ブレーク設定についてブレーク設定表に退避されている元命令を、取得した物理アドレスに書き込み、元命令を復帰させ（ステップＳ１８６）、停止したタスク識別子について登録されている全てのブレーク設定について、検索が完了したか否かを判定し（ステップ１８８）、完了している場合には（ステップＳ１８８：Ｙ）、ブレーク解除処理Ｄを終了し、完了していない場合には（ステップＳ１８８：Ｎ）、ステップＳ１８１の処理に移行する。
【００７２】
ステップＳ１８５の判定が否定的である場合（ステップＳ１８５：Ｎ）、ブレーク解除部４０３は、ＣＰＵのレジスタのブレークアドレス設定を解除する（ステップＳ１８７）。
又、ステップＳ１８２の判定が否定的である場合には（ステップＳ１８２：Ｎ）、ブレーク解除部４０３は、ブレーク解除処理Ｄを終了する。
【００７３】
又、ステップＳ１８４の判定が否定的である場合には（ステップＳ１８４：Ｎ）、ブレーク解除処理Ｄを終了する。
（実施の形態５）
実施の形態１におけるデバッグシステム１００においては、タスクの切替時にまず、ブレーク設定処理を行い、次いで停止したタスクにブレーク設定がされている場合にブレーク解除処理を行うこととしたが、実施の形態５におけるデバッグシステム５００においては、タスク切替時にまずブレーク設定表に登録されている全てのブレーク設定を解除した後に、ブレーク設定処理が行われる。
＜構成＞
実施の形態１におけるデバッグシステム１００と共通する構成要素については説明を省略し、相違点を中心に説明する。
（デバッグ装置の構成）
図２５は、デバッグシステム５００に含まれるデバッグ装置５０の構成を示す機能ブロック図である。
【００７４】
デバッグ装置５０は、マルチタスクＯＳ部５０１、ブレーク設定部１０２、ブレーク解除部５０３、通信部１０４、アプリケーション記憶部１０５、ページテーブル記憶部１０６、タスク管理情報記憶部１０７、ブレーク設定表記憶部１０８から構成される。
図２５において、実施の形態１におけるデバッグ装置１０と同一の構成要素については、同一の番号を付している。
【００７５】
マルチタスクＯＳ部５０１、ブレーク解除部５０３の有する機能における相違点については、後述する。
＜動作＞
実施の形態１との相違点を中心に説明し、同一の動作を行うものについては、説明を省略する。
（タスク切替処理Ｅ）
図１９は、マルチタスクＯＳ部５０１の行うタスク切替処理Ｅの動作を示すフローチャートである。
【００７６】
図１９に示すように、タスク切替処理Ｅにおいては、実施の形態１におけるタスク切替処理Ａとは、ステップＳ７０４及びステップＳ７０５で示すブレーク設定処理とブレーク解除処理の順序が逆になっている点、ステップＳ７０５で示すブレーク解除処理の内容が異なる。
（ブレーク解除処理Ｅ）
図２０は、ブレーク解除部５０３の行うブレーク解除処理Ｅの動作を示すフローチャートである。
【００７７】
ブレーク解除部５０３は、ブレーク設定表に登録されているブレーク設定を検索し（ステップＳ２０１）、検索した各ブレーク設定の示すブレーク種別に基づいて、当該ブレーク設定がソフトウェアブレークか否かを判定する（ステップＳ２０２）。
ステップＳ２０２の判定がソフトウェアブレークである場合に（ステップＳ２０２：Ｙ）、当該ブレーク設定がされている論理アドレスをマルチタスクＯＳ部５０１に通知して、当該論理アドレスのＲＡＭ１２上の物理アドレスを特定させ、特定された物理アドレスをマルチタスクＯＳ部５０１より取得し、当該ブレーク設定についてブレーク設定表に退避されている元命令を、取得した物理アドレスに書き込み、元命令を復帰させ（ステップＳ２０３）、当該ブレーク設定を解除し、ブレーク設定表に登録されている全てのブレーク設定の解除を完了したか否かを判定し（ステップＳ２０５）、完了している場合には（ステップＳ２０５：Ｙ）、ブレーク解除部５０３は、ブレーク解除処理Ｅを終了し、完了していない場合には（ステップＳ２０５：Ｎ）、ステップＳ２０１の処理に移行する。
【００７８】
ステップＳ２０２の判定が否定的である場合（ステップＳ２０２：Ｎ）、ブレーク解除部５０３は、ＣＰＵのレジスタのブレークアドレス設定を解除する（ステップＳ２０４）。
＜補足＞
以上、本発明の実施形態１〜５について説明したが、本発明はこれら実施形態に限られないことは勿論である。
【００７９】
（１）本実施の形態１〜５においては、元命令をブレーク命令に書き換えることにより、マルチタスク環境下でのデバッグ処理を行うこととしたが、元命令をブレーク命令ではなく、他の命令に書き換えることによりデバッグ処理を行うこととしてもよいし、特定の物理アドレスのデータを書き換えることにより、デバッグ処理を行うこととし、タスク切替が行われる時に、実施の形態１〜５で説明したブレーク設定処理の代わりにデバッグ処理を行い、ブレーク解除処理の代わりに、書き換えた命令又はデータを元の命令又はデータに書き換えることにより、デバッグ処理の解除を行うこととしてもよい。
【００８０】
（２）本実施の形態１〜５においては、端末１〜３からのコマンド入力により、ブレーク設定の登録処理、削除処理、デバッグの実行を行うこととしたが、デバッグ装置に入力部を設け、当該入力部からコマンド入力することにより、上記処理及びデバッグを実行することとしてもよい。
又、コマンド入力によらず、ＧＵＩ（Graphic User Interface）を介して、登録又は削除するブレーク設定に係るタスク識別子、論理アドレス、ブレーク種別を指定することにより、ブレーク設定の登録処理、削除処理を行うこととしてもよい。
【００８１】
（３）実施の形態４においては、タスク切替時に、ブレーク設定処理Ａを行うこととしたが、ブレーク設定処理Ａの代わりに、ブレーク設定処理Ｃを行い、ブレーク設定表に登録されている、次に実行すべきタスク以外の各タスクについてのブレーク解除処理Ｄと同様のブレーク解除処理Ｄ'を行うこととしてもよい。図２６は、上記の場合におけるブレーク解除部４０３の行うブレーク解除処理Ｄ'の動作を示すフローチャートである。
【産業上の利用可能性】
【００８２】
本発明は、複数のタスクが同一メモリにアクセスする環境下において、当該メモリの記録内容の書き換えを随時行ってデバッグを実行する場合に、当該メモリへアクセスする他のタスクの動作に影響を与えないように制御する技術として利用できる。
【図面の簡単な説明】
【００８３】
【図１】本実施の形態に係るデバッグシステム１００の構成を示す機能ブロック図である。
【図２】デバッグ装置１０の構成を示す機能ブロック図である。
【図３】ブレーク設定表の具体例を示す。
【図４】ページテーブルをイメージ的に表した図である。
【図５】タスク管理情報の具体例を示す。
【図６】マルチタスクＯＳ部１０１によって行われるアドレス変換の過程をイメージ的に表した図である。
【図７】マルチタスクＯＳ部１０１の行うタスク切替処理Ａの動作を示すフローチャートである。
【図８】ブレーク設定部１０２の行うブレーク設定登録処理の動作を示すフローチャートである。
【図９】ブレーク設定部１０２の行うブレーク設定処理Ａの動作を示すフローチャートである。
【図１０】ブレーク解除部１０３の行うブレーク解除処理Ａの動作を示すフローチャートである。
【図１１】マルチタスクＯＳ部２０１の行うタスク切替処理Ｂの動作を示すフローチャートである。
【図１２】ブレーク設定部２０２の行うブレーク設定処理Ｂの動作を示すフローチャートである。
【図１３】ブレーク解除部２０３の行うブレーク解除処理Ｂの動作を示すフローチャートである。
【図１４】ブレーク設定部３０２の行うブレーク設定処理Ｃの動作を示すフローチャートである。
【図１５】マルチタスクＯＳ部３０１の行うタスク切替処理Ｃの動作を示すフローチャートである。
【図１６】ブレーク解除部３０３の行うブレーク解除処理Ｃの動作を示すフローチャートである。
【図１７】マルチタスクＯＳ部４０１の行うタスク切替処理Ｄの動作を示すフローチャートである。
【図１８】ブレーク解除部４０３の行うブレーク解除処理Ｄの動作を示すフローチャートである。
【図１９】マルチタスクＯＳ部５０１の行うタスク切替処理Ｅの動作を示すフローチャートである。
【図２０】ブレーク解除部５０３の行うブレーク解除処理Ｅの動作を示すフローチャートである。
【図２１】ブレーク解除部１０３の行うブレーク設定削除処理の動作を示すフローチャートである。
【図２２】デバッグシステム２００に含まれるデバッグ装置２０の構成を示す機能ブロック図である。
【図２３】デバッグシステム３００に含まれるデバッグ装置３０の構成を示す機能ブロック図である。
【図２４】デバッグシステム４００に含まれるデバッグ装置４０の構成を示す機能ブロック図である。
【図２５】デバッグシステム５００に含まれるデバッグ装置５０の構成を示す機能ブロック図である。
【図２６】ブレーク解除部４０３の行うブレーク解除処理Ｄ'の動作を示すフローチャートである。
【符号の説明】
【００８４】
１〜３  端末
１０、２０、３０、４０、５０  デバッグ装置
１１  マルチタスクＯＳ
１２  ＲＡＭ
１０１、２０１、３０１、４０１、５０１  マルチタスクＯＳ部
１０２、２０２、３０２  ブレーク設定部
１０３、２０３、３０３、４０３、５０３  ブレーク解除部
１０４  通信部
１０５  アプリケーション記憶部
１０６  ページテーブル記憶部
１０７  タスク管理情報記憶部
１０８  ブレーク設定表記憶部
【図１】
0004676289.tif 000002
【図２】
0004676289.tif 000003
【図３】
0004676289.tif 000004
【図４】
0004676289.tif 000005
【図５】
0004676289.tif 000006
【図６】
0004676289.tif 000007
【図７】
0004676289.tif 000008
【図８】
0004676289.tif 000009
【図９】
0004676289.tif 000010
【図１０】
0004676289.tif 000011
【図１１】
0004676289.tif 000012
【図１２】
0004676289.tif 000013
【図１３】
0004676289.tif 000014
【図１４】
0004676289.tif 000015
【図１５】
0004676289.tif 000016
【図１６】
0004676289.tif 000017
【図１７】
0004676289.tif 000018
【図１８】
0004676289.tif 000019
【図１９】
0004676289.tif 000020
【図２０】
0004676289.tif 000021
【図２１】
0004676289.tif 000022
【図２２】
0004676289.tif 000023
【図２３】
0004676289.tif 000024
【図２４】
0004676289.tif 000025
【図２５】
0004676289.tif 000026
【図２６】
0004676289.tif 000027