JP2864979B2 - ソフトウェアデバッガ - Google Patents

ソフトウェアデバッガ

Info

Publication number
JP2864979B2
JP2864979B2 JP5353388A JP35338893A JP2864979B2 JP 2864979 B2 JP2864979 B2 JP 2864979B2 JP 5353388 A JP5353388 A JP 5353388A JP 35338893 A JP35338893 A JP 35338893A JP 2864979 B2 JP2864979 B2 JP 2864979B2
Authority
JP
Japan
Prior art keywords
instruction
information
collection
point
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.)
Expired - Fee Related
Application number
JP5353388A
Other languages
English (en)
Other versions
JPH07200350A (ja
Inventor
千鶴 太田
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
Nippon Electric Co Ltd
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 Nippon Electric Co Ltd filed Critical Nippon Electric Co Ltd
Priority to JP5353388A priority Critical patent/JP2864979B2/ja
Publication of JPH07200350A publication Critical patent/JPH07200350A/ja
Application granted granted Critical
Publication of JP2864979B2 publication Critical patent/JP2864979B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、予め設定された中断点
毎にプログラムの実行を停止しながらデバッグ対象プロ
グラムの実行を行うソフトウェアデバッガの改良に関す
る。
【0002】
【従来の技術】一般にソフトウェアデバッガでは、デバ
ッグ対象プログラムに設定された中断点に達すると、プ
ログラムの実行を停止し、種々のデバッグコマンドの受
け付けを可能にする。デバッグコマンドとしては種々の
コマンドがあり、例えばプログラムが使用している変数
の現在値を知りたければ、変数名を指定した参照コマン
ドを入力すれば、その時点のその変数の値がCRT等の
表示装置に表示されるようになっている。なお、この参
照コマンドは、実行を停止したプログラム中から該当す
る変数の現在値を取得するものであるため、その中断点
における変数の値しか参照することはできない。
【0003】
【発明が解決しようとする課題】しかしながら、プログ
ラムのデバッグ作業においては、現中断点での変数の値
だけでなく既に通過した中断点での変数の値を再度確認
したいことが良く起きる。このようなことは、従来のソ
フトウェアデバッガではできないため、各中断点で参照
した変数の値を作業者自身が別に記録しておく必要があ
り、デバッグ作業を効率良く進めることができないとい
う問題点があった。
【0004】なお、中断点で参照した変数の値を表示装
置に表示し続けておけば、過去の中断点での変数の値も
確認することはできるが、若し、或る中断点で変数の値
を参照するのを忘れると、プログラムを始めから実行し
直さなければ、変数の値を知ることはできなくなってし
まう。
【0005】本発明はこのような事情に鑑みて提案され
たものであり、その目的は、作業者が中断点で変数の値
を実際に参照したか否かにかかわらず、既に通過した中
断点での変数の値を遡って参照することのできるソフト
ウェアデバッガを提供することにある。
【0006】
【課題を解決するための手段】本発明は上記の目的を達
成するために、予め設定された中断点毎にプログラムの
実行を停止しながらデバッグ対象プログラムの実行を行
うソフトウェアデバッガにおいて、前記デバッグ対象プ
ログラムの命令のうち、コマンドによって設定された、
情報収集の開始点となる命令および情報収集の終了点と
なる命令を保持するテーブルと、収集された情報を保存
する収集情報格納手段と、前記テーブルに保持された情
報収集開始点となる命令から情報収集終了点となる命令
までの各命令の実行時に、その命令によって破壊される
変数の値を含む前記デバッグ対象プログラムの実行情報
を収集して前記収集情報格納手段に格納する情報収集手
段と、前記収集情報格納手段に保存された収集情報を表
示装置に表示する収集情報表示制御手段とを備え、且
つ、 実行される命令が前記デバッグ対象プログラムを構
成する或るモジュールから別モジュールに制御を移行し
又は復帰する命令である場合、モジュール間の引数の値
を実行情報として収集保存するように構成されている。
【0007】
【作用】本発明のソフトウェアデバッガにおいては、情
報収集手段が、テーブルに保持された情報収集開始点と
なる命令から情報収集終了点となる命令までの各命令の
実行時に、その命令によって破壊される変数の値を含む
デバッグ対象プログラムの実行情報を収集して収集情報
格納手段に格納し、また、実行される命令が前記デバッ
グ対象プログラムを構成する或るモジュールから別モジ
ュールに制御を移行し又は復帰する命令である場合、モ
ジュール間の引数の値を実行情報として収集して収集情
報格納手段に格納し、収集情報表示制御手段が、その収
集情報格納手段に保存された収集情報を利用者の要求に
従って表示装置に表示する。
【0008】
【実施例】次に本発明の実施例について図面を参照して
詳細に説明する。
【0009】図1を参照すると、本発明のソフトウェア
デバッガの一実施例は、命令実行手段1,プログラム実
行領域2,情報収集手段3,データ参照更新手段4,中
断・収集点テーブル5,レジスタ6,収集情報表示制御
手段7,収集情報格納手段8,制御手段9,CRT10
およびキーボード11を備えている。
【0010】また、収集情報表示制御手段7は、前情報
表示制御手段71と後情報表示制御手段72とを有し、
収集情報格納手段8は、主テーブル81とデータ退避領
域82と引数退避テーブル83と引数退避領域84とで
構成されている。
【0011】次に、このように構成された本実施例の全
体の動作と各部の機能を、その理解を容易にするために
簡単なプログラムの例を挙げて説明する。
【0012】図2はデバッグ対象となるプログラムの例
を示す。この例のプログラムPは、モジュールM1とモ
ジュールM2とで構成されている。モジュールM1は、
変数Cに変数Aの値を代入する命令I1,制御をモジュ
ールM2に移す移行命令I2,モジュールM2からの復
帰後に変数A,Bの加算値を変数Bに代入する命令I6
を含む。モジュールM2は、変数Aを+1する命令I
3,変数Bを+2する命令I4,制御をモジュールM1
に戻す復帰命令I5を含む。プログラムの実行は図中の
矢印に示すように、命令I1,I2,I3,I4,I
5,I6の順に行われる。ここで、変数はA,B,Cの
3つであり、モジュールM1,M2で共通な変数はAと
Bである。また、各変数の初期値はA=1,B=1,C
=0とする。なお、このプログラムPは図1のプログラ
ム実行領域2に格納される。
【0013】図1のキーボード11から、プログラムP
をトレースモードで起動するコマンドが入力されると、
制御手段9により命令実行手段1が起動され、命令実行
手段1は図3に示す処理を開始する。
【0014】命令実行手段1は、先ず、制御手段9を通
じてCRT10にコマンド入力画面を表示して、コマン
ドが入力されるのを待つ(S1)。
【0015】この時点で作業者は、中断点設定コマンド
を使用して中断点を設定し、また、情報収集範囲設定コ
マンドを使用して情報収集範囲を設定する。今、中断点
設定コマンドによって例えばモジュールM1の命令I
2,モジュールM2の命令I4が中断点として指定され
たとすると、命令実行手段1は、その旨を中断・収集点
テーブル5に設定する。また、情報収集範囲設定コマン
ドによって例えばモジュールM1の命令I1が収集開始
点,モジュールM1の命令I6が収集終了点として指定
されたとすると、命令実行手段1は、その旨を中断・収
集点テーブル5に設定する。これにより、中断・収集点
テーブル5には図5に示すような情報が設定される。
【0016】その後、作業者が命令実行コマンドをキー
ボード11から入力すると、命令実行手段1は図3の処
理S1から処理S2へ進み、プログラムPの最初に実行
すべきモジュールM1の命令I1が情報収集する範囲内
の命令か否かを中断・収集点テーブル5を参照して判別
する(S2)。今の場合、命令I1は情報収集範囲内の
命令であるため、必要な情報を渡して情報収集手段3を
呼び出す(S3)。
【0017】呼び出された情報収集手段3は、図4に示
す処理を行う。先ず、命令実行手段1が実行しようとし
た命令I1が情報収集を開始する命令か否かを判別する
(S11)。今の場合、命令I1は情報収集を開始する
命令なので、処理S12に進み、以下の処理を行う。
【0018】先ず、ネストカウンタを0に初期化する。
次に、収集情報格納手段8の主テーブル81の領域とし
て、図6に示すようなnのサイズの領域を確保する。こ
こで、nは以下の式で与えられる。 n=a+命令数×b+c
【0019】但し、aは主テーブル81のヘッダ部のサ
イズで固定長である。また、bは1命令当たり必要とな
る情報部の領域のサイズを、「命令数」は情報収集開始
から終了までの現モジュールM1内の命令数(従って図
2の場合は3命令)を、cは最後の命令I6で全モジュ
ール内の全変数を退避する領域のアドレスを書き込む領
域のサイズで、これも固定長である。
【0020】情報収集手段3は上述のようにして主テー
ブル81の領域を確保すると、続いて、図7に示すよう
に、主テーブル81のヘッダ部に、モジュール名M1,
情報収集開始命令I1,情報収集終了命令I6,命令数
3を書き込む。
【0021】その後、情報収集手段3は、処理S13へ
進んで、命令実行手段1が実行しようとした命令I1が
移行または復帰の命令か、それ以外の命令かを判別し、
移行または復帰の命令であれば処理S18に進み、それ
以外の命令であれば処理S14に進む。今の場合、命令
I1は移行または復帰の命令ではないので、処理S14
へ進む。
【0022】処理S14において、情報収集手段3は、
命令I1実行前のデータを命令実行手段1あるいはプロ
グラム実行領域2から収集する。即ち、実行されようと
している命令I1によって破壊される変数(C)の値
(=0)を収集する。そして、命令I1を、処理S12
で初期設定したネストカウンタの値0および変数Cの値
を書き込むためのデータ退避領域82のアドレス0並び
にそのデータ長1と共に図8に示すように主テーブル8
1の情報部に書き込み(S15)、変数Cの値を図9に
示すようにデータ退避領域82の上記アドレス0の場所
に書き込む(S16)。その後、情報収集手段3は、図
1のレジスタ6に、現実行状態を示すデータ、例えばモ
ジュールM1,命令I1,ネスト0を設定し(S1
7)、制御を命令実行手段1に戻す。
【0023】命令実行手段1は、情報収集手段3から制
御が戻ると、プログラムPを1命令実行する(S4)。
即ち、命令I1を実行する。これにより、変数Aの値1
が変数Cに代入され、変数Cは値1となる。次に、命令
実行手段1は、今回実行した命令I1が情報収集する最
後の命令か否かを判別し(S5)、最後の命令であれば
情報収集手段3を後述する後処理のために呼び出すが、
今の場合、命令I1は最後の命令ではないので、処理S
7に進み、プログラムの最後の命令か否かを判別する。
この場合も命令I1は最後の命令でないので、処理S8
に進み、次の命令は中断点か否かを中断・収集点テーブ
ル5を参照して判別する。
【0024】次の命令はI2であり、図5に示すように
命令I2には中断点が設定されているので、命令実行手
段1はプログラムPの実行を中断して処理S1に戻り、
コマンド入力画面を表示し、コマンドの入力を待つ。
【0025】この中断点でのコマンド入力画面を通じ
て、作業者が従来と同様な変数参照コマンドを入力する
と、制御手段9を通じてデータ参照更新手段4が起動さ
れ、プログラムPの現時点における該当する変数の値が
読み出されて、CRT10に表示される。なお、変数の
値を変更するコマンドを投入すれば、プログラムPの現
時点の変数の値を変更することも可能である。また、新
たな中断点の設定や情報収集範囲の変更,追加等も可能
である。
【0026】その後、作業者が命令実行コマンドをキー
ボード11から入力すると、命令実行手段1は図3の処
理S1から処理S2へ進んで、次に実行すべき命令I2
が情報収集する範囲内の命令であることを判別し、必要
な情報を渡して情報収集手段3を呼び出す(S3)。
【0027】呼び出された情報収集手段3は、図4に示
す処理を開始し、命令実行手段1が実行しようとした命
令I2が情報収集を開始する命令でないので、処理S1
2をスキップして処理S13に進み、当該命令I2が移
行または復帰の命令か否かを判別する。そして命令I2
は移行命令なので、処理S18に進む。
【0028】処理S18において、情報収集手段3は、
命令I2が移行命令なので、ネストカウンタを+1して
1とし、次いで主テーブル81の領域の拡張,引数退避
テーブル83の領域の確保を行う。
【0029】主テーブル81の領域の拡張は次のように
して行う。先ず、移行先モジュールM2の命令数を計算
する。今の場合、移行先モジュールM2の命令数は3な
ので、計算結果は3である。次に、主テーブル81の拡
張分のサイズmを、 m=1命令のサイズ(b;定数)×命令数 によって計算する。従って、今の場合の計算結果はm=
3bとなり、この3b分のサイズを拡張する。この結
果、主テーブル81は図10に示すように拡張される。
なお、連続した領域がとれない場合、n+m以上の空き
がある領域にnの部分を複写した後に拡張する。
【0030】また、引数退避テーブル83の領域の確保
は、図10に示すように、ヘッダ部と情報部とのサイズ
に見合った固定長dのサイズの領域を確保することで行
う。
【0031】情報収集手段3は処理S18の実行後、今
回の移行命令I2の引数と情報収集している変数のこの
時点での値を収集する(S19)。従って、今の場合、
A=1,B=1,C=1が収集される。次いで、主テー
ブル81の情報部に、図10に示すように、今回の命令
I2と引数退避テーブル83のアドレス100とを書き
込み(S20)、引数退避テーブル83のヘッダ部に命
令I2を、情報部に移行元モジュールM1,移行先モジ
ュールM2,使用する引数退避領域の開始アドレス15
0およびデータ長3を書き込み(S21)、最後に、引
数退避領域84のアドレス150の箇所にA=1,B=
1,C=1を書き込む(S22)。そして、レジスタ6
に、現実行状態を示すデータ、即ちモジュールM1,命
令I2,ネスト0を設定し(S17)、制御を命令実行
手段1に戻す。
【0032】命令実行手段1は、情報収集手段3から制
御が戻ると、プログラムPの命令I2を実行する(S
4)。これにより制御がモジュールM1からモジュール
M2に移行する。次に、命令実行手段1は、今回実行し
た命令I2が情報収集する最後の命令でも、プログラム
の最後の命令でもないので、処理S8において次の命令
I3が中断点か否かを判別し、中断点の命令でないの
で、処理S2に進む。
【0033】そして、次に実行しようとする命令I3は
情報収集する範囲内の命令なので、情報収集手段3を呼
び出す。情報収集手段3はこれに応答して図4に示す処
理を開始し、命令I3は移行または復帰の命令でないの
で、処理S14,S15,S16を実行することによ
り、図11に示すように、今回の命令I3に関して、主
テーブル81に命令I3,ネスト1,データ退避領域へ
のアドレス1,データ長1を書き込むと共に、データ退
避領域82のアドレス1に変数A=1を書き込む。そし
て、レジスタ6にモジュールM2,命令I3,ネスト1
を設定して(S17)、制御を命令実行手段1に戻す。
【0034】命令実行手段1は、次に命令I3を実行す
る。これにより、変数Aの値が+1される。そして、命
令I3は情報収集する最後の命令でも、プログラムの最
後の命令でもないので、処理S8において次の命令I4
が中断点か否かを判別し、中断点の命令なので、処理S
1に進み、再びコマンド入力画面を表示し、コマンドの
入力を待つ。
【0035】さて、この時点で作業者が、前回の中断点
での変数の値を再度確認する必要が生じたことから、キ
ーボード11から前中断点情報表示コマンドを入力した
とすると、制御手段9によって収集情報表示制御手段7
の前情報表示制御手段71が起動される。
【0036】前情報表示制御手段71は起動されると、
図12に示す処理を開始し、先ず、前中断点情報表示コ
マンドによる前中断点情報の表示要求か、後述する前命
令点情報表示コマンドによる前命令点表示要求かを判別
し(S31)、今の場合、前中断点情報の表示要求なの
で、処理S32に進む。この処理S32では、レジスタ
6を参照して現状態がモジュールM2の命令I3をネス
ト1で実行中であることを確認し、それより1つ前の中
断点の収集情報を収集情報格納手段8から検索する。即
ち、図11に示す主テーブル81の現状態に相当する情
報部の箇所から、中断・収集点テーブル5に設定されて
いる何れかの中断点の命令の1つ前の命令に遭遇するま
で収集情報を実行順と逆に辿って、1つの前の中断点の
収集情報が存在するか否かを検索する。そして、今の場
合、中断点である命令I2の1つ前の命令I1の収集情
報が存在するので、アドレス0に従ってデータ退避領域
82から変数C=0を読み込み、制御手段9を通じてC
RT10に表示する。そして、レジスタ6を今回表示し
た収集情報にかかる命令I1に合致するように、モジュ
ールM1,命令I1,ネスト0に変更する(S35)。
【0037】これにより、利用者は前回の中断点である
命令I2実行直前の変数等を確認することができる。
【0038】なお、作業者が再び前中断点情報表示コマ
ンドを入力すると、前情報表示制御手段71が再び起動
されるが、レジスタ6はモジュールM1,命令I1,ネ
スト0に変更されているので、それより1つの前の中断
点の収集情報が検索されることになり、今の場合、その
ような中断点の収集情報は存在しないため、図12の処
理S38でエラーがCRT10に表示される。
【0039】また、レジスタ6にモジュールM2,命令
I3,ネスト1が設定されている上記中断点で、作業者
がキーボード11から前命令点情報表示コマンドを入力
すると、制御手段9によって起動された前情報表示制御
手段71は図12の処理S31から処理S36へ進み、
レジスタ6に設定されている命令の1つの前の命令に関
する収集情報を収集情報格納手段8から検索する。従っ
て、図11の場合、命令I2に関して主テーブル81の
情報部に格納されている引数アドレス100に従って引
数退避テーブル83から移行元モジュールM1,移行先
モジュールM2を読み込み(S37)、更にその開始ア
ドレス150に従って引数退避領域84からA=1,B
=1,C=1を読み込んで、CRT10に表示し(S3
4)、レジスタ6をモジュールM1,命令I2,ネスト
0に変更する(S35)。これにより、利用者は中断点
である命令I4の1つの前の命令の実行前の変数の値を
確認することができる。なお、再び前命令点情報表示コ
マンドが入力されると、再びレジスタ6に設定されてい
る命令の1つの前の命令にかかる収集情報が表示され、
そのような収集情報が存在しない場合にはエラーが表示
される(S38)。
【0040】他方、作業者がキーボード11から後中断
点情報表示コマンドを入力した場合、制御手段9によっ
て収集情報表示制御手段7の後情報表示制御手段72が
起動される。
【0041】後情報表示制御手段72は起動されると、
図13に示す処理を開始し、先ず、後中断点情報表示コ
マンドによる後中断点情報の表示要求か、後述する後命
令点情報表示コマンドによる後命令点情報の表示要求か
を判別し(S41)、今の場合、後中断点情報の表示要
求なので、処理S42に進む。この処理S42では、レ
ジスタ6を参照して現状態を確認し、それより命令実行
順で1つ先の中断点の収集情報を収集情報格納手段8か
ら検索する。
【0042】従って、前述した前情報表示制御手段71
によってレジスタ6の内容がモジュールM1,命令I
1,ネスト0に変更されている状態で後中断点情報表示
コマンドが入力された場合、後情報表示制御手段72
は、現状態がモジュールM1の命令I1をネスト0で実
行中であることを確認し、それより1つ後の中断点の収
集情報を収集情報格納手段8から検索する。即ち、図1
1に示す主テーブル81の現状態に相当する情報部の箇
所から、中断・収集点テーブル5に設定されている何れ
かの中断点の命令に遭遇するまで収集情報を命令実行方
向に辿って、1つ後の中断点の収集情報が存在するか否
かを検索する。そして、今の場合、中断点である命令I
4の1つ前の命令I3の収集情報が存在するので、開始
アドレス1に従ってデータ退避領域82から変数A=1
を読み込み(S43)、これをCRT10に表示する
(S44)。そして、レジスタ6をモジュールM2,命
令I3,ネスト1に変更する(S45)。
【0043】なお、作業者が再び後中断点情報表示コマ
ンドを入力すると、後情報表示制御手段72が再び起動
されるが、レジスタ6はモジュールM2,命令I3,ネ
スト1に変更されており、それより1つの先の中断点の
収集情報は未だ収集されていないので、図13の処理S
48でエラーがCRT10に表示される。
【0044】また、レジスタ6に例えばモジュールM
1,命令I1,ネスト0が設定されている中断点で、作
業者がキーボード11から後命令点情報表示コマンドを
入力すると、制御手段9によって起動された後情報表示
制御手段72は図12の処理S41から処理S46へ進
み、レジスタ6に設定されている命令の1つの先の命令
に関する収集情報を収集情報格納手段8から検索する。
従って、図11の場合、命令I2に関する収集情報であ
る、命令I2,移行元モジュールM1,移行先モジュー
ルM2,変数A=1,B=1,C=1が読み込まれ(S
47)、それらがCRT10に表示され(S44)、レ
ジスタ6がモジュールM1,命令I2,ネスト0に変更
される(S45)。これにより、利用者は中断点の1つ
の先の命令実行前の変数の値を確認することができる。
なお、再び後命令点情報表示コマンドが入力されると、
再びレジスタ6に設定されている命令の1つの先の命令
にかかる収集情報が表示され、そのような収集情報が存
在しない場合にはエラーが表示される(S48)。
【0045】さて、中断点である命令I4の直前で実行
を中断していたプログラムPの実行を再開するために、
作業者がキーボード11から命令実行コマンドを入力す
ると、命令実行手段1は図3に示す処理S2から実行を
再開する。これにより、再び情報収集手段3が起動さ
れ、図4に示す処理が開始される。
【0046】即ち、命令I4は移行または復帰の命令で
ないので、処理S14で命令I4の実行前のデータとし
て変数B=1を収集し、主テーブル81に図11に示す
ように命令I4,ネスト1,アドレス2,データ長1を
書き込み(S15)、データ退避領域82のアドレス2
に変数B=1を書き込む(S16)。そして、レジスタ
6にモジュールM2,命令I4,ネスト1を設定し(S
17)、制御を命令実行手段1に戻す。
【0047】命令実行手段1は、命令I4を実行する
(S4)。これにより、変数Bが3に変更される。そし
て、次の命令I5は中断点ではないので、処理S8から
処理S2に戻る。
【0048】戻った処理S2では、今回の命令I5が情
報収集範囲内の命令なので情報収集手段3を呼び出す
(S3)。情報収集手段3は、図4の処理S13におい
て、命令I5が復帰命令であることを判別し、処理S1
8に進む。
【0049】この処理S18では、命令I5は復帰命令
なので、ネストカウンタを−1して0にする。また、引
数退避テーブル83の領域を確保する。そして、復帰前
の引数データとして、A=2,B=3を収集し(S1
9)、図11に示すように、主テーブル81の情報部に
命令I5,引数アドレス200を設定し(S20)、引
数退避テーブルのアドレス200の箇所に命令I5,復
帰元モジュールM2,復帰先モジュールM1,開始アド
レス153,データ長2を設定し(S21)、引数退避
テーブルのアドレス153の箇所にA=2,B=3を書
き込む(S22)。そして、レジスタ6にモジュールM
2,命令I5,ネスト1を設定し(S17)、制御を命
令制御手段1に戻す。
【0050】命令制御手段1は、命令I5を実行する。
これにより、制御はモジュールM2からモジュールM1
へ戻される。そして、命令制御手段1は、再び処理S2
に戻る。
【0051】戻った処理S2では、今回の命令I6は情
報収集範囲内の命令なので情報収集手段3を呼び出す
(S3)。情報収集手段3は、図4の処理S13におい
て、命令I6が移行または復帰命令以外の命令であるこ
とを判別し、処理S14で命令I6実行前のデータとし
て変数B=3を収集し、図11に示すように主テーブル
81の情報部に命令I6,ネスト0,アドレス3,デー
タ長1を書き込み(S15)、データ退避領域82のア
ドレス3の箇所に変数B=3を書き込む(S16)。そ
して、制御を命令実行手段1に戻す。
【0052】命令実行手段1は、命令I6を実行する。
これにより、変数Bは5に変更される。そして、命令I
6は情報収集する最後の命令であることを中断・収集点
テーブル5を参照して判別すると(S5)、情報収集手
段3を後処理のために呼び出す(S6)。そして、制御
が戻ると、命令I6はプログラムPの最後の命令なの
で、プログラムPの実行制御を終了する。
【0053】命令実行手段1から後処理のために呼び出
された情報収集手段3は図14に示す処理を開始し、図
11に示すように、主テーブル81の情報部にアドレス
155を書き込み(S51)、引数退避領域84のアド
レス155の箇所に変数の最終の値(A=2,B=5,
C=1)を書き込む(S52)。
【0054】このようにしてプログラムPの実行が終了
した時点では、各命令に対応して収集された変数等の情
報は収集情報格納手段8に格納されているので、前述し
たと同様にして収集情報表示制御手段7を使えば、任意
の中断点または命令箇所の変数等を遡って参照すること
が可能である。
【0055】
【発明の効果】以上説明したように本発明によれば以下
のような効果を得ることができる。
【0056】作業者によるコマンドで設定された情報収
集開始点となる命令から情報収集終了点となる命令まで
の各命令の実行時に、その命令によって破壊される変数
の値を含むデバッグ対象プログラムの実行情報を自動的
に収集して保存しておき、後に利用者から要求があれば
それを表示装置に表示するようにしたので、作業者は各
中断点で変数の値を実際に参照したか否かにかかわら
ず、既に通過した中断点での変数の値を遡って参照する
ことができ、デバッグ作業の効率を高めることができ
る。
【0057】実行される命令がデバッグ対象プログラム
を構成する或るモジュールから別モジュールに制御を移
行し又は復帰する命令の場合には、モジュール間の引数
の値を実行情報として収集保存するので、各モジュール
間の引数の値も遡って参照することができる。
【0058】収集情報格納手段を構成する主テーブル,
引数退避テーブルを適宜に拡張,生成するようにしたの
で、事前に必要と考えられる領域を最大限割り当ててお
く場合に比べ、格納領域の無駄が少なくなり、情報収集
によるメモリの圧迫を防止できる。
【0059】前情報表示制御手段および後情報表示制御
手段を備えたことにより、既に通過した中断点の命令ま
たは既に通過した中断点以外の命令における実行情報
を、命令の実行順と逆方向の順に表示させたり、或いは
それとは逆に命令の実行順に表示させたりすることが任
意に行える。
【図面の簡単な説明】
【図1】本発明の一実施例の構成図である。
【図2】デバッグ対象プログラムの例を示す図である。
【図3】命令実行手段の処理例を示すフローチャートで
ある。
【図4】情報収集手段の処理例を示すフローチャートで
ある。
【図5】中断・収集点テーブルの内容説明図である。
【図6】情報収集を開始する命令の時点で実行される主
テーブルの領域確保の説明図である。
【図7】ヘッダ部への書き込みを終えた主テーブルの内
容説明図である。
【図8】命令I1の時点で主テーブルの情報部へ書き込
まれるデータの説明図である。
【図9】命令I1の時点でデータ退避領域へ書き込まれ
るデータと主テーブルとの関係を示す図である。
【図10】主テーブルの領域の拡張の様子と引数退避テ
ーブルおよび引数退避領域と主テーブルとの関係を示す
図である。
【図11】最後の命令まで実行された時点の主テーブ
ル,データ退避領域,引数退避テーブルおよび引数退避
領域の内容説明図である。
【図12】前情報表示制御手段の処理例を示すフローチ
ャートである。
【図13】後情報表示制御手段72の処理例を示すフロ
ーチャートである。
【図14】後処理のために呼び出された際に情報収集手
段3が行う処理例を示すフローチャートである。
【符号の説明】
1…命令実行手段 2…プログラム実行領域 3…情報収集手段 4…データ参照更新手段 5…中断・収集点テーブル 6…レジスタ 7…収集情報表示制御手段 71…前情報表示制御手段 72…後情報表示制御手段 8…収集情報格納手段 81…主テーブル 82…データ退避領域 83…引数退避テーブル 84…引数退避領域 9…制御手段 10…CRT 11…キーボード

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】 予め設定された中断点毎にプログラムの
    実行を停止しながらデバッグ対象プログラムの実行を行
    うソフトウェアデバッガにおいて、 前記デバッグ対象プログラムの命令のうち、コマンドに
    よって設定された、情報収集の開始点となる命令および
    情報収集の終了点となる命令を保持するテーブルと、 収集された情報を保存する収集情報格納手段と、 前記テーブルに保持された情報収集開始点となる命令か
    ら情報収集終了点となる命令までの各命令の実行時に、
    その命令によって破壊される変数の値を含む前記デバッ
    グ対象プログラムの実行情報を収集して前記収集情報格
    納手段に格納する情報収集手段と、 前記収集情報格納手段に保存された収集情報を表示装置
    に表示する収集情報表示制御手段とを備え、且つ、 実行される命令が前記デバッグ対象プログラムを構成す
    る或るモジュールから別モジュールに制御を移行し又は
    復帰する命令である場合、モジュール間の引数の値を実
    行情報として収集保存するようにした ことを特徴とする
    ソフトウェアデバッガ。
  2. 【請求項2】 前記収集情報格納手段は、 破壊される変数の値を格納する、連続した領域であるデ
    ータ退避領域と、 モジュール間の引数の値を格納する、連続した領域であ
    る引数退避領域と、 移行命令または復帰命令毎に前記収集情報格納手段によ
    って動的に生成されるテーブルであって、引数の値を格
    納するために使用した前記引数退避領域のアドレス,デ
    ータ長および関連するモジュール名を保持する引数退避
    テーブルと、 実行される命令の順に、実行される命令,ネスト,その
    命令によって破壊される変数の値を格納するために使用
    した前記データ退避領域のアドレスおよびデータ長を、
    また、移行または復帰命令にあっては、実行される命
    令,対応する引数退避テーブルのアドレスを保持するテ
    ーブルであって、前記収集情報格納手段によって適宜領
    域が拡張される主テーブルとで構成されることを特徴と
    する請求項記載のソフトウェアデバッガ。
  3. 【請求項3】 前記収集情報表示制御手段は、 既に通過した中断点の命令または既に通過した中断点以
    外の命令における実行情報を、命令の実行順と逆方向の
    順に、前記収集情報格納手段から読み込んで前記表示装
    置に表示する前情報表示制御手段を含むことを特徴とす
    る請求項または記載のソフトウェアデバッガ。
  4. 【請求項4】 前記収集情報表示制御手段は、 既に通過した中断点の命令または既に通過した中断点以
    外の命令における実行情報を、命令の実行順に、前記収
    集情報格納手段から読み込んで前記表示装置に表示する
    後情報表示制御手段を含むことを特徴とする請求項
    載のソフトウェアデバッガ。
JP5353388A 1993-12-29 1993-12-29 ソフトウェアデバッガ Expired - Fee Related JP2864979B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5353388A JP2864979B2 (ja) 1993-12-29 1993-12-29 ソフトウェアデバッガ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5353388A JP2864979B2 (ja) 1993-12-29 1993-12-29 ソフトウェアデバッガ

Publications (2)

Publication Number Publication Date
JPH07200350A JPH07200350A (ja) 1995-08-04
JP2864979B2 true JP2864979B2 (ja) 1999-03-08

Family

ID=18430505

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5353388A Expired - Fee Related JP2864979B2 (ja) 1993-12-29 1993-12-29 ソフトウェアデバッガ

Country Status (1)

Country Link
JP (1) JP2864979B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3990332B2 (ja) 2003-08-29 2007-10-10 日本電気株式会社 データ処理システム
JP2006350676A (ja) * 2005-06-16 2006-12-28 Hitachi Software Eng Co Ltd 組込みシステムのプログラムデバッグ方法
JP2007004516A (ja) * 2005-06-24 2007-01-11 Hitachi Software Eng Co Ltd 組込みシステムのプログラムデバッグ方法
JP4633073B2 (ja) * 2007-02-26 2011-02-16 日本電気株式会社 データ処理システム

Also Published As

Publication number Publication date
JPH07200350A (ja) 1995-08-04

Similar Documents

Publication Publication Date Title
JP3399665B2 (ja) 情報処理装置
JP2864979B2 (ja) ソフトウェアデバッガ
JP3538292B2 (ja) 実行時プログラム翻訳方法
JPS63237165A (ja) 工程計画支援装置
JP2570593B2 (ja) デバッグ装置
JP2880330B2 (ja) プログラマブルコントローラのプログラミング装置
JPS60136810A (ja) プログラマブルコントロ−ラ
JP3085309B2 (ja) デバッグシステム
JP3060481B2 (ja) セグメントのロールイン/ロールアウト方式
JP2815638B2 (ja) デバッグ装置
JP3079825B2 (ja) 電子計算機装置
JPH01191269A (ja) 画像制御装置
JP2845694B2 (ja) データ処理装置
JPH0193812A (ja) ヘルプ画面表示方式
JPH02194447A (ja) デバッグ制御方式
JPH05274104A (ja) メニュー選択処理システム
JPH0468446A (ja) デバッグ支援装置
JPH07160543A (ja) 履歴情報記憶方式
JPH06242908A (ja) コンピュータ・システム
JP2000227861A (ja) デバッグ方法及びデバッグ装置
JPH01187647A (ja) トランザクショントレース情報採取方式
JPS62254244A (ja) 情報処理装置
JPH04111119A (ja) オブジェクト管理方式
JPH0546375A (ja) エデイタ装置
JPH04369727A (ja) 演算装置

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees