JPH04328644A - デバッグ支援装置 - Google Patents
デバッグ支援装置Info
- Publication number
- JPH04328644A JPH04328644A JP3124597A JP12459791A JPH04328644A JP H04328644 A JPH04328644 A JP H04328644A JP 3124597 A JP3124597 A JP 3124597A JP 12459791 A JP12459791 A JP 12459791A JP H04328644 A JPH04328644 A JP H04328644A
- Authority
- JP
- Japan
- Prior art keywords
- data
- instruction
- changed
- saving
- execution
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 claims abstract description 17
- 230000002411 adverse Effects 0.000 abstract 1
- 230000006870 function Effects 0.000 description 9
- 238000000034 method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 2
- 239000013256 coordination polymer Substances 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【0001】
【産業上の利用分野】本発明は、プログラムのデバッグ
支援装置に関する。
支援装置に関する。
【0002】
【従来の技術】プログラムのデバッグを行う際に有効な
デバッグ機能のひとつとして、プログラムの逆実行、す
なわち一度実行してしまったプログラムを元に戻してい
くこと、の機能がある。プログラムの逆実行は、プログ
ラムの実行を進め過ぎてしまった場合の逆戻りや、一時
的に少し先まで実行を行って状態を調べ、その後に元の
所まで実行を戻したいような場合に有効である。この逆
実行のためにはプログラム・カウンタの値を戻すだけで
なく、実行されたプログラムによって変更されてしまっ
たメモリやレジスタなどのデータの状態も実行前の状態
に戻す必要がある。
デバッグ機能のひとつとして、プログラムの逆実行、す
なわち一度実行してしまったプログラムを元に戻してい
くこと、の機能がある。プログラムの逆実行は、プログ
ラムの実行を進め過ぎてしまった場合の逆戻りや、一時
的に少し先まで実行を行って状態を調べ、その後に元の
所まで実行を戻したいような場合に有効である。この逆
実行のためにはプログラム・カウンタの値を戻すだけで
なく、実行されたプログラムによって変更されてしまっ
たメモリやレジスタなどのデータの状態も実行前の状態
に戻す必要がある。
【0003】従来の技術では、トレース機能と称して、
実行時にプログラムの状態を記録しておき、実行後にそ
れらの記録しておいたプログラム状態を表示して見せる
機能が実現されている。また、ある時点でのプログラム
状態を再現するために、その位置にブレークポイントを
設定して、プログラムの先頭から実行し直すという方法
が用いられることがある。
実行時にプログラムの状態を記録しておき、実行後にそ
れらの記録しておいたプログラム状態を表示して見せる
機能が実現されている。また、ある時点でのプログラム
状態を再現するために、その位置にブレークポイントを
設定して、プログラムの先頭から実行し直すという方法
が用いられることがある。
【0004】
【発明が解決しようとする課題】しかしながら上記の従
来の技術には、以下のような問題点がある。
来の技術には、以下のような問題点がある。
【0005】まず、トレース機能については、本質的に
プログラムの逆実行とは異るので、予め保存しておこう
と決めていたデータについては実行前の状態を再現でき
るが、それ以外のデータについては実行前の値が保存さ
れていないために元の値を再現することができない。ま
た、戻った状態からの実行継続も不可能である。
プログラムの逆実行とは異るので、予め保存しておこう
と決めていたデータについては実行前の状態を再現でき
るが、それ以外のデータについては実行前の値が保存さ
れていないために元の値を再現することができない。ま
た、戻った状態からの実行継続も不可能である。
【0006】一方、ブレークポイントを利用して元の位
置まで実行をやり直す方法では、プログラム外部からの
割り込みや入力データの値によって、処理の流れが変化
するようなプログラムについては、完全に同じプログラ
ム状態を再現できない場合がある。
置まで実行をやり直す方法では、プログラム外部からの
割り込みや入力データの値によって、処理の流れが変化
するようなプログラムについては、完全に同じプログラ
ム状態を再現できない場合がある。
【0007】本発明の目的は、上記のような問題点を解
決し、実行前の状態を完全に、しかも確実に再現できる
ようなデバッグ支援装置を提供することである。
決し、実行前の状態を完全に、しかも確実に再現できる
ようなデバッグ支援装置を提供することである。
【0008】
【課題を解決するための手段】本発明は、命令をデコー
ドする手段とその命令を実行する手段とを具備する中央
処理装置(CPU)において、命令の実行によって値が
変更されるレジスタおよびメモリのアドレスを認識する
手段と、認識されたアドレスに格納されているデータを
命令実行前に予め指定のデータ領域に退避する手段と、
そのデータ退避のための領域を指示するための手段と、
退避されていた情報から命令実行前のレジスタおよびメ
モリの状態を復元する手段とを備えることを特徴とする
デバッグ支援装置である。
ドする手段とその命令を実行する手段とを具備する中央
処理装置(CPU)において、命令の実行によって値が
変更されるレジスタおよびメモリのアドレスを認識する
手段と、認識されたアドレスに格納されているデータを
命令実行前に予め指定のデータ領域に退避する手段と、
そのデータ退避のための領域を指示するための手段と、
退避されていた情報から命令実行前のレジスタおよびメ
モリの状態を復元する手段とを備えることを特徴とする
デバッグ支援装置である。
【0009】
【実施例】次に本発明について図面を参照して説明する
。
。
【0010】図1は本発明の一実施例を説明するための
図である。図において、1はデコードされたCPU命令
を実行する手段、2はCPU命令をデコードする手段、
3はCPUが具備するレジスタ群、4は命令の実行に伴
い値が変更されるレジスタおよびメモリを認識する手段
、5はレジスタおよびメモリの変更前の値を退避する手
段、6は退避先のアドレスを指定する手段、7は退避し
ておいた値をレジスタおよびメモリに復元する手段、8
は値を退避するための領域である。
図である。図において、1はデコードされたCPU命令
を実行する手段、2はCPU命令をデコードする手段、
3はCPUが具備するレジスタ群、4は命令の実行に伴
い値が変更されるレジスタおよびメモリを認識する手段
、5はレジスタおよびメモリの変更前の値を退避する手
段、6は退避先のアドレスを指定する手段、7は退避し
ておいた値をレジスタおよびメモリに復元する手段、8
は値を退避するための領域である。
【0011】本発明においては、逆実行処理は、実行時
データの収集と収集データからの状態再現の2段階の手
順によって実現される。
データの収集と収集データからの状態再現の2段階の手
順によって実現される。
【0012】まずは、実行時データの収集について説明
する。
する。
【0013】通常、CPUによって命令が実行される場
合には、まずメモリからリードされたプログラム・コー
ドが命令デコーダ2によって解析され、その解析結果を
受け取った命令実行手段1が該当命令の処理を行うが、
本発明においては、命令デコーダ2による解析結果が同
時に変更データ認識手段4にも渡される。変更データ認
識手段4は、受け取ったデコード情報によって、これか
ら実行される命令によってどのアドレスのメモリの内容
が修正されるか、どのレジスタの値が修正されるかを判
定し、それらのアドレスの集合を変更データ退避手段5
に通知する。変更データ退避手段5は、通知された全て
のアドレスについて、まずそのアドレスのメモリまたは
レジスタの現時点での値を読みだし、続いてその値をメ
モリ領域中に用意されている変更データ退避領域8にセ
ーブする。その際、変更データ退避手段5は、変更デー
タをセーブするアドレスを決定するために、格納領域指
定手段6を参照する。一つのデータがセーブされるたび
に、格納領域指定手段6の値は、変更データ退避手段5
によって1データサイズ分だけインクリメントされ、次
にセーブするアドレスを指示できるようになっている。
合には、まずメモリからリードされたプログラム・コー
ドが命令デコーダ2によって解析され、その解析結果を
受け取った命令実行手段1が該当命令の処理を行うが、
本発明においては、命令デコーダ2による解析結果が同
時に変更データ認識手段4にも渡される。変更データ認
識手段4は、受け取ったデコード情報によって、これか
ら実行される命令によってどのアドレスのメモリの内容
が修正されるか、どのレジスタの値が修正されるかを判
定し、それらのアドレスの集合を変更データ退避手段5
に通知する。変更データ退避手段5は、通知された全て
のアドレスについて、まずそのアドレスのメモリまたは
レジスタの現時点での値を読みだし、続いてその値をメ
モリ領域中に用意されている変更データ退避領域8にセ
ーブする。その際、変更データ退避手段5は、変更デー
タをセーブするアドレスを決定するために、格納領域指
定手段6を参照する。一つのデータがセーブされるたび
に、格納領域指定手段6の値は、変更データ退避手段5
によって1データサイズ分だけインクリメントされ、次
にセーブするアドレスを指示できるようになっている。
【0014】次に、収集データからの状態再現の手順に
ついて説明する。
ついて説明する。
【0015】変更データ復元手段7は、上記の手順によ
って変更データ退避領域8にセーブされたデータを一つ
一つ読み出しながら逆実行処理を進める。読み出した情
報がメモリ情報であれば該当アドレスのメモリに、レジ
スタ情報であれば該当レジスタに値を書き戻す。その際
、格納領域指定手段6は次に読み出す退避データの格納
位置を押えており、一つのデータが読み出されるたびに
、変更データ復元手段によって1データサイズ分だけデ
クリメントされて、次に読み出すデータ格納位置を指す
ようになっている。退避データには必ずプログラム・カ
ウンタ(PC)の値が含まれており、そのPC値を書き
戻した段階で一命令分の逆実行が完了する。
って変更データ退避領域8にセーブされたデータを一つ
一つ読み出しながら逆実行処理を進める。読み出した情
報がメモリ情報であれば該当アドレスのメモリに、レジ
スタ情報であれば該当レジスタに値を書き戻す。その際
、格納領域指定手段6は次に読み出す退避データの格納
位置を押えており、一つのデータが読み出されるたびに
、変更データ復元手段によって1データサイズ分だけデ
クリメントされて、次に読み出すデータ格納位置を指す
ようになっている。退避データには必ずプログラム・カ
ウンタ(PC)の値が含まれており、そのPC値を書き
戻した段階で一命令分の逆実行が完了する。
【0016】
【発明の効果】以上で説明したように、本発明を用いれ
ば、一度実行してしまったプログラムを一命令単位に順
次逆実行することができるようになる。
ば、一度実行してしまったプログラムを一命令単位に順
次逆実行することができるようになる。
【0017】しかも、本発明の構成要素はCPU内に実
現できるため、シングルステップ等を利用して同様の機
能を実現するソフトウェアに比較してかなり高速に、通
常のCPU実行速度に近いスピードで処理を行うことが
可能である。また、トレース機能等のためのハードウェ
アやソフトウェアを準備する必要もない。
現できるため、シングルステップ等を利用して同様の機
能を実現するソフトウェアに比較してかなり高速に、通
常のCPU実行速度に近いスピードで処理を行うことが
可能である。また、トレース機能等のためのハードウェ
アやソフトウェアを準備する必要もない。
【0018】このことにより、デバッグ作業を効率的に
実行できるようになる。
実行できるようになる。
【図1】本発明の一実施例を示すブロック図である。
1 デコードされたCPU命令を実行する手段2
CPU命令をデコードする手段3 CP
Uが具備するレジスタ群4 命令の実行により値
が変更されるレジスタおよびメモリを認識する手段 5 レジスタおよびメモリの変更前の値を退避す
る手段 6 退避先のアドレスを指定する手段7
退避しておいた値をレジスタおよびメモリに復元する手
段 8 値を退避する領域
CPU命令をデコードする手段3 CP
Uが具備するレジスタ群4 命令の実行により値
が変更されるレジスタおよびメモリを認識する手段 5 レジスタおよびメモリの変更前の値を退避す
る手段 6 退避先のアドレスを指定する手段7
退避しておいた値をレジスタおよびメモリに復元する手
段 8 値を退避する領域
Claims (1)
- 【請求項1】 命令をデコードする手段とその命令を
実行する手段とを具備する中央処理装置(CPU)にお
いて、命令の実行によって値が変更されるレジスタおよ
びメモリのアドレスを認識する手段と、認識されたアド
レスに格納されているデータを命令実行前に予め指定の
データ領域に退避する手段と、そのデータ退避のための
領域を指示するための手段と、退避されていた情報から
命令実行前のレジスタおよびメモリの状態を復元する手
段とを備えることを特徴とするデバッグ支援装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3124597A JPH04328644A (ja) | 1991-04-30 | 1991-04-30 | デバッグ支援装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3124597A JPH04328644A (ja) | 1991-04-30 | 1991-04-30 | デバッグ支援装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH04328644A true JPH04328644A (ja) | 1992-11-17 |
Family
ID=14889393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3124597A Pending JPH04328644A (ja) | 1991-04-30 | 1991-04-30 | デバッグ支援装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH04328644A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07191875A (ja) * | 1993-12-27 | 1995-07-28 | Nec Corp | デバッガー |
JPH08320813A (ja) * | 1995-05-26 | 1996-12-03 | Nec Corp | プログラムシミュレータ装置及びプログラムデバッグ方法 |
-
1991
- 1991-04-30 JP JP3124597A patent/JPH04328644A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07191875A (ja) * | 1993-12-27 | 1995-07-28 | Nec Corp | デバッガー |
JPH08320813A (ja) * | 1995-05-26 | 1996-12-03 | Nec Corp | プログラムシミュレータ装置及びプログラムデバッグ方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4879646A (en) | Data processing system with a pipelined structure for editing trace memory contents and tracing operations during system debugging | |
JPH06222952A (ja) | デバッグ支援装置 | |
JPH11110254A (ja) | ソフトウェアをデバッグする際に例外を識別するための装置および方法 | |
US5404466A (en) | Apparatus and method to set and reset a pipeline instruction execution control unit for sequential execution of an instruction interval | |
JPH03204737A (ja) | 信号処理プロセッサのデバッグ回路 | |
JPH11110255A (ja) | ソフトウェアをデバッグするための装置および方法 | |
JPH04328644A (ja) | デバッグ支援装置 | |
JP2715988B2 (ja) | プログラムシミュレータ装置及びプログラムデバッグ方法 | |
JPS60262251A (ja) | マイクロプロセツサ開発支援装置 | |
JP3110391B2 (ja) | プログラム再実行方法 | |
JP2679603B2 (ja) | マイクロコンピュータ | |
JPH03113646A (ja) | トレース回路 | |
JPH0581087A (ja) | プロセサのモニタ方式 | |
JPH05108404A (ja) | デバツガシステム | |
JPH04167146A (ja) | 情報処理装置のアドレストレース方式 | |
JPH05181702A (ja) | ソフトデバッガ | |
JPH0561717A (ja) | プログラムデバツグ装置 | |
JPS6286442A (ja) | デ−タ処理装置 | |
JPH01201741A (ja) | トレース回路 | |
JPS63228237A (ja) | プログラムデバツグ方式 | |
JPH07281924A (ja) | トレース装置及びこれを備えたエミュレータ | |
JPH07191875A (ja) | デバッガー | |
JPH05204710A (ja) | イベントトレース装置 | |
JPH0724030B2 (ja) | デバック装置 | |
JPH0795288B2 (ja) | マイクロコンピュータ |