JP2800577B2 - デバッグ装置 - Google Patents

デバッグ装置

Info

Publication number
JP2800577B2
JP2800577B2 JP4214307A JP21430792A JP2800577B2 JP 2800577 B2 JP2800577 B2 JP 2800577B2 JP 4214307 A JP4214307 A JP 4214307A JP 21430792 A JP21430792 A JP 21430792A JP 2800577 B2 JP2800577 B2 JP 2800577B2
Authority
JP
Japan
Prior art keywords
function
address
execution
program
address trap
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
JP4214307A
Other languages
English (en)
Other versions
JPH0659935A (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
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)

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)

    (57)【特許請求の範囲】
  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 JPH0659935A (ja) 1994-03-04
JP2800577B2 true 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)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5138322B2 (ja) * 2007-09-14 2013-02-06 東京エレクトロン株式会社 処理システムの制御装置、処理システムの制御方法および制御プログラムを記憶した記憶媒体

Also Published As

Publication number Publication date
JPH0659935A (ja) 1994-03-04

Similar Documents

Publication Publication Date Title
US10191835B2 (en) Multi-threaded debugger support
EP0652518B1 (en) Operating system based performance monitoring of programs
US20070168972A1 (en) Debugging a computer program
JP2001134466A (ja) デバッグ装置及び方法並びにプログラム記録媒体
JP2800577B2 (ja) デバッグ装置
JPH0581070A (ja) プログラマブルコントローラ、およびプログラマブルコントローラにおけるユーザプログラム実行方法
JPH03113648A (ja) プログラムデバツグ方式
JP3339708B2 (ja) イベント記録方式
JPH02118733A (ja) タスクの実行制御方式
JPH0465729A (ja) シンボリック・デバッガ
JPS62290942A (ja) デバツガ起動方式
JPH06214828A (ja) 対話型デバッグ制御装置
JPS61112250A (ja) デ−タ処理システム
JPH03294934A (ja) 高級プログラム言語用デバッガ
JPH0830485A (ja) デバッグ装置
JPS638946A (ja) プログラムデバツグサポ−ト方式
JPH03134742A (ja) デバッグ装置
JPH07134665A (ja) 情報処理装置
JPH03225437A (ja) ブレークポイントの停止回数表示方式
JPS6292033A (ja) プログラムデバツグ装置
JP2001265619A (ja) データトレース方式
JPH03278243A (ja) デバッグ装置
JPH05204710A (ja) イベントトレース装置
JPS61286936A (ja) ステップ動作制御方式
JPH0764819A (ja) デバッグ装置

Legal Events

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