JPH0659935A - デバッグ装置 - Google Patents

デバッグ装置

Info

Publication number
JPH0659935A
JPH0659935A JP4214307A JP21430792A JPH0659935A JP H0659935 A JPH0659935 A JP H0659935A JP 4214307 A JP4214307 A JP 4214307A JP 21430792 A JP21430792 A JP 21430792A JP H0659935 A JPH0659935 A JP H0659935A
Authority
JP
Japan
Prior art keywords
function
execution
address
program
executed
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.)
Granted
Application number
JP4214307A
Other languages
English (en)
Other versions
JP2800577B2 (ja
Inventor
Masae Kawamata
眞江 川又
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 JP4214307A priority Critical patent/JP2800577B2/ja
Publication of JPH0659935A publication Critical patent/JPH0659935A/ja
Application granted granted Critical
Publication of JP2800577B2 publication Critical patent/JP2800577B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【目的】 プログラムのデバッグを容易にしデバッグ時
間を短縮する。 【構成】 デバッグ対象プログラムのカレントプログラ
ム以外のテキスト領域にアドレストラップを設定し、対
象プログラムが他の関数へ移行するとアドレストラップ
が発生する。アドレストラップのハンドラにより、再度
デバッグ装置が呼び出される。一方、デバッグ開始前に
実行関数をテーブルに登録しておき、アドレストラップ
が発生したアドレスが予定していた関数かどうかをチェ
ックし、違っていた場合はエラーを表示し、一致した場
合はアドレストラップの設定を直し処理を続ける。登録
した関数をすべて実行した場合は正常終了したことを表
示する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、プログラムのデバッグ
に利用する。本発明は、デバッグ時間を短縮することが
できるプログラムデバッグ装置に関する。
【0002】
【従来の技術】従来のプログラムデバッグ装置でデバッ
グ対象プログラムが正しく実行されているかどうか調べ
るためにどのような方法がとられてきたかについて図6
に示す流れ図を用いて説明する。
【0003】最初に実行される予定のいくつか関数の先
頭にブレークポイントを設定し(ステップ301)、プ
ログラムを実行させる(ステップ302)。実行後プロ
グラムがブレークしたか否かを判断し(ステップ30
3)、プログラムが設定されたいずれのブレークポイン
トでもブレークしなかった場合には、プログラムの実行
を強制的に中断する(ステップ304)。さらに細かい
ブレークポイントの設定を行い(ステップ305)、プ
ログラムを再実行する(ステップ302)。
【0004】一方、設定したいずれかのブレークポイン
トでプログラムがブレークされた場合には、それが期待
していた関数であるか否かを調べ(ステップ306)、
期待していた関数であれば次の関数に進むか否かを判断
し(ステップ307)、さらに進む場合にはステップ3
02に戻りプログラムの実行を再開し、進まないと判断
した場合には別の処理を行う(ステップ308)。
【0005】期待していない関数でブレークした場合
は、その予想されなかった関数へ至った経路を推測し、
プログラムの最初の関数で不正な分岐が行われた場所が
不明な場合は、最初のプログラムのいくつかの場所にブ
レークポイントを設定し(ステップ305)、再度プロ
グラムを最初から実行して不正部分を追及していた。
【0006】
【発明が解決しようとする課題】上述した従来のデバッ
グ方式では、プログラムが正しく実行された場合でも、
各関数に設定されたブレークポイントでのブレークが発
生し、ブレークの度にプログラム再開の指示をしなけれ
ばならなかった。
【0007】一方、期待した関数が実行されなかった場
合には、設定したいくつかのブレークポイントのいずれ
でもブレークせずに、プログラムの暴走を生じ、どこで
どのように不正な分岐が生じたのかが容易に推測できな
い場合が多く、また、どこかのブレークポイントでブレ
ークした場合でも、予想しなかった状況のためにどうい
う経路でそのブレークポイントに至ったかが容易に推測
できない場合が多い。
【0008】このように、正しく動作しなかったことが
わかっても、その原因がプログラムのどこにあるかを直
ぐに限定することができず、かなり広い範囲を徐々に縮
小していく作業が必要であった。
【0009】本発明はこのような問題を解決するもの
で、デバッグ対象プログラムが期待した関数を期待する
順番に実行した場合には、その途中に何の指示を与える
ことなく実行を続けることができ、かつ、期待した関数
へ移動しなかった場合にはただちに実行を中止してエラ
ーを通知することができる装置を提供することを目的と
する。
【0010】
【課題を解決するための手段】本発明は、中央処理装
置、入出力装置、記憶装置、および表示装置を備え、前
記中央処理装置に、任意のアドレスと任意のサイズとに
より指定される前記記憶装置のメモリ領域に存在する命
令を実行した場合に例外が発生し例外情報として実行ア
ドレスが通知されるアドレストラップ機能を独立して二
つ以上指定できる手段を含むデバッグ装置において、前
記記憶装置に、デバッグ対策プログラムの全関数のスタ
ートアドレスとテキスト領域の最後を保持する実行関数
登録テーブルを設け、前記中央処理装置に、前記実行関
数登録テーブルを作成する実行関数登録手段と、アドレ
ストラップを設定しプログラムを実行する関数アドレス
トラップモード実行手段と、前記実行関数登録手段およ
び前記関数アドレストラップモード実行手段からの情報
を前記表示装置に表示する実行結果通知手段とを備え、
前記関数アドレストラップモード実行手段に、カレント
の関数のテキストの範囲を調べ、カレントの関数以外の
テキスト領域にアドレストラップを設定するアドレスト
ラップ設定手段と、プログラムを実行するプログラム実
行手段と、アドレストラップが発生したときに、そのア
ドレストラップが発生したアドレスが前記実行関数登録
テーブルのポインタが示す関数のテキスト領域であるか
否かを調べるアドレストラップ処理手段とを含むことを
特徴とする。
【0011】
【作用】実行関数登録テーブルにデバッグ対象プログラ
ムの全関数のスタートアドレスとテキスト領域の最後を
登録しておき、プログラムを実行し終了時に実行関数登
録テーブルに登録した順番に関数が実行されたか否かを
判断する。正しく実行されていなかったときにはエラー
メッセージから正しく実行されていなかった関数が何番
目か、また代わりにどの関数が実行されたかを調べる。
登録順通りに実行された場合には、別の処理を行うの
か、実行関数登録テーブルの設定をし直して先の関数に
進むのかを判断する。
【0012】このように、あらかじめ実行予定の関数を
実行する順番に登録しておくことにより、予定通り実行
されたか否かを自動的に判断することができ、デバッグ
時間を短縮することができる。また、正しく実行されな
かった場合には、実行と同時にその不正実行を知ること
ができ、不正プログラムによる実行の範囲を小さい範囲
にとどめることができる。
【0013】
【実施例】次に、本発明実施例を図面に基づいて説明す
る。図1は本発明実施例の構成を示すブロック図であ
る。
【0014】本発明実施例は、中央処理装置1、入出力
装置2、記憶装置3、および表示装置4を備え、中央処
理装置1に、任意のアドレスと任意のサイズとにより指
定される記憶装置3のメモリ領域31に存在する命令を
実行した場合に例外が発生し例外情報として実行アドレ
スが通知されるアドレストラップ機能を独立して二つ以
上指定できる手段を含み、さらに、本発明の特徴とし
て、記憶装置3のメモリ領域31に、デバッグ対策プロ
グラムの全関数のスタートアドレスとテキスト領域の最
後を保持する実行関数登録テーブル32を設け、中央処
理装置1に、実行関数登録テーブル32を作成する実行
関数登録手段107と、アドレストラップを設定しプロ
グラムを実行する関数アドレストラップモード実行手段
108と、実行関数登録手段107および関数アドレス
トラップモード実行手段108からの情報を表示装置4
に表示する実行結果通知手段112とを備え、関数アド
レストラップモード実行手段108に、カレントの関数
のテキストの範囲を調べ、カレントの関数以外のテキス
ト領域にアドレストラップを設定するアドレストラップ
設定手段109と、プログラムを実行するプログラム実
行手段110と、アドレストラップが発生したときに、
そのアドレストラップが発生したアドレスが実行関数登
録テーブル32のポインタが示す関数のテキスト領域で
あるか否かを調べるアドレストラップ処理手段111と
を含む。
【0015】実行関数登録手段107は実行関数登録テ
ーブル32を作成する。関数アドレストラップモード実
行手段108のアドレストラップ設定手段109は、カ
レントのPCと実行関数登録テーブル32とを参照して
カレントの関数のテキストの範囲を調べ、カレントの関
数以外のテキスト領域にアドレストラップを設定する。
プログラム実行手段110は、カレントのPCからプロ
グラムを実行し、アドレストラップ処理手段111は、
アドレストラップが発生したときに、そのアドレストラ
ップが発生したアドレスが実行関数登録テーブル32の
ポインタが示す関数のテキスト領域であるか否かを調べ
る。このようにして、関数アドレストラップモード実行
手段108は、アドレストラップを設定してプログラム
を実行し、アドレストラップが発生するとアドレストラ
ップの処理を行い、その結果再度アドレストラップの設
定が必要と判断されれば、アドレストラップの設定を行
い処理を繰り返す。関数アドレスストラップモード実行
の中止が判断されれば、必要な情報を実行結果通知手段
112に渡して処理を中止する。実行結果通知手段11
2は与えられた情報を表示する。
【0016】次に、このような機能を有する本発明実施
例の処理動作について説明する。
【0017】図2は本発明実施例装置によるデバッグ処
理の流れを示すフローチャートである。
【0018】まず、実行予定の関数を実行関数登録テー
ブルに登録する(ステップ101)。次に、関数トレー
スモードでプログラムの実行を行う(ステップ10
2)。プログラムの実行が終了すると実行関数登録テー
ブルに登録した順番に関数が実行されたか否かを判断す
る(ステップ103)。正しく実行されなかった場合に
は、示されたエラーメッセージから正しく実行されなか
った関数が何番目であるか、代わりにどの関数が実行さ
れたかを調べる(ステップ104)。実行関数登録テー
ブル通りに処理が実行された場合には、別の処理を行う
のか、または実行関数登録テーブルの設定をし直して先
の関数に進むのかを判断し(ステップ105)、その判
断に基づいてステップ101に戻るか、別の処理を行う
(ステップ106)。
【0019】図3は本発明は実施例におけるメモリおよ
び各テーブルの使用方法を示した図である。
【0020】まず、これから実行する関数を順番に実行
関数登録テーブル120に登録する。119は次に実行
される予定の関数を指し示すポインタである。関数アド
レストラップモードでプログラムが実行されると現在中
断中の関数以外の関数のテキストにアドレストラップが
設定された後プログラムが実行される。113はデバッ
グ対象プログラムのテキスト領域、115は現在中断中
のプログラム、114、116はアドレストラップが設
定された領域である。
【0021】プログラムが中断中の関数以外の関数を実
行するとアドレストラップが発生する。117は例外が
発生したときの例外情報が格納される例外スタックであ
る。118はアドレストラップが発生したときのアドレ
ストラップ発生アドレスである。
【0022】デバッグ装置は、ポインタ119が示す実
行関数121が指し示す全関数アドレステーブル122
の関数アドレス123とアドレストラップ発生アドレス
118とを比較する。関数アドレス123は関数の先頭
アドレスなので、アドレストラップ発生アドレス118
が関数アドレス123より小さければ、新たに実行され
た関数はポインタが示す関数ではない。アドレストラッ
プ発生アドレス118が関数アドレス123より大きけ
れば、更に関数アドレス123の次の関数124とアド
レストラップ発生アドレス118との比較を行う。
【0023】アドレストラップ発生アドレス118が関
数アドレス124より大きければ、新たに実行された関
数はポインタが示す関数ではない。アドレストラップ発
生アドレス118が関数アドレス124より小さけれ
ば、新たに実行された関数はポインタが示す関数であ
る。
【0024】アドレストラップ発生アドレス118が1
21の関数のアドレスでなかった場合はエラーを表示し
てコマンド待ち状態に入る。一致した場合は、図3の1
25に示すように新たにアドレストラップを設定し直
し、ポインタ119を実行関数登録テーブル120の現
在指し示している関数の次の関数126を指し示すよう
に変更する。次の関数126が登録関数終了を示すもの
であれば正常終了したことを示し、コマンド待ち状態に
入る。次の関数126に別の関数が登録されていればプ
ログラムの実行を再開する。
【0025】図4は本発明における第二実施例のプログ
ラムデバッグの処理の流れを示すフローチャートであ
る。
【0026】まず、実行する関数を指定して、関数トレ
ースを実行する(ステップ201)。表示された実行結
果をチェックし正しく実行されたか否かを判断し(ステ
ップ203)、正しく実行されていればステップ201
に戻りさらに実行を続けるか、または別の処理を行う
(ステップ204)。表示された実行結果が正しくなけ
れば、どこから正しくないかを調べプログラムの修正を
する(ステップ205)。
【0027】図5は図4に示す実施例におけるメモリお
よびカウンタの使用方法を示した図である。実行する関
数の数を指定して関数トレースが実行されると、デバッ
グ装置が、対称プログラムのテキスト領域のカレントの
関数207以外のテキスト領域206、208にアドレ
ストラップを設定するとともに実行する関数をカウンタ
209に設定し、プログラムの実行を行う。アドレスト
ラップが発生しプログラムが中断されると、対象プログ
ラムのスタック210の関数コール時にスタックに格納
されるアーギュメントを指し示すアーギュメントポイン
タ211により指し示されるアーギュメントを読み出
す。カウンタ209が0かどうかをチェックし、もしカ
ウンタ209が0でなければ、カウンタ209の値を1
マイナスし、図5の212に示すようにアドレストラッ
プの設定をしなおし処理を続行する。
【0028】カウンタ209の値が0であれば関数アド
レストラップモードによる実行を終了し、同図213に
示すようなトレース結果を表示する。
【0029】これにより、各関数にブレークポイントを
設定することなく、関数の実行トレースを行うことがで
き、かつ関数トレースの情報を収集することができる。
【0030】
【発明の効果】以上説明したように本発明によれば、あ
らかじめ実行予定の関数を実行する順番に登録しておく
ことにより、予定通り実行されたか否かを自動的に判断
することができる。これにより、関数の実行毎にチェッ
クを行う手間がなくなり、デバッグ時間を短縮すること
ができる。また、正しく実行されなかった場合に、不正
に実行された関数が実行されると同時にそれを知ること
ができ、不正なプログラムの範囲を小さい範囲に限定す
ることができる効果がある。
【図面の簡単な説明】
【図1】本発明実施例装置の構成を示すブロック図。
【図2】本発明実施例装置によるデバッグ処理の流れを
示すフローチャート。
【図3】本発明実施例装置におけるメモリおよび各テー
ブルの使用方法を示す図
【図4】本発明第二実施例のプログラムデバッグの処理
の流れを示すフローチャート。
【図5】本発明第二実施例におけるメモリおよびカウン
タの使用方法を示す図。
【図6】従来例装置によるデバッグ処理の流れを示すフ
ローチャート。
【符号の説明】
1 中央処理装置 2 入出力装置 3 記憶装置 4 表示装置 31 メモリ領域 32 実行関数登録テーブル 107 実行関数登録手段 108 関数アドレストラップモード実行手段 109 アドレストラップ設定手段 110 プログラム実行手段 111 アドレストラップ処理手段 112 実行結果通知手段

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 中央処理装置、入出力装置、記憶装置、
    および表示装置を備え、 前記中央処理装置に、任意のアドレスと任意のサイズと
    により指定される前記記憶装置のメモリ領域に存在する
    命令を実行した場合に例外が発生し例外情報として実行
    アドレスが通知されるアドレストラップ機能を独立して
    二つ以上指定できる手段を含むデバッグ装置において、 前記記憶装置に、デバッグ対象プログラムの全関数のス
    タートアドレスとテキスト領域の最後を保持する実行関
    数登録テーブルを設け、 前記中央処理装置に、 前記実行関数登録テーブルを作成する実行関数登録手段
    と、 アドレストラップを設定しプログラムを実行する関数ア
    ドレストラップモード実行手段と、 前記実行関数登録手段および前記関数アドレストラップ
    モード実行手段からの情報を前記表示装置に表示する実
    行結果通知手段とを備え、 前記関数アドレストラップモード実行手段に、 カレントの関数のテキストの範囲を調べ、カレントの関
    数以外のテキスト領域にアドレストラップを設定するア
    ドレストラップ設定手段と、 プログラムを実行するプログラム実行手段と、 アドレストラップが発生したときに、そのアドレストラ
    ップが発生したアドレスが前記実行関数登録テーブルの
    ポインタが示す関数のテキスト領域であるか否かを調べ
    るアドレストラップ処理手段とを含むことを特徴とする
    デバッグ装置。
JP4214307A 1992-08-11 1992-08-11 デバッグ装置 Expired - Fee Related JP2800577B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4214307A JP2800577B2 (ja) 1992-08-11 1992-08-11 デバッグ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4214307A JP2800577B2 (ja) 1992-08-11 1992-08-11 デバッグ装置

Publications (2)

Publication Number Publication Date
JPH0659935A true JPH0659935A (ja) 1994-03-04
JP2800577B2 JP2800577B2 (ja) 1998-09-21

Family

ID=16653577

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4214307A Expired - Fee Related JP2800577B2 (ja) 1992-08-11 1992-08-11 デバッグ装置

Country Status (1)

Country Link
JP (1) JP2800577B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009070279A (ja) * 2007-09-14 2009-04-02 Tokyo Electron Ltd 処理システムの制御装置、処理システムの制御方法および制御プログラムを記憶した記憶媒体

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009070279A (ja) * 2007-09-14 2009-04-02 Tokyo Electron Ltd 処理システムの制御装置、処理システムの制御方法および制御プログラムを記憶した記憶媒体

Also Published As

Publication number Publication date
JP2800577B2 (ja) 1998-09-21

Similar Documents

Publication Publication Date Title
US20070074168A1 (en) Automated step type determination
JP2001134466A (ja) デバッグ装置及び方法並びにプログラム記録媒体
US6978399B2 (en) Debug thread termination control points
JPH05341819A (ja) Sfcプログラムのデバッグ装置及びデバッグ方法
JPH0659935A (ja) デバッグ装置
JPS6022772B2 (ja) 擬似障害発生制御方式
JPH0588933A (ja) デバツグ機能を有する並列処理システム
JPH03266140A (ja) プログラムデバッグ方式
JPH06214828A (ja) 対話型デバッグ制御装置
JP2001166966A (ja) デバッガにおける被テストプログラムの実行環境管理方法
JPS61180344A (ja) 高級言語のステツプ実行システム
JP2002157143A (ja) 集積回路試験プログラムのデバッグ支援システム
JPS62290942A (ja) デバツガ起動方式
JPH07191876A (ja) プログラム試験装置とその使用方法
JPH07319730A (ja) テスト・デバッグ方法
JPS6365541A (ja) 障害時のプログラム自動表示方式
JPH02151938A (ja) プログラムデバッグ方式
JPH03225437A (ja) ブレークポイントの停止回数表示方式
JPH08286710A (ja) シーケンス制御モニタ
JPH07134665A (ja) 情報処理装置
JPH0887426A (ja) 自己診断状況表示方式
JPS638946A (ja) プログラムデバツグサポ−ト方式
JPH06222953A (ja) デバッガのブレイク方法
JPH0764819A (ja) デバッグ装置
JPH04296943A (ja) 関数型言語のデバッグ方式

Legal Events

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