JP3159155B2 - プログラムのデバッグ方法および装置 - Google Patents
プログラムのデバッグ方法および装置Info
- Publication number
- JP3159155B2 JP3159155B2 JP04162598A JP4162598A JP3159155B2 JP 3159155 B2 JP3159155 B2 JP 3159155B2 JP 04162598 A JP04162598 A JP 04162598A JP 4162598 A JP4162598 A JP 4162598A JP 3159155 B2 JP3159155 B2 JP 3159155B2
- Authority
- JP
- Japan
- Prior art keywords
- system call
- call
- task
- instruction
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Debugging And Monitoring (AREA)
Description
【0001】
【発明の属する技術分野】本発明は、プログラムのデバ
ッグ方法および装置、特にリアルタイムOS上で動くタ
スクのデバッグ方法および装置に関する。
ッグ方法および装置、特にリアルタイムOS上で動くタ
スクのデバッグ方法および装置に関する。
【0002】
【従来の技術】プログラム開発を行う場合、通常、1つ
の大きなプログラムは多くの小さなサブプログラムに分
割して開発を行う。サブプログラムの大半は、その中で
さらに別のサブプログラムを呼び出して処理を行う場合
も多い。このようなプログラムのデバッグは、最初から
大きなプログラムの全体をデバッグするのではなく、下
層にあるサブプログラムから順次上層のサブプログラム
に向かってデバッグしていくことが多い。この場合、デ
バッグが完了した下層のサブプログラムは不具合が存在
しないため、より上層のサブプログラムをデバッグする
ときにはブラックボックスとして扱っても問題ない。
の大きなプログラムは多くの小さなサブプログラムに分
割して開発を行う。サブプログラムの大半は、その中で
さらに別のサブプログラムを呼び出して処理を行う場合
も多い。このようなプログラムのデバッグは、最初から
大きなプログラムの全体をデバッグするのではなく、下
層にあるサブプログラムから順次上層のサブプログラム
に向かってデバッグしていくことが多い。この場合、デ
バッグが完了した下層のサブプログラムは不具合が存在
しないため、より上層のサブプログラムをデバッグする
ときにはブラックボックスとして扱っても問題ない。
【0003】プログラムのデバッグ作業は、プログラム
を1命令ずつ実行してレジスタやメモリなどの変化を調
べていくステップ実行がよく用いられるが、この場合デ
バッグが完了したサブプログラムに対しては、サブプロ
グラム内をステップ実行して変化を確認する必要はな
く、サブプログラムを一度に実行した後で変化を確認す
ればよい。このためプログラムのデバッグ作業を行うほ
とんどのデバッガには、ステップ実行しようとしている
命令がサブプログラムの呼び出し命令であった場合、そ
のサブプログラム内を一度に実行してしまうプロシージ
ャ・ステップ実行と呼ばれる機能をもっている。
を1命令ずつ実行してレジスタやメモリなどの変化を調
べていくステップ実行がよく用いられるが、この場合デ
バッグが完了したサブプログラムに対しては、サブプロ
グラム内をステップ実行して変化を確認する必要はな
く、サブプログラムを一度に実行した後で変化を確認す
ればよい。このためプログラムのデバッグ作業を行うほ
とんどのデバッガには、ステップ実行しようとしている
命令がサブプログラムの呼び出し命令であった場合、そ
のサブプログラム内を一度に実行してしまうプロシージ
ャ・ステップ実行と呼ばれる機能をもっている。
【0004】プログラムの構成上いくつかの並列的に行
われる処理や、時間経過の管理を伴うような処理を必要
とする場合に、リアルタイムOSが使用されることがあ
る。リアルタイムOSとは、タスクという単位に分割さ
れた複数のプログラムを状況により切り替えながら動作
させるOSであり、OSに対するシステムコールの発行
や、割り込みによるイベントの発生により、実行中のタ
スクが切り替わる。このようなタスクは、通常のプログ
ラムと同様に幾つかのサブプログラムに分割されて開発
される。
われる処理や、時間経過の管理を伴うような処理を必要
とする場合に、リアルタイムOSが使用されることがあ
る。リアルタイムOSとは、タスクという単位に分割さ
れた複数のプログラムを状況により切り替えながら動作
させるOSであり、OSに対するシステムコールの発行
や、割り込みによるイベントの発生により、実行中のタ
スクが切り替わる。このようなタスクは、通常のプログ
ラムと同様に幾つかのサブプログラムに分割されて開発
される。
【0005】このようなリアルタイムOS上で並列動作
する複数のタスクをデバッグする場合に、タスクを構成
するメインプログラム中にサブプログラム(または関
数)が含まれていると、CALL命令で呼び出されたサ
ブプログラムがメインプログラムに戻る場合に、RET
(リターン)命令を用いないプログラムを使用したと
き、その処理を正常に終了できるようにすることが要求
される。
する複数のタスクをデバッグする場合に、タスクを構成
するメインプログラム中にサブプログラム(または関
数)が含まれていると、CALL命令で呼び出されたサ
ブプログラムがメインプログラムに戻る場合に、RET
(リターン)命令を用いないプログラムを使用したと
き、その処理を正常に終了できるようにすることが要求
される。
【0006】このような要求を実現した従来技術とし
て、特開平9−152980号公報に開示されるプロシ
ージャ・ステップ処理方法がある。
て、特開平9−152980号公報に開示されるプロシ
ージャ・ステップ処理方法がある。
【0007】図1は、このプロシージャ・ステップ処理
方法を実施するデバッガ10の機能ブロック図である。
デバッガ10は、被デバッグ・プログラムの実行を行
い、レジスタやメモリなどのCPU資源や外部デバイス
の状態をユーザがデバッグするための機能を持ってい
る。被デバッグ・プログラムの実行のみを考えると、一
般的にデバッガはデバッグ命令を解析する解析部12
と、ユーザまたはデバッガ・プログラム自身によって設
定されたイベントブレークを検出するまで実行を継続す
るリアルタイム・エミュレーション部14と、一命令だ
けの実行を行うステップ実行部16と、関数単位の命令
の実行を行うプロシージャ・ステップ実行部18とを有
している。プロシージャ・ステップ実行部18は、命令
判別部20および関数実行部22を含んでいる。
方法を実施するデバッガ10の機能ブロック図である。
デバッガ10は、被デバッグ・プログラムの実行を行
い、レジスタやメモリなどのCPU資源や外部デバイス
の状態をユーザがデバッグするための機能を持ってい
る。被デバッグ・プログラムの実行のみを考えると、一
般的にデバッガはデバッグ命令を解析する解析部12
と、ユーザまたはデバッガ・プログラム自身によって設
定されたイベントブレークを検出するまで実行を継続す
るリアルタイム・エミュレーション部14と、一命令だ
けの実行を行うステップ実行部16と、関数単位の命令
の実行を行うプロシージャ・ステップ実行部18とを有
している。プロシージャ・ステップ実行部18は、命令
判別部20および関数実行部22を含んでいる。
【0008】図2は、このデバッガ10によるプロシー
ジャ・ステップの実行を説明するフローチャートであ
る。
ジャ・ステップの実行を説明するフローチャートであ
る。
【0009】まず、プロシージャ・ステップ実行部18
の命令判別部20は、ステップ実行中のプログラムにお
いて、実行する命令がCALL命令かどうかを判断し
(ステップS1)、CALL命令でなければ(No)、
その命令だけをステップ実行部16で実行して(ステッ
プS11)終了する。
の命令判別部20は、ステップ実行中のプログラムにお
いて、実行する命令がCALL命令かどうかを判断し
(ステップS1)、CALL命令でなければ(No)、
その命令だけをステップ実行部16で実行して(ステッ
プS11)終了する。
【0010】CALL命令の場合(Yes)は、戻りア
ドレスをスタックに退避する(ステップS2)。退避す
るスタックのアドレスは、スタック・ポインタにより指
示される。
ドレスをスタックに退避する(ステップS2)。退避す
るスタックのアドレスは、スタック・ポインタにより指
示される。
【0011】次に、ユーザが設定したイベントを退避
し、すべてのイベントブレークを無効にする(ステップ
S3)。これは、関数の実行にリアルタイム・エミュレ
ーションを使用するため、そのリアルタイム・エミュレ
ーション中にイベントブレークを発生させないようにす
るためである。
し、すべてのイベントブレークを無効にする(ステップ
S3)。これは、関数の実行にリアルタイム・エミュレ
ーションを使用するため、そのリアルタイム・エミュレ
ーション中にイベントブレークを発生させないようにす
るためである。
【0012】次に、ステップS2で戻りアドレスを退避
したスタックのアドレスに、アクセスイベントブレーク
を設定する(ステップS4)。なお、イベントブレーク
とは、被デバッグ対象であるプログラムの実行処理を中
断することである。
したスタックのアドレスに、アクセスイベントブレーク
を設定する(ステップS4)。なお、イベントブレーク
とは、被デバッグ対象であるプログラムの実行処理を中
断することである。
【0013】次に、関数実行部22およびリアルタイム
・エミュレーション部14は、関数のリアルタイム・エ
ミュレーションを開始する(ステップS5)。
・エミュレーション部14は、関数のリアルタイム・エ
ミュレーションを開始する(ステップS5)。
【0014】戻りアドレスを退避したスタックのアドレ
スをアクセスしたことにより、アクセスイベントブレー
クを検出する(ステップS6)。
スをアクセスしたことにより、アクセスイベントブレー
クを検出する(ステップS6)。
【0015】プログラムカウンタPCが戻りアドレスと
一致するまで、リアルタイム・エミュレーションを継続
する(ステップS7)。
一致するまで、リアルタイム・エミュレーションを継続
する(ステップS7)。
【0016】プログラムカウンタPCが戻りアドレスと
一致したら、リアルタイム・エミュレーションを中断す
る(ステップS8)。
一致したら、リアルタイム・エミュレーションを中断す
る(ステップS8)。
【0017】次に、ステップS4で設定したアクセスイ
ベントブレークを解除する(ステップS9)。
ベントブレークを解除する(ステップS9)。
【0018】最後に、ステップS3で退避したユーザの
イベントを復元し(ステップS10)、プロシージャ・
ステップ実行処理を終了する。
イベントを復元し(ステップS10)、プロシージャ・
ステップ実行処理を終了する。
【0019】以上のようなプロシージャ・ステップによ
れば、戻りアドレスを退避したスタックのアドレスに、
アクセスイベントブレークを設定するので、RET命令
を用いない関数がプロシージャ・ステップ実行される場
合でも、処理を中断することができる。
れば、戻りアドレスを退避したスタックのアドレスに、
アクセスイベントブレークを設定するので、RET命令
を用いない関数がプロシージャ・ステップ実行される場
合でも、処理を中断することができる。
【0020】
【発明が解決しようとする課題】マルチタスク・システ
ムでは、図3のように個々に別々のスタック領域を持っ
たタスクがリアルタイムOSを介して並列に実行され
る。タスクは処理がすべて終わると、自タスク終了シス
テムコールを呼び出し、リアルタイムOSにタスクの終
了を通知する。リアルタイムOSは、タスクの終了を検
知すると、システムコールの発行元のタスクのスタック
領域を解放してしまうので、「PC=戻りアドレス」の
条件で処理を中断させる従来の方法では、プロシージャ
・ステップ実行動作を終了させることができなかった。
ムでは、図3のように個々に別々のスタック領域を持っ
たタスクがリアルタイムOSを介して並列に実行され
る。タスクは処理がすべて終わると、自タスク終了シス
テムコールを呼び出し、リアルタイムOSにタスクの終
了を通知する。リアルタイムOSは、タスクの終了を検
知すると、システムコールの発行元のタスクのスタック
領域を解放してしまうので、「PC=戻りアドレス」の
条件で処理を中断させる従来の方法では、プロシージャ
・ステップ実行動作を終了させることができなかった。
【0021】例えば、図4に示すような動作をするプロ
グラムについて考える。
グラムについて考える。
【0022】図4は、左端に時間、中央に実行中のプロ
グラム(タスク,関数,リアルタイムOS)、右端に当
該時間で命令を実行した直後のスタック状態を示してい
る。タスクは、タスク1,タスク2,タスク3の3つが
あり、関数1はタスク1に含まれるサブプログラムであ
り、関数2はタスク2に含まれるサブプログラムであ
る。各タスク1,2,3は、対応するスタック1,2,
3をそれぞれ有している。これらスタックにおいて、ス
タック・ポインタの示すアドレスを斜線で示している
(ただし、リアルタイムOS処理中についてはOS用の
スタックを持っていたり、スタック切り替えのタイミン
グが異なったりするため、図4とは異なる場合があ
る。)。
グラム(タスク,関数,リアルタイムOS)、右端に当
該時間で命令を実行した直後のスタック状態を示してい
る。タスクは、タスク1,タスク2,タスク3の3つが
あり、関数1はタスク1に含まれるサブプログラムであ
り、関数2はタスク2に含まれるサブプログラムであ
る。各タスク1,2,3は、対応するスタック1,2,
3をそれぞれ有している。これらスタックにおいて、ス
タック・ポインタの示すアドレスを斜線で示している
(ただし、リアルタイムOS処理中についてはOS用の
スタックを持っていたり、スタック切り替えのタイミン
グが異なったりするため、図4とは異なる場合があ
る。)。
【0023】例えば、時間T1において実行しているの
はタスク1のプログラムであり、このとき命令「CAL
L SYSCALL」を実行すると、タスク1用のスタ
ック1のスタック・ポインタの示すアドレスに、スタッ
ク1への戻りアドレスAが格納され、リアルタイムOS
に実行が移る。(タスク2およびタスク3用のスタック
2,3には、この時点ですでに戻りアドレスEおよびG
が格納されているが、これはそれぞれのタスクが時間T
1以前に実行されていたことを意味する)。
はタスク1のプログラムであり、このとき命令「CAL
L SYSCALL」を実行すると、タスク1用のスタ
ック1のスタック・ポインタの示すアドレスに、スタッ
ク1への戻りアドレスAが格納され、リアルタイムOS
に実行が移る。(タスク2およびタスク3用のスタック
2,3には、この時点ですでに戻りアドレスEおよびG
が格納されているが、これはそれぞれのタスクが時間T
1以前に実行されていたことを意味する)。
【0024】次に、時間T2においてリアルタイムOS
の処理が終了すると、OS自身の管理によりタスク1の
アドレスAに処理が復帰する。
の処理が終了すると、OS自身の管理によりタスク1の
アドレスAに処理が復帰する。
【0025】次に、時間T3において、命令「CALL
FUNC1」を実行すると、スタック1への戻りアド
レスDがスタック1に格納され、関数1に実行が移る。
関数1を実行中に、命令「CALL SYSCALL
2」を実行すると、スタック1に関数1への戻りアドレ
スBが格納され、リアルタイムOSに実行が移る。
FUNC1」を実行すると、スタック1への戻りアド
レスDがスタック1に格納され、関数1に実行が移る。
関数1を実行中に、命令「CALL SYSCALL
2」を実行すると、スタック1に関数1への戻りアドレ
スBが格納され、リアルタイムOSに実行が移る。
【0026】次に、時間T5においてリアルタイムOS
の処理が終了すると、OS自身の管理により関数1のア
ドレスBに処理が復帰する。
の処理が終了すると、OS自身の管理により関数1のア
ドレスBに処理が復帰する。
【0027】次に、関数1の実行中に時間T6におい
て、命令「CALL FUNC3」を実行すると、スタ
ック1に関数1への戻りアドレスCが格納され、リアル
タイムOSに実行が移る。
て、命令「CALL FUNC3」を実行すると、スタ
ック1に関数1への戻りアドレスCが格納され、リアル
タイムOSに実行が移る。
【0028】次に、時間T7においてリアルタイムOS
の処理が終了すると、OS自身の管理により関数1のア
ドレスCに処理が復帰する。
の処理が終了すると、OS自身の管理により関数1のア
ドレスCに処理が復帰する。
【0029】関数1の実行において、RET命令が実行
されると、タスク1のアドレスDに処理が復帰する。
されると、タスク1のアドレスDに処理が復帰する。
【0030】時間T9〜T13に見られるように、タス
ク1でSYSCALL4を呼び出した後に、リアルタイ
ムOSの管理によりタスク2に実行が移った場合には、
タスク2ではスタック2が使用され、スタック1が変化
することはない。また、スタックが切り替わるのに伴っ
てスタック・ポインタもスタック2を示すように変更さ
れる。
ク1でSYSCALL4を呼び出した後に、リアルタイ
ムOSの管理によりタスク2に実行が移った場合には、
タスク2ではスタック2が使用され、スタック1が変化
することはない。また、スタックが切り替わるのに伴っ
てスタック・ポインタもスタック2を示すように変更さ
れる。
【0031】時間T13でOS自身の管理によりタスク
1に実行が移り、時間T14でタスク終了システムコー
ルである命令「CALL SYSCALL6」が実行さ
れたとする。「CALL SYSCALL6」によっ
て、スタック1にはタスク1への戻り予定アドレスX
(実際には戻ることはないが)が格納される。また、図
4では時間T14以後もスタック1が存在するように示
されているが、通常は不要なリソースを解放するため
に、タスク終了をリアルタイムOSが検知した段階で、
スタック1の領域は解放され空き領域として扱われるこ
とになる。
1に実行が移り、時間T14でタスク終了システムコー
ルである命令「CALL SYSCALL6」が実行さ
れたとする。「CALL SYSCALL6」によっ
て、スタック1にはタスク1への戻り予定アドレスX
(実際には戻ることはないが)が格納される。また、図
4では時間T14以後もスタック1が存在するように示
されているが、通常は不要なリソースを解放するため
に、タスク終了をリアルタイムOSが検知した段階で、
スタック1の領域は解放され空き領域として扱われるこ
とになる。
【0032】なお、以上の処理では、前述したように、
リアルタイムOSからタスクへ戻る動作は、OS自身が
管理している。また、リアルタイムOSでは、各タスク
毎に関数の戻りアドレスを管理できるので、各タスク毎
に独自に関数の呼び出しができる。
リアルタイムOSからタスクへ戻る動作は、OS自身が
管理している。また、リアルタイムOSでは、各タスク
毎に関数の戻りアドレスを管理できるので、各タスク毎
に独自に関数の呼び出しができる。
【0033】以上のようなプログラムにおいて、タスク
のデバッグを行う場合、 ・システムコールを呼び出すと、処理後にそのまま自タ
スクに戻ってくる場合(時間T1〜T2での処理) ・関数を呼ぶと、関数内部でシステムコールを呼び出
し、自タスクに戻ってきてから関数が終わる場合(時間
T3〜T8での処理) ・システムコールを呼び出すと、他タスクの実行をして
から自タスクに戻ってくる場合(時間T9〜T13での
処理) などについては、タスク1のスタックが他タスクと独立
しているため、自タスクに戻ってきた場所で、PC=戻
りアドレスの条件で実行を中断することができる。
のデバッグを行う場合、 ・システムコールを呼び出すと、処理後にそのまま自タ
スクに戻ってくる場合(時間T1〜T2での処理) ・関数を呼ぶと、関数内部でシステムコールを呼び出
し、自タスクに戻ってきてから関数が終わる場合(時間
T3〜T8での処理) ・システムコールを呼び出すと、他タスクの実行をして
から自タスクに戻ってくる場合(時間T9〜T13での
処理) などについては、タスク1のスタックが他タスクと独立
しているため、自タスクに戻ってきた場所で、PC=戻
りアドレスの条件で実行を中断することができる。
【0034】一方、タスク終了システムコールを呼び出
すと自タスクが終了する場合(時間T14での処理)
は、リアルタイムOSがタスク1のスタック1を解放し
て空き領域としてしまうため、プログラムカウンタPC
が戻りアドレスに一致することがないので、実行は中断
しない。
すと自タスクが終了する場合(時間T14での処理)
は、リアルタイムOSがタスク1のスタック1を解放し
て空き領域としてしまうため、プログラムカウンタPC
が戻りアドレスに一致することがないので、実行は中断
しない。
【0035】以上のように、リアルタイムOSを使用し
たプログラムは、タスクを切り替えるために特定のシス
テムコールをタスクから呼び出すが、システムコールの
中には自タスクを終了するためのものがあり、このよう
な自タスク終了のシステムコールが呼び出されると、デ
バッグ処理が中断しない。
たプログラムは、タスクを切り替えるために特定のシス
テムコールをタスクから呼び出すが、システムコールの
中には自タスクを終了するためのものがあり、このよう
な自タスク終了のシステムコールが呼び出されると、デ
バッグ処理が中断しない。
【0036】本発明の目的は、リアルタイムOSを使用
したマルチタスク・システムにおいて、自タスク終了を
行うシステムコールが呼び出されても、デバッグの実行
動作を終了することのできるデバッグ方法および装置を
提供することにある。
したマルチタスク・システムにおいて、自タスク終了を
行うシステムコールが呼び出されても、デバッグの実行
動作を終了することのできるデバッグ方法および装置を
提供することにある。
【0037】本発明の他の目的は、デバッグ方法を実施
するプログラムを記録した記録媒体を提供することにあ
る。
するプログラムを記録した記録媒体を提供することにあ
る。
【0038】
【課題を解決するための手段】本発明によれば、自タス
ク(システムコールの呼び出し元)を終了してしまうよ
うなシステムコールのプロシージャ・ステップ実行を、
デバッガにリアルタイムOSの内部情報を保持させ、被
デバッグ・プログラムから呼び出されたシステムコール
の種類を判別し、自タスク終了システムコールの場合
は、リアルタイムOS内部にイベントブレークを設定し
て実行することにより、リアルタイムOSの処理が終了
した時点でプログラム実行を中断させる。
ク(システムコールの呼び出し元)を終了してしまうよ
うなシステムコールのプロシージャ・ステップ実行を、
デバッガにリアルタイムOSの内部情報を保持させ、被
デバッグ・プログラムから呼び出されたシステムコール
の種類を判別し、自タスク終了システムコールの場合
は、リアルタイムOS内部にイベントブレークを設定し
て実行することにより、リアルタイムOSの処理が終了
した時点でプログラム実行を中断させる。
【0039】本発明のリアルタイムOS上で並列に実行
される複数のタスクをデバッグする方法は、リアルタイ
ムOSの内部情報を保持させるステップと、CALL命
令であるか否かを判別するステップと、CALL命令で
あれば、そのCALL命令が、自タスク終了システムコ
ールであるか否かを、前記内部情報を参照して判別する
ステップと、自タスク終了システムコールであれば、前
記内部情報を参照してリアルタイムOS内部にイベント
ブレークを設定して、プロシージャ・ステップを実行す
るステップと、前記イベントブレークを検出した後に、
プロシージャ・ステップの実行を終了させるステップと
を含んでいる。
される複数のタスクをデバッグする方法は、リアルタイ
ムOSの内部情報を保持させるステップと、CALL命
令であるか否かを判別するステップと、CALL命令で
あれば、そのCALL命令が、自タスク終了システムコ
ールであるか否かを、前記内部情報を参照して判別する
ステップと、自タスク終了システムコールであれば、前
記内部情報を参照してリアルタイムOS内部にイベント
ブレークを設定して、プロシージャ・ステップを実行す
るステップと、前記イベントブレークを検出した後に、
プロシージャ・ステップの実行を終了させるステップと
を含んでいる。
【0040】リアルタイムOS上で並列に実行される複
数のタスクをデバッグする装置は、リアルタイムOSの
内部情報を保持する手段と、CALL命令であるか否か
を判別する手段と、CALL命令であれば、そのCAL
L命令が、自タスク終了システムコールであるか否か
を、前記内部情報を参照して判別する手段と、自タスク
終了システムコールであれば、前記内部情報を参照して
リアルタイムOS内部にイベントブレークを設定して、
プロシージャ・ステップを実行する手段と、前記イベン
トブレークを検出した後に、プロシージャ・ステップの
実行を終了させる手段とを有している。
数のタスクをデバッグする装置は、リアルタイムOSの
内部情報を保持する手段と、CALL命令であるか否か
を判別する手段と、CALL命令であれば、そのCAL
L命令が、自タスク終了システムコールであるか否か
を、前記内部情報を参照して判別する手段と、自タスク
終了システムコールであれば、前記内部情報を参照して
リアルタイムOS内部にイベントブレークを設定して、
プロシージャ・ステップを実行する手段と、前記イベン
トブレークを検出した後に、プロシージャ・ステップの
実行を終了させる手段とを有している。
【0041】さらに本発明のリアルタイムOS上で並列
に実行される複数のタスクをデバッグするプログラムを
記録しした記録媒体は、前記プログラムは、リアルタイ
ムOSの内部情報を保持させるステップと、CALL命
令であるか否かを判別するステップと、CALL命令で
あれば、そのCALL命令が、自タスク終了システムコ
ールであるか否かを、前記内部情報を参照して判別する
ステップと、自タスク終了システムコールであれば、前
記内部情報を参照してリアルタイムOS内部にイベント
ブレークを設定して、プロシージャ・ステップを実行す
るステップと、前記イベントブレークを検出した後に、
プロシージャ・ステップの実行を終了させるステップを
含んでいる。
に実行される複数のタスクをデバッグするプログラムを
記録しした記録媒体は、前記プログラムは、リアルタイ
ムOSの内部情報を保持させるステップと、CALL命
令であるか否かを判別するステップと、CALL命令で
あれば、そのCALL命令が、自タスク終了システムコ
ールであるか否かを、前記内部情報を参照して判別する
ステップと、自タスク終了システムコールであれば、前
記内部情報を参照してリアルタイムOS内部にイベント
ブレークを設定して、プロシージャ・ステップを実行す
るステップと、前記イベントブレークを検出した後に、
プロシージャ・ステップの実行を終了させるステップを
含んでいる。
【0042】
【発明の実施の形態】図5は、本発明のデバッグ装置
(またはデバッガ)の機能ブロック図である。このデバ
ッガ40は、図1に示す従来のデバッガに比べて、プロ
シージャ・ステップ実行部24の機能が異なり、さらに
OS情報テーブル34を有している。
(またはデバッガ)の機能ブロック図である。このデバ
ッガ40は、図1に示す従来のデバッガに比べて、プロ
シージャ・ステップ実行部24の機能が異なり、さらに
OS情報テーブル34を有している。
【0043】プロシージャ・ステップ実行部24は、命
令がCALL命令であるかどうかを判断する命令判断部
26と、CALL命令が自タスク終了システムコールで
あるかどうかを判断する関数判断部28と、タスク終了
関数を実行する実行部30と、タスク終了関数以外の通
常関数を実行する実行部32とを有している。
令がCALL命令であるかどうかを判断する命令判断部
26と、CALL命令が自タスク終了システムコールで
あるかどうかを判断する関数判断部28と、タスク終了
関数を実行する実行部30と、タスク終了関数以外の通
常関数を実行する実行部32とを有している。
【0044】このデバッガによるデバッグ方法を説明す
る前に、システムコールの呼び出し方法について説明す
る。
る前に、システムコールの呼び出し方法について説明す
る。
【0045】システムコールの呼び出し方法には、タス
クからシステムコールを直接呼び出す方式と、リアルタ
イムOSにシステムコールIDを渡して、OS内の共通
の入口であるOSエントリから分岐させる間接呼び出し
方式とがある。
クからシステムコールを直接呼び出す方式と、リアルタ
イムOSにシステムコールIDを渡して、OS内の共通
の入口であるOSエントリから分岐させる間接呼び出し
方式とがある。
【0046】図6は、システムコール直接呼び出し方式
を示すリアルタイムOSの内部処理フローチャートであ
る。また、図7は、システムコール間接呼び出し方式を
示すリアルタイムOSの内部処理フローチャートであ
る。これら図は、OSコード領域を併せて示している。
を示すリアルタイムOSの内部処理フローチャートであ
る。また、図7は、システムコール間接呼び出し方式を
示すリアルタイムOSの内部処理フローチャートであ
る。これら図は、OSコード領域を併せて示している。
【0047】システムコール直接呼び出し方式では、タ
スク上に、 CALL SYSCALL1 のように、システムコールのアドレスをCALL命令の
オペランドとして記述する。
スク上に、 CALL SYSCALL1 のように、システムコールのアドレスをCALL命令の
オペランドとして記述する。
【0048】一方、間接呼び出し方式では、 MOV RG1,SYSCALL_ID1 CALL OS_ENTRY のように、システムコールIDをレジスタ等を用いてO
Sエントリへの引数として渡す。OSエントリでは、こ
のシステムコールIDに基づいて対応するシステムコー
ルへ分岐する。
Sエントリへの引数として渡す。OSエントリでは、こ
のシステムコールIDに基づいて対応するシステムコー
ルへ分岐する。
【0049】直接呼び出し方式では、CALL命令のオ
ペランドを、間接呼び出し方式では,OSエントリへの
引数を、それぞれ解析することによってシステムコール
の種類を判別することができる。
ペランドを、間接呼び出し方式では,OSエントリへの
引数を、それぞれ解析することによってシステムコール
の種類を判別することができる。
【0050】判別した結果に基づいて、システムコール
(OS)の終了アドレスを割り出し、割り出されたOS
終了アドレスにイベントブレークを設定してリアルタイ
ム・エミュレーションを行うことによって、システムコ
ール(OS)処理が終わった箇所で実行を中断すること
ができる。したがって、デバッガのテーブル34に保持
させるOS情報には、 ・システムコールを特定するためのルール ・直接呼び出しか間接呼び出しか ・引数として使用されるレジスタ,メモリの種類 ・自タスク終了システムコールの情報 ・システムコールのアドレスまたはシステムコールID ・OSエントリ・アドレス ・システムコール(OS)の終了位置情報 が必要である。
(OS)の終了アドレスを割り出し、割り出されたOS
終了アドレスにイベントブレークを設定してリアルタイ
ム・エミュレーションを行うことによって、システムコ
ール(OS)処理が終わった箇所で実行を中断すること
ができる。したがって、デバッガのテーブル34に保持
させるOS情報には、 ・システムコールを特定するためのルール ・直接呼び出しか間接呼び出しか ・引数として使用されるレジスタ,メモリの種類 ・自タスク終了システムコールの情報 ・システムコールのアドレスまたはシステムコールID ・OSエントリ・アドレス ・システムコール(OS)の終了位置情報 が必要である。
【0051】図8は、図5のデバッガ40の動作を示す
フローチャートである。このフローチャートを参照しな
がら、プロシージャ・ステップの実行処理について説明
する。
フローチャートである。このフローチャートを参照しな
がら、プロシージャ・ステップの実行処理について説明
する。
【0052】まず、プロシージャ・ステップ実行部24
の命令判別部26は、ステップ実行中のプログラムにお
いて、実行する命令がCALL命令かどうかを判別し
(ステップS1)、CALL命令でなければ(No)、
その命令だけをステップ実行部16で実行して(ステッ
プS2)終了する。
の命令判別部26は、ステップ実行中のプログラムにお
いて、実行する命令がCALL命令かどうかを判別し
(ステップS1)、CALL命令でなければ(No)、
その命令だけをステップ実行部16で実行して(ステッ
プS2)終了する。
【0053】CALL命令の場合(Yes)は、関数判
別部28がOS情報テーブル34から「システムコール
を特定するためのルール」,「自タスク終了システムコ
ールの情報」を読み出し、自タスク終了システムコール
かどうかを判別する(ステップS3)。
別部28がOS情報テーブル34から「システムコール
を特定するためのルール」,「自タスク終了システムコ
ールの情報」を読み出し、自タスク終了システムコール
かどうかを判別する(ステップS3)。
【0054】図9および図10に、関数判別部28の処
理を示すフローチャートを示す。図9は、システムコー
ルの呼び出しが直接行われる場合、すなわちシステムコ
ール直接呼び出しの場合の処理を、図10は、システム
コールの呼び出しがOSエントリを介して行われる場
合、すなわちシステムコール間接呼び出しの場合の処理
を示している。
理を示すフローチャートを示す。図9は、システムコー
ルの呼び出しが直接行われる場合、すなわちシステムコ
ール直接呼び出しの場合の処理を、図10は、システム
コールの呼び出しがOSエントリを介して行われる場
合、すなわちシステムコール間接呼び出しの場合の処理
を示している。
【0055】図9の直接呼び出しにおいて、関数判別部
28は、OS情報テーブル34より、自タスク終了シス
テムコール情報(シンボル/アドレス)を抽出し、自タ
スク終了システムコールの先頭アドレスを計算し、保持
する。一方、関数判別部は、CALL命令のオペランド
(呼び出し先アドレス)を獲得した後、保持されている
先頭アドレスを参照し、自タスク終了システムコール先
頭アドレスを取得する。呼び出し先アドレスが、この先
頭アドレスに一致すると、タスク終了関数実行部30の
処理へ、不一致であれば通常関数実行部32の処理へ進
む。
28は、OS情報テーブル34より、自タスク終了シス
テムコール情報(シンボル/アドレス)を抽出し、自タ
スク終了システムコールの先頭アドレスを計算し、保持
する。一方、関数判別部は、CALL命令のオペランド
(呼び出し先アドレス)を獲得した後、保持されている
先頭アドレスを参照し、自タスク終了システムコール先
頭アドレスを取得する。呼び出し先アドレスが、この先
頭アドレスに一致すると、タスク終了関数実行部30の
処理へ、不一致であれば通常関数実行部32の処理へ進
む。
【0056】図10において、関数判別部28は、OS
情報テーブル34より、OSエントリ・アドレスを抽出
し、および自タスク終了システムコールID(番号/ア
ドレス)を抽出し、保持する。一方、関数判別部は、C
ALL命令のオペランド(呼び出し先アドレス)を獲得
した後、保持しているOSエントリ・アドレスを参照し
て、OSエントリ・アドレスを取得する。
情報テーブル34より、OSエントリ・アドレスを抽出
し、および自タスク終了システムコールID(番号/ア
ドレス)を抽出し、保持する。一方、関数判別部は、C
ALL命令のオペランド(呼び出し先アドレス)を獲得
した後、保持しているOSエントリ・アドレスを参照し
て、OSエントリ・アドレスを取得する。
【0057】呼び出し先アドレスが、このOSエントリ
・アドレスに一致すれば引数を取得する。保持している
自タスク終了システムコールIDを参照して、引数が自
タスク終了システムコールIDと一致するかどうかを判
断する。一致すれば、タスク終了関数実行部30の処理
へ、不一致であれば通常関数実行部32の処理へ進む。
また、前述したOSエントリ・アドレスが呼び出し先ア
ドレスに不一致の場合にも、通常関数実行部32の処理
へ進む。
・アドレスに一致すれば引数を取得する。保持している
自タスク終了システムコールIDを参照して、引数が自
タスク終了システムコールIDと一致するかどうかを判
断する。一致すれば、タスク終了関数実行部30の処理
へ、不一致であれば通常関数実行部32の処理へ進む。
また、前述したOSエントリ・アドレスが呼び出し先ア
ドレスに不一致の場合にも、通常関数実行部32の処理
へ進む。
【0058】図8に戻り、関数判別部28で、自タスク
終了システムコールでないと判別された場合には、通常
関数実行部32に通常のプロシージャ・ステップを実行
させる(ステップS4)。この通常のプロシージャ・ス
テップは、図2で説明したプロシージャ・ステップと同
一である。
終了システムコールでないと判別された場合には、通常
関数実行部32に通常のプロシージャ・ステップを実行
させる(ステップS4)。この通常のプロシージャ・ス
テップは、図2で説明したプロシージャ・ステップと同
一である。
【0059】自タスク終了システムコールであれば、タ
スク終了関数実行部30は、ユーザが設定したイベント
を退避し、すべてのイベントブレークを解除すなわち無
効にする(ステップS5)。
スク終了関数実行部30は、ユーザが設定したイベント
を退避し、すべてのイベントブレークを解除すなわち無
効にする(ステップS5)。
【0060】なお、図11には、図8に示すタスク関数
実行部の処理フローとほぼ同じであるが、OS終了アド
レスの確定の処理を追加して示すフローチャートを示
す。
実行部の処理フローとほぼ同じであるが、OS終了アド
レスの確定の処理を追加して示すフローチャートを示
す。
【0061】図11において、タスク終了関数実行部3
0は、OS情報テーブル34より、システムコール(O
S)の終了位置情報(シンボル/アドレス)を抽出し、
OS終了アドレスを計算し、保持する。一方、タスク終
了関数実行部は、保持されたOS終了アドレスを確定す
る。
0は、OS情報テーブル34より、システムコール(O
S)の終了位置情報(シンボル/アドレス)を抽出し、
OS終了アドレスを計算し、保持する。一方、タスク終
了関数実行部は、保持されたOS終了アドレスを確定す
る。
【0062】図8に戻り、確定されたOS終了アドレス
へ実行後イベントブレークを設定する(ステップS
6)。
へ実行後イベントブレークを設定する(ステップS
6)。
【0063】次に、タスク終了関数実行部30およびリ
アルタイム・エミュレーション部14は、タスク終了関
数のリアルタイム・エミュレーションを開始する(ステ
ップS7)。
アルタイム・エミュレーション部14は、タスク終了関
数のリアルタイム・エミュレーションを開始する(ステ
ップS7)。
【0064】OS終了アドレスをアクセスしたことによ
り、実行後イベントブレークを検出すると(ステップS
8)、リアルタイム・エミュレーションを中断する(ス
テップS9)。
り、実行後イベントブレークを検出すると(ステップS
8)、リアルタイム・エミュレーションを中断する(ス
テップS9)。
【0065】次に、ステップS6で設定した実行後イベ
ントブレークを解除する(ステップS10)。
ントブレークを解除する(ステップS10)。
【0066】最後に、ステップS5で退避したユーザの
イベントを復元し(ステップS11)、タスク終了関数
の実行を終了する。
イベントを復元し(ステップS11)、タスク終了関数
の実行を終了する。
【0067】以上説明したデバッガによれば、自タスク
終了システムコールが呼び出されても、リアルタイムO
Sの処理が終了した時点でプログラム実行を中断させる
ことができる。
終了システムコールが呼び出されても、リアルタイムO
Sの処理が終了した時点でプログラム実行を中断させる
ことができる。
【0068】このようなデバッガは、プログラムで構成
することができる。
することができる。
【0069】
【発明の効果】本発明によれば、自タスクを終了してし
まうようなシステムコールのプロシージャ・ステップ実
行を、デバッガにリアルタイムOSの内部情報を保持さ
せ、被デバッグ・プログラムから呼び出されたシステム
コールの種類を判別し、自タスク終了システムコールの
場合は、リアルタイムOS内部にイベントブレークを設
定して実行することにより、リアルタイムOSの処理が
終了した時点でプログラム実行を中断させるようにした
ので、マルチタスク・システムにおいて、自タスク終了
を行うシステムコールが呼び出されても、デバッグの実
行動作を終了することができる。
まうようなシステムコールのプロシージャ・ステップ実
行を、デバッガにリアルタイムOSの内部情報を保持さ
せ、被デバッグ・プログラムから呼び出されたシステム
コールの種類を判別し、自タスク終了システムコールの
場合は、リアルタイムOS内部にイベントブレークを設
定して実行することにより、リアルタイムOSの処理が
終了した時点でプログラム実行を中断させるようにした
ので、マルチタスク・システムにおいて、自タスク終了
を行うシステムコールが呼び出されても、デバッグの実
行動作を終了することができる。
【図1】従来のプロシージャ・ステップ処理方法を実施
するデバッガの機能ブロック図である。
するデバッガの機能ブロック図である。
【図2】図1のデバッガによるプロシージャ・ステップ
の実行を説明するフローチャートである。
の実行を説明するフローチャートである。
【図3】被デバッグ・プログラムを示す図である。
【図4】特定の動作をするプログラムを説明するための
図である。
図である。
【図5】本発明のデバッグ装置の機能ブロック図であ
る。
る。
【図6】システムコール直接呼び出し方式を示すリアル
タイムOSの内部処理フローチャートである。
タイムOSの内部処理フローチャートである。
【図7】システムコール間接呼び出し方式を示すリアル
タイムOSの内部処理フローチャートである。
タイムOSの内部処理フローチャートである。
【図8】図5のデバッガの動作を示すフローチャートで
ある。
ある。
【図9】関数判別の処理を示すフローチャートである。
【図10】関数判別の処理を示すフローチャートであ
る。
る。
【図11】タスク関数実行部の処理を説明するフローチ
ャートである。
ャートである。
12 デバッグ命令解析部 14 リアルタイム・エミュレーション部 16 ステップ実行部 24 プロシージャ・ステップ実行部 26 命令判別部 28 関数判別部 30 タスク終了関数実行部 32 通常関数実行部 34 OS情報テーブル 40 デバッガ
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.7,DB名) G06F 11/28 - 11/36 G06F 9/46
Claims (15)
- 【請求項1】リアルタイムOS上で並列に実行される複
数のタスクをデバッグする方法において、 リアルタイムOSの内部情報を保持させるステップと、 CALL命令であるか否かを判別するステップと、 CALL命令であれば、そのCALL命令が、自タスク
終了システムコールであるか否かを、前記内部情報を参
照して判別するステップと、 自タスク終了システムコールであれば、前記内部情報を
参照してリアルタイムOS内部にイベントブレークを設
定して、プロシージャ・ステップを実行するステップ
と、 前記イベントブレークを検出した後に、プロシージャ・
ステップの実行を終了させるステップと、 を含むことを特徴とするデバッグ方法。 - 【請求項2】前記内部情報として、システムコールを特
定するためのルールと、自タスク終了システムコールの
情報と、システムコールの終了位置情報とを含むことを
特徴とする請求項1記載のデバッグ方法。 - 【請求項3】CALL命令が自タスク終了システムコー
ルであるか否かを判別する前記ステップは、 システムコールの呼び出しが、タスクからシステムコー
ルを直接呼び出す方式の場合には、前記システムコール
を特定するためのルールにより、直接呼び出し方式であ
ると判別し、さらに、前記自タスク終了システムコール
の情報により、自タスク終了システムコールの先頭アド
レスを計算し、CALL命令のオペランドとして記述さ
れたアドレスと前記先頭アドレスが一致したら、CAL
L命令は自タスク終了システムコールであると判別する
ことを特徴とする請求項2記載のデバッグ方法。 - 【請求項4】CALL命令が自タスク終了システムコー
ルであるか否かを判別する前記ステップは、 リアルタイムOSにシステムコールIDを渡してOSエ
ントリから分岐させる間接呼び出し方式の場合には、前
記システムコールを特定するためのルールにより、間接
呼び出し方式であることを判別し、さらに、前記自タス
ク終了システムコールの情報により、OSエントリ・ア
ドレスを取得し、このOSエントリ・アドレスがCAL
L命令のオペランドとして記述されたアドレスに一致し
たならば引数を取得し、この引数が自タスクシステムコ
ールIDと一致すると、CALL命令は自タスク終了シ
ステムコールであると判別することを特徴とする請求項
2記載のデバッグ方法。 - 【請求項5】前記イベントブレークは、前記システムコ
ールの終了位置情報から計算されたシステムコールの終
了アドレスに設定することを特徴とする請求項3または
4記載のデバッグ方法。 - 【請求項6】リアルタイムOS上で並列に実行される複
数のタスクをデバッグする装置において、 リアルタイムOSの内部情報を保持する手段と、 CALL命令であるか否かを判別する手段と、 CALL命令であれば、そのCALL命令が、自タスク
終了システムコールであるか否かを、前記内部情報を参
照して判別する手段と、 自タスク終了システムコールであれば、前記内部情報を
参照してリアルタイムOS内部にイベントブレークを設
定して、プロシージャ・ステップを実行する手段と、 前記イベントブレークを検出した後に、プロシージャ・
ステップの実行を終了させる手段と、 を有することを特徴とするデバッグ装置。 - 【請求項7】前記内部情報として、システムコールを特
定するためのルールと、自タスク終了システムコールの
情報と、システムコールの終了位置情報とを含むことを
特徴とする請求項6記載のデバッグ装置。 - 【請求項8】CALL命令が自タスク終了システムコー
ルであるか否かを判別する前記手段は、 システムコールの呼び出しが、タスクからシステムコー
ルを直接呼び出す方式の場合には、前記システムコール
を特定するためのルールにより、直接呼び出し方式であ
ると判別し、さらに、前記自タスク終了システムコール
の情報により、自タスク終了システムコールの先頭アド
レスを計算し、CALL命令のオペランドとして記述さ
れたアドレスと前記先頭アドレスが一致したら、CAL
L命令は自タスク終了システムコールであると判別する
ことを特徴とする請求項7記載のデバッグ装置。 - 【請求項9】CALL命令が自タスク終了システムコー
ルであるか否かを判別する前記手段は、 リアルタイムOSにシステムコールIDを渡してOSエ
ントリから分岐させる間接呼び出し方式の場合には、前
記システムコールを特定するためのルールにより、間接
呼び出し方式であることを判別し、さらに、前記自タス
ク終了システムコールの情報により、OSエントリ・ア
ドレスを取得し、このOSエントリ・アドレスがCAL
L命令のオペランドとして記述されたアドレスに一致し
たならば引数を取得し、この引数が自タスクシステムコ
ールIDと一致すると、CALL命令は自タスク終了シ
ステムコールであると判別することを特徴とする請求項
7記載のデバッグ装置。 - 【請求項10】前記イベントブレークは、前記システム
コールの終了位置情報から計算されたシステムコールの
終了アドレスに設定することを特徴とする請求項8また
は9記載のデバッグ装置。 - 【請求項11】リアルタイムOS上で並列に実行される
複数のタスクをデバッグするプログラムを記録した記録
媒体において、 前記プログラムは、リアルタイムOSの内部情報を保持
させるステップと、 CALL命令であるか否かを判別するステップと、 CALL命令であれば、そのCALL命令が、自タスク
終了システムコールであるか否かを、前記内部情報を参
照して判別するステップと、 自タスク終了システムコールであれば、前記内部情報を
参照してリアルタイムOS内部にイベントブレークを設
定して、プロシージャ・ステップを実行するステップ
と、 前記イベントブレークを検出した後に、プロシージャ・
ステップの実行を終了させるステップと、 を含むことを特徴とする記録媒体。 - 【請求項12】前記内部情報として、システムコールを
特定するためのルールと、自タスク終了システムコール
の情報と、システムコールの終了位置情報とを含むこと
を特徴とする請求項11記載の記録媒体。 - 【請求項13】CALL命令が自タスク終了システムコ
ールであるか否かを判別する前記ステップは、 システムコールの呼び出しが、タスクからシステムコー
ルを直接呼び出す方式の場合には、前記システムコール
を特定するためのルールにより、直接呼び出し方式であ
ると判別し、さらに、前記自タスク終了システムコール
の情報により、自タスク終了システムコールの先頭アド
レスを計算し、CALL命令のオペランドとして記述さ
れたアドレスと前記先頭アドレスが一致したら、CAL
L命令は自タスク終了システムコールであると判別する
ことを特徴とする請求項12記載の記録媒体。 - 【請求項14】CALL命令が自タスク終了システムコ
ールであるか否かを判別する前記ステップは、 リアルタイムOSにシステムコールIDを渡してOSエ
ントリから分岐させる間接呼び出し方式の場合には、前
記システムコールを特定するためのルールにより、間接
呼び出し方式であることを判別し、さらに、前記自タス
ク終了システムコールの情報により、OSエントリ・ア
ドレスを取得し、このOSエントリ・アドレスがCAL
L命令のオペランドとして記述されたアドレスに一致し
たならば引数を取得し、この引数が自タスクシステムコ
ールIDと一致すると、CALL命令は自タスク終了シ
ステムコールであると判別することを特徴とする請求項
12記載の記録媒体。 - 【請求項15】前記イベントブレークは、前記システム
コールの終了位置情報から計算されたシステムコールの
終了アドレスに設定することを特徴とする請求項13ま
たは14記載の記録媒体。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP04162598A JP3159155B2 (ja) | 1998-02-24 | 1998-02-24 | プログラムのデバッグ方法および装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP04162598A JP3159155B2 (ja) | 1998-02-24 | 1998-02-24 | プログラムのデバッグ方法および装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH11238003A JPH11238003A (ja) | 1999-08-31 |
| JP3159155B2 true JP3159155B2 (ja) | 2001-04-23 |
Family
ID=12613525
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP04162598A Expired - Fee Related JP3159155B2 (ja) | 1998-02-24 | 1998-02-24 | プログラムのデバッグ方法および装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3159155B2 (ja) |
-
1998
- 1998-02-24 JP JP04162598A patent/JP3159155B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JPH11238003A (ja) | 1999-08-31 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5621886A (en) | Method and apparatus for providing efficient software debugging | |
| US5659679A (en) | Method and apparatus for providing breakpoints on taken jumps and for providing software profiling in a computer system | |
| US5511217A (en) | Computer system of virtual machines sharing a vector processor | |
| US5121472A (en) | Method for replacing keyboard data using single step process mode | |
| US5488688A (en) | Data processor with real-time diagnostic capability | |
| US6052774A (en) | Apparatus and method for identifying exception routines indicated by instruction address issued with an instruction fetch command | |
| JPS634346A (ja) | マイクロプロセッサ・デバッグ装置 | |
| US20030177476A1 (en) | Debugging multiple threads or processes | |
| IL227320A (en) | Creates debugging exceptions | |
| US8661417B2 (en) | Debugging program function | |
| US20040098639A1 (en) | Debugging kernel-loadable modules and suspending and replacing functions in non-microkernel operating systems | |
| US6131109A (en) | Multitask processor, a multitask processing method, a multitask processing display method and a storage medium for processing by correlating task and object | |
| JP3159155B2 (ja) | プログラムのデバッグ方法および装置 | |
| IE62074B1 (en) | Apparatus and method for synchronization of arithmetic exceptions in parallel pipelined execution units | |
| JP2735523B2 (ja) | プロシージャ・ステップ処理方法 | |
| KR20030077696A (ko) | 실시간 운영체제에서 타스크 레벨 인터럽트 처리 방법 | |
| JP2000181748A (ja) | マルチメモリ空間プログラムのデバッグシステムおよびそのデバッグ方法 | |
| JP2788353B2 (ja) | タスクトレース方法 | |
| JP2743889B2 (ja) | プログラム評価の方法および装置 | |
| JP3039450B2 (ja) | スタック領域の切替方法、方式およびスタック領域切替プログラムを記録した記憶媒体 | |
| JP3120841B2 (ja) | インサーキットエミュレータ | |
| JPH08305607A (ja) | マルチプロセッサシステムのプログラムデバッグ方法およびデバッガ | |
| JPH10161904A (ja) | 複数言語対応のデバッグ装置およびデバッグ方法 | |
| JPS59202548A (ja) | デバツグ装置 | |
| JPS60167038A (ja) | マイクロプロセツサ |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |