JPH07191875A - デバッガー - Google Patents

デバッガー

Info

Publication number
JPH07191875A
JPH07191875A JP5329293A JP32929393A JPH07191875A JP H07191875 A JPH07191875 A JP H07191875A JP 5329293 A JP5329293 A JP 5329293A JP 32929393 A JP32929393 A JP 32929393A JP H07191875 A JPH07191875 A JP H07191875A
Authority
JP
Japan
Prior art keywords
execution
holding means
change history
program
trace
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
Application number
JP5329293A
Other languages
English (en)
Inventor
Toru Nagata
徹 永田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP5329293A priority Critical patent/JPH07191875A/ja
Publication of JPH07191875A publication Critical patent/JPH07191875A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【構成】デバックのターゲットプログラムを1ステップ
実行する度に、現在実行中のステップの命令により変更
のあったレジスタ、メモリ、プログラムカウンタ等の情
報をロギング情報として記憶していき、現ステップから
スタートステップの方向へバックトレース要求がされた
時、記憶されたロギング情報をもとにして1ステップづ
つ前ステップ(後方)の状態を再現していく事によって
目的のステップにおける状態を再現し再実行を可能とす
る。 【効果】本発明は、直接現ステップから任意のステップ
へ実行状態を移行し、メモリの値、及びレジスタの値を
参照し、再実行することが可能であるため、デバッグ作
業の効率の向上によるデバッグ作業時間の大幅な短縮と
いう効果がある。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、ソフトウェアのデバッ
グを行うため、命令の実行状態をバックトレースするこ
とが可能なデバッガーに関する。
【0002】
【従来の技術】従来のソフトウェアのデバッガーは、図
2の示すようにプログラム保持手段2とトレース実行手
段1と実行状態保持手段3により構成される。実行状態
保持手段3に保持された、現在の変数値や次に実行すべ
きステップの位置等の情報に従って、トレース実行手段
1がプログラム保持手段2より取り込んだ次の実行ステ
ップの命令を実行する。その結果を実行状態保持手段3
に書き込むことで、プログラムの実行を1ステップ毎に
トレースすることが可能である。実行プログラムの実行
経路のトレース方法として命令トレース方式があり特開
昭61−283937号公報を参照できる。この技術は
分岐が成立した時点でのプログラムカウンター値をスタ
ック形式の分岐情報保持手段4に保持する。さらにセグ
メンテーション方式をとっている処理系では、セグメン
トレジスタの値などのセグメント情報を前記スタック形
式の分岐情報保持手段4に同時に記憶し、スタックの内
容を取り出す。これにより、過去に実行された命令の経
路をトレースすることができた。しかし、この方式は以
下に述べる理由から、現在のステップの実行状態から直
接1ステップづつさかのぼり過去の実行状態を再現する
ことはできない。従来のデバッガーにおいて、過去に実
行が行われたステップでのプログラム実行状態を再現す
る手段としては、プログラム先頭ステップから再実行す
ることのみであり、実行中の現ステップ直前のステップ
の実行状態を再現するだけでも、プログラムの先頭ステ
ップから実行しなければならず、このオーバーヘッドが
プログラムのデバッグ効率を低下させていた。
【0003】従来の命令トレース方式によるデバッガー
によって取得できる情報は、分岐時点でのプログラムカ
ウンターのアドレス値とセグメント情報、つまりプログ
ラムの道筋と、現ステップにおけるプログラム実行状
態、そして実行プログラムである。これらの情報だけで
は過去に実行状態の再現は現在のステップから直接再現
することはできない例を指摘する。
【0004】図3を参照すると、汎用レジスタAに数値
a、汎用レジスタBに数値bが格納されていることを現
在ステップでの実行状態とし、これに一般的なCPUに
存在する転送命令例えば、(レジスタAからレジスタB
への転送命令)を実行すると、図4のとおりレジスタB
の値はbからaに変更される。逆に図4の状態から転送
命令が行われる以前の図3の状態へ再現することを考察
する。現在の実行状態は図4のとおり汎用レジスタAに
数値a、汎用レジスタBに数値aが格納されている。プ
ログラムの道筋がわかっているので直前に実行された命
令がレジスタAからレジスタBへの転送命令と判明でき
ることは明白である。しかし、どの様な命令が行われた
か判明しても図3の変更前のレジスタBの情報がどこに
も存在しないので、レジスタBにどのような値が格納さ
れていたかを知る事はできないということになる。つま
り過去の実行状態の再現は現在のステップから直接再現
することはできない。ここでレジスタBの値がステップ
毎に記憶されていれば再現は可能となるが、現実にはレ
ジスタは複数あり、さらにメモリにおいては一般的には
膨大な量なので、処理系におけるすべてのレジスタや、
プログラムカウンター、メモリ等の実行状態をステップ
毎に記憶することは現実的でない。
【0005】
【発明が解決しようとする課題】一般的なプログラムの
デバッグ作業は、そのプログラムの持つ全ての実行ルー
トすなわち、プログラム中に存在する全ての分岐命令の
全ての分岐方向の組み合わせによって決まる膨大な命令
実行順序を、1つ1つテストしていく事により行われて
いる。従来のデバッガによるデバッグの方法は、あるル
ートのテストを行う場合、プログラムの先頭より、1ス
テップずつトレースを進行させ、その途中に現れる分岐
命令の1つ1つにテストすべきルートに合う条件を設定
していく事で行っていた。しかし、次に別のルートのテ
ストを行おうとした場合、たとえそのルートで設定すべ
き分岐条件が直前のテストで設定した物の最後の1つだ
けが異なっていたとしても、再度先頭からトレースを行
う必要があった。このため、プログラム規模の増大とと
もにテストすべきルートが急増すると再実行にともなう
オーバーヘッドにデバッグ工数の大部分を消費すること
になり、効率を低下させていた。
【0006】本発明の目的は、スタートステップからス
テップ毎にレジスタや、メモリ、プログラムカウンタ等
の情報において変更のあったものに限り、変更履歴情報
としてデバッガーによってエントリーされたスタック構
造の記憶装置に蓄積していき、そのエントリーされたス
タックに蓄積された変更履歴情報を基に、前ステップの
実行状態を再現し、かつ前ステップからの再実行を可能
とする事によってデバッグ作業効率の向上によるデバッ
グ作業時間の大幅な短縮が可能となるようなデバッガー
を提供することにある。
【0007】
【課題を解決するための手段】本発明のデバッガーは、
デバッグの対象となる実行プログラムを保持するプログ
ラム保持手段と、このプログラム保持手段で保持された
プログラムを1ステップづつ実行するトレース実行手段
と、このトレース実行手段の実行状態を保持する実行状
態保持手段と、トレース実行手段により変更される実行
状態保持手段の変更履歴を保持する変更履歴保持手段
と、トレース実行手段から1ステップ毎に出力される実
行状態保持手段への書込信号と実行状態保持手段の保持
する状態より変更履歴を作成する実行出力抽出手段と、
変更履歴保持手段5に記憶されている変更履歴より実行
状態保持手段の1ステップ前の状態を再現する変更履歴
書込手段6とを有する。
【0008】
【実施例】次に本発明の一実施例について図面を参照し
て詳細に説明する。
【0009】図1を参照すると、本発明の一実施例は、
デバッグの対象となる実行プログラムを保持するプログ
ラム保持手段2と、このプログラム保持手段2に保持さ
れたプログラムを1ステップづつ実行するトレース実行
手段1と、このトレース実行手段1の実行手段を保持す
る実行状態保持手段3と、トレース実行手段1により変
更される実行状態保持手段3の変更履歴を保持する変更
履歴保持手段5と、トレース実行手段1から1ステップ
毎に出力される実行状態保持手段3への書込信号と実行
状態保持手段3の保持する状態より変更履歴を作成する
実行出力抽出手段4と、変更履歴保持手段5に記憶され
ている変更履歴より実行状態保持手段3の1ステップ前
の状態を再現する変更履歴書き込み手段6とを含む。
【0010】トレース実行手段1は実行状態保持手段3
の持つ現在の実行状態とプログラム保持手段2に記憶さ
れている実行プログラムを読み込んで1ステップ分の実
行を行い、その結果を実行出力抽出手段4を通って実行
状態保持手段3に書き込む。
【0011】プログラム保持手段2はデバッグ対象とな
る実行プログラムを記憶していて、前記トレース実行手
段1の要求により、任意のステップの実行命令を前記ト
レース実行手段1に渡すことができる。
【0012】実行状態保持手段3はデバッグ対象となる
実行プログラムが利用するレジスタやメモリ、プログラ
ムカウンタ等の、現ステップにおける状態が記憶されて
いて、トレース実行手段1および実行出力抽出手段4が
自由に読み出すことができる。
【0013】実行出力抽出手段4は、トレース実行手段
1から通知された現ステップの実行結果すなわち実行状
態保持手段3上の書き換えるべき位置および値より、実
行状態保持手段3上の書き換えるべき位置の状態値、す
なわち変更前の値を読込、変更履歴保持手段5に変更履
歴として記憶させ、その上で実行状態保持手段3に前記
現ステップの実行結果を書込む。
【0014】変更履歴保持手段5は、後入れ先出しのス
タック構造をもつ記憶装置で、実行出力抽出手段4から
通知された変更履歴を記憶し、変更履歴書込手段6から
の要求により出力する。
【0015】変更履歴書込手段6は、バックトレース要
求が生じた時にのみ動作し、変更履歴保持手段5の1番
最後に記憶された変更履歴を読出し、その内容を実行状
態保持手段3に書き込む。
【0016】本発明の特徴である、前ステップの実行状
態の再現は、実行出力抽出手段4と変更履歴保持手段
5、および変更履歴書込手段6により実現される。
【0017】この装置におけるフォワードトレースは、
先ずトレース実行手段1が実行状態保持手段3に記憶さ
れているプログラムカウンタの値を読込み、その値を基
に、プログラム保持手段2から実行すべきステップの命
令を読出す。ここで、実行状態保持手段3のプログラム
カウンタの値は次に実行すべきステップの命令が格納さ
れているプログラム保持手段2上の位置を示している。
トレース実行手段1は読出した命令を実行するため実行
状態保持手段3に記憶されているレジスタ、メモリ等必
要な内容を読込み、実行し、実行結果を変更のあったメ
モリ、レジスタの位置と値として実行出力抽出手段4に
通知する。実行出力抽出手段4は通知された実行結果よ
り作成した変更履歴を変更履歴保持手段5に記憶させた
後、実行状態保持手段3に実行結果を記憶させるため、
通知された実行結果をそのまま実行状態手段3へ出力す
る。この手順を繰り返すことにより、目的のステップま
でのフォワードトレースを実現する。
【0018】1ステップ前の実行状態を再現する手順と
して、変更履歴書込手段6は、変更履歴保持手段5に記
憶されている1番最後に記憶された変更履歴を読込み、
読出された変更履歴に記述されている復元すべきプログ
ラムカウンタやレジスタ、メモリ等の位置と内容を実行
状態保持手段3に書込むことで、1ステップ前の実行状
態を再現する。なぜなら、変更履歴書込手段6により書
き換えられた実行状態保持手段3に記憶されている情報
は1ステップ前の情報と完全に同一であり、この状態で
前記フォワードトレースの手順が行われると、トレース
実行手段1は復元された実行状態保持手段3のプログラ
ムカウンタとレジスタ、メモリの値により命令を実行す
るため、これは1ステップ前にトレース実行手段1が行
った事を繰り返すこととなるからである。この手順を繰
り返すことで目的の実行ステップまでバックトレースを
行うことが可能となる。
【0019】
【発明の効果】プログラムのデバッグ作業は、そのプロ
グラムの持つ全ての実行ルートすなわち、プログラム中
に存在する全ての分岐命令の全ての分岐方向の組み合わ
せによって決まる膨大な命令実行順序を、1つ1つテス
トしていく事により行われている。従来のデバッガによ
るデバッグの方法によれば、あるルートのテストを行う
場合、プログラムの先頭より、1ステップずつトレース
を進行させ、その途中に現れる分岐命令の1つ1つにテ
ストすべきルートに合う条件を設定していく事で行って
いて、次に別のルートのテストを行おうとした場合、た
とえそのルートで設定すべき分岐条件が直前のテストで
設定した物の最後の1とだけが異なっていたとしても、
再度先頭からトレースを行う必要があったが、本発明で
あるデバッガーにおいては、スタートステップから現ス
テップの間の任意のステップの状態に現ステップから直
接トレースし実行状態を再現し、かつそのステップから
の再実行ができるので、わざわざスタートステップから
再実行することなく、任意のステップにおけるレジスタ
の値やメモリの値を参照することができ、かつ実行プロ
グラム内の別の実行ルートの迅速なデバッグが可能とな
る。
【図面の簡単な説明】
【図1】本発明の1実施例を示す図である。
【図2】従来のデバッガーの構成図である。
【図3】従来のデバッガーの説明図である。
【図4】従来のデバッガーの説明図である。
【符号の説明】
1 トレース実行手段 2 プログラム保持手段 3 実行状態保持手段 4 実行出力抽出手段 5 変更履歴保持手段 6 変更履歴書込手段

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 デバッグの対象となる実行プログラムを
    保持するプログラム保持手段と、 このプログラム保持手段で前記プログラムを1ステップ
    づつ実行するトレース実行手段と、このトレース実行手
    段の実行状態を保持する実行状態保持手段3を有するデ
    バッガーにおいて、 前記トレース実行手段により変更される実行状態保持手
    段の変更履歴を保持する変更履歴保持手段と、 前記トレース実行手段から1ステップ毎に出力される実
    行状態保持手段への書込信号と実行状態保持手段の保持
    する状態より変更履歴を作成する実行出力抽出手段と、 前記変更履歴保持手段5に記憶されている変更履歴より
    実行状態保持手段の1ステップ前の状態を再現する変更
    履歴書込手段とを有することを特徴とするデバッガー。
JP5329293A 1993-12-27 1993-12-27 デバッガー Pending JPH07191875A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5329293A JPH07191875A (ja) 1993-12-27 1993-12-27 デバッガー

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5329293A JPH07191875A (ja) 1993-12-27 1993-12-27 デバッガー

Publications (1)

Publication Number Publication Date
JPH07191875A true JPH07191875A (ja) 1995-07-28

Family

ID=18219847

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5329293A Pending JPH07191875A (ja) 1993-12-27 1993-12-27 デバッガー

Country Status (1)

Country Link
JP (1) JPH07191875A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6240529B1 (en) 1997-06-04 2001-05-29 Nec Corporation Debugging method and debugging apparatus for microcomputer system and recording medium on which debug program is recorded

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6285347A (ja) * 1985-10-09 1987-04-18 Nec Eng Ltd 情報処理装置
JPS6324424A (ja) * 1986-07-17 1988-02-01 Mitsubishi Electric Corp プログラムデバツグ方式
JPH0250228A (ja) * 1988-08-11 1990-02-20 Fujitsu Ltd デバッグ処理装置
JPH03158937A (ja) * 1989-11-17 1991-07-08 Hitachi Ltd プログラム実行制御方式
JPH04328644A (ja) * 1991-04-30 1992-11-17 Nec Corp デバッグ支援装置
JPH04342038A (ja) * 1991-05-20 1992-11-27 Nec Corp プログラム異常の解析方法
JPH04352245A (ja) * 1991-05-30 1992-12-07 Fujitsu Ltd シュミレ−ション方式
JPH0581075A (ja) * 1991-09-19 1993-04-02 Mitsubishi Electric Corp ソフトウエア開発装置
JPH05108404A (ja) * 1991-10-16 1993-04-30 Nec Corp デバツガシステム
JPH05181702A (ja) * 1991-12-27 1993-07-23 Sharp Corp ソフトデバッガ

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6285347A (ja) * 1985-10-09 1987-04-18 Nec Eng Ltd 情報処理装置
JPS6324424A (ja) * 1986-07-17 1988-02-01 Mitsubishi Electric Corp プログラムデバツグ方式
JPH0250228A (ja) * 1988-08-11 1990-02-20 Fujitsu Ltd デバッグ処理装置
JPH03158937A (ja) * 1989-11-17 1991-07-08 Hitachi Ltd プログラム実行制御方式
JPH04328644A (ja) * 1991-04-30 1992-11-17 Nec Corp デバッグ支援装置
JPH04342038A (ja) * 1991-05-20 1992-11-27 Nec Corp プログラム異常の解析方法
JPH04352245A (ja) * 1991-05-30 1992-12-07 Fujitsu Ltd シュミレ−ション方式
JPH0581075A (ja) * 1991-09-19 1993-04-02 Mitsubishi Electric Corp ソフトウエア開発装置
JPH05108404A (ja) * 1991-10-16 1993-04-30 Nec Corp デバツガシステム
JPH05181702A (ja) * 1991-12-27 1993-07-23 Sharp Corp ソフトデバッガ

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6240529B1 (en) 1997-06-04 2001-05-29 Nec Corporation Debugging method and debugging apparatus for microcomputer system and recording medium on which debug program is recorded

Similar Documents

Publication Publication Date Title
US6901581B1 (en) Method for software debugging via simulated re-execution of a computer program
US5845064A (en) Method for testing and verification of a CPU using a reference model
EP3577564B1 (en) Efficient retrieval of memory values during trace replay
US20200174910A1 (en) Indexing and searching a time-travel trace for arbitrary length/arbitrary alignment values
JP3206641B2 (ja) マイコンシステムのデバッグ方法、デバッグ装置及びデバッグプログラムを記録した記録媒体
JP3432734B2 (ja) Dma制御装置及びdma制御方法
JPH07191875A (ja) デバッガー
JPH0581087A (ja) プロセサのモニタ方式
JP3110391B2 (ja) プログラム再実行方法
JPH0561717A (ja) プログラムデバツグ装置
JP2536238B2 (ja) 情報処理装置
JPH04328644A (ja) デバッグ支援装置
JP3866023B2 (ja) 情報処理装置および特定用途演算命令の例外処理方法
JPH0277946A (ja) マイクロプログラムのカバレッジ測定方式
JP2908446B1 (ja) コンピュータシミュレータ及びシミュレーション方法
US20180060212A1 (en) High-performance processor instruction tracing
JPS61290546A (ja) マイクロプログラム制御装置のトレ−ス方式
JPS61283937A (ja) 命令トレ−ス方式
JPS626341A (ja) 情報処理装置
JPH05224987A (ja) パイプライン処理方式コンピュータ用プログラムのデバッガ
JPH05158735A (ja) マイクロプログラムのデバッグ方式
JPH0326416B2 (ja)
JPH03252731A (ja) マイクロプロセッサ
JP2002333993A (ja) システムシミュレーション装置及びシミュレーション制御方法
JPH11184731A (ja) 逐次命令実行によりアウトオブオーダ命令実行の動作を模擬するシミュレーション装置及びそのシミュレーション処理方法

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 19971014