JPH0833847B2 - 関数トレース処理方式 - Google Patents

関数トレース処理方式

Info

Publication number
JPH0833847B2
JPH0833847B2 JP63215915A JP21591588A JPH0833847B2 JP H0833847 B2 JPH0833847 B2 JP H0833847B2 JP 63215915 A JP63215915 A JP 63215915A JP 21591588 A JP21591588 A JP 21591588A JP H0833847 B2 JPH0833847 B2 JP H0833847B2
Authority
JP
Japan
Prior art keywords
function
module
program
execution
configuration information
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
JP63215915A
Other languages
English (en)
Other versions
JPH0264748A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP63215915A priority Critical patent/JPH0833847B2/ja
Publication of JPH0264748A publication Critical patent/JPH0264748A/ja
Publication of JPH0833847B2 publication Critical patent/JPH0833847B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Description

【発明の詳細な説明】 〔概要〕 デバッグ対象プログラムの実行制御を行い,デバッグ
情報を出力するデバッグシステムにおける関数トレース
処理方式に関し, 関数単位やモジュール単位でのトレースを可能とし,
効率的にデバッグ対象プログラムの動作試験を行うこと
ができるようにすることを目的とし, デバッグ対象プログラムの構成情報およびソースモジ
ュールごとに定義されている関数情報を記憶するプログ
ラム構成情報記憶部と,このプログラム構成情報記憶部
が記憶する構成情報および関数情報に基づいて,デバッ
グ対象プログラム中の各関数にブレークポイントを設定
する関数トレース制御部と,デバッグ対象プログラムの
実行中断時に,プログラム構成情報記憶部が記憶する構
成情報および関数情報に基づき,関数情報付きのモジュ
ール構成図を表示するとともに,実行中断に係る関数情
報を他と異なる態様で表示するモジュール構成表示制御
部とを備え,関数単位またはモジュール単位でトレース
を行うように構成する。
〔産業上の利用分野〕
本発明は,デバッグ対象プログラムの実行制御を行
い,デバッグ情報を出力するデバッグシステムにおける
関数トレース処理方式に関する。
開発したプログラムの信頼性を向上させるため,その
プログラムが正常に動作するかどうかをテストすること
は重要であり,そのデバッグに要する時間も,年々増加
する傾向にある。そのため,効率のよいデバッグを行う
ことができるツールが必要とされている。
〔従来の技術〕
従来,デバッグのためのツールとし,ソースレベルで
デバッグするものや,機械語レベルでデバッグするもの
など,各種のデバックシステムが用いられている。この
ようなデバッグシステムにより,デバッグ対象プログラ
ムの実行状況をトレースすることが行われる。
しかし,従来のデバッグシステムでは,モジュールの
構成図を表示し,さらに,その図上に各モジュールで定
義された関数も表示しながら,関数単位やモジュール単
位でトレース状況を見せたり,実行制御を行ったりする
ことはできなかった。そのため,従来方式によれば,ソ
ースプログラムの1ステップずつ,もしくは機械語の1
命令ずつトレースするか,または,利用者が,プログラ
ム中の必要な個所に実行を中断させるためのブレークポ
イントを設定して,その設定したブレークポイントに従
ってトレースを行わなければならなかった。
〔発明が解決しようとする課題〕
プログラムをデバッグする場合,例えば最初は,ソー
スプログラムのステップ単位で細かくトレースしていく
ことが必要となるが,ある程度,正常に動作することを
確認した後は,細かいトレースについては,部分的に行
い,大部分については,大まかなトレースによって,効
率よくデバッグすることが必要となる。
このような場合に,特に関数単位やモジュール単位
で,簡単にトレースすることができれば,便利であると
考えられる。さらに,関数単位やモジュール単位でトレ
ースする場合,各関数がどのモジュールで定義されてい
るかとか,各モジュール関係はどうなっているかなど
を,トレース中に簡単に把握することができれば,非常
に有効であると考えられる。
しかし,従来のデバッグシステム(デバッガ)では,
プログラムを構成する各モジュールの関係を記述したモ
ジュール構成情報や,各モジュールで定義された関数の
情報を持たないため,細かいソースレベルまたは機械語
レベルで,トレースすることはできても,関数単位やモ
ジュール単位での大まかなデバッグを,効率よく行うこ
とはできないという問題があった。
もし,関数単位やモジュール単位でトレースを行おう
とすると,人間がソースプログラムリストを調べて,関
数のアドレス等を抽出し,1つ1つブレークポイントを設
定して,デバッグ対象プログラムの実行を中断させるよ
うにしなければならないので,そのブレークポイントの
設定に,非常に時間がかかるという問題があった。
また,その際に,ある関数がどのモジュールで定義さ
れているとか,各モジュールの構成がどのようになって
いるかなどを知るためには,プログラムの設計ドキュメ
ントなどを,デバッグ中に参照しなければならず,その
ための作業が煩雑であるという問題があった。
本発明は上記問題点の解決を図り,関数単位やモジュ
ール単位でのトレースを可能とし,効率的にデバッグ対
象プログラムの動作試験を行うことができるようにする
とともに,モジュール構成等を容易に把握できるように
することを目的としている。
〔課題を解決するための手段〕
第1図は本発明の構成例を示す。
第1図において,10はCPUおよびメモリ等からなる処理
装置,11はモジュール構成情報およびモジュール別関数
情報を記憶するプログラム構成情報記憶部,12はデバッ
グ機能を提供するデバッガ,13は関数トレース制御部,14
は中断判定制御部,15はモジュール構成表示制御部,16は
動作試験の対象となるデバッグ対象プログラム,17はプ
ログラム構成情報が格納されたプログラム構成情報ファ
イル,18はデバッグ対象プログラム16のロードモジュー
ルが格納されたロードモジュールファイル,19はキーボ
ードやマウス等の入力装置,20はディスプレイ装置,21は
デバッグ対象プログラム16のモジュール構成を示すモジ
ュール構成図を表す。
プログラム構成情報ファイル17は,ソースプログラム
の作成時およびその翻訳・結合時に作成されるファイル
であり,プログラムのモジュール構成や,どのような関
数がどのモジュールで定義されているかを示すモジュー
ル別の関数情報が格納されているファイルである。
デバッガ12の起動時に,デバッグ対象プログラム16の
プログラム名が指定されると,プログラム構成情報ファ
イル17の内容が,プログラム構成情報記憶部11に読み出
されるとともに,ロードモジュールファイル18からデバ
ッグ対象プログラム16のローディングが行われる。
関数トレース制御部13は,プログラム構成情報記憶部
11に記憶されている情報に基づいて,デバッグ対象プロ
グラム16中の各関数の先頭に,自動的にブレークポイン
トを設定する処理を行うものである。ブレークポイント
を設定した後,デバッグ対象プログラム16を実行させる
と,各関数の先頭で実行が中断し,関数トレース制御部
13に制御が渡されることになる。
関数トレース制御部13は,デバッグ対象ブログラム16
の実行中断により,制御が渡されると,モジュール構成
表示制御部15を呼び出す。モジュール構成表示制御部15
は,プログラム構成情報記憶部11に記憶されている情報
に基づいて,ディスプレイ装置20に,関数情報付きのモ
ジュール構成図21を表示するとともに,そのモジュール
構成図21において,実行中断に係る関数情報を,反転,
色の変更,網がけ,または矢印表示等により,他の関数
と区別できる態様で表示する処理を行うものである。モ
ジュール構成図21には,デバッグ対象プログラム16に係
るソースモジュールの階層情報および各モジュールで定
義されている関数名の情報が含まれる。
第1図に示すモジュール構成図21では,現在,トレー
スされている関数の名前は,mainである。モジュール構
成図21の表示状態で,入力装置19から“実行”の指示が
あると,関数トレース制御部13は,関数mainから実行を
再開し,次に実行される関数の先頭に設定されたブレー
クポイントにくると,そのブレークポイントから再び制
御を得る。以下,同様に関数単位でトレース制御を行
う。
デバッグ対象プログラム16のすべての関数で,実行を
中断させて,モジュール構成図21を表示するのではな
く,マウス等によって指定された関数が実行されるとき
だけ,デバッグ対象プログラム16の実行を停止させるよ
うにすることもできる。そのため,関数トレース制御部
13は,中断判定制御部14を持つ。
中断判定制御部14は,モジュール構成図21において指
定された関数を記憶しておき,デバッグ対象プログラム
16に設定したブレークポイントから制御が渡されたとき
に,その中断個所が,指定された関数であるかどうかを
判定する。指定された関数でない場合,そのままデバッ
グ対象プログラム16に実行制御を戻し,表面上,実行中
断が起きなかったように見せる。中断個所が指定された
関数であれば,モジュール構成表示制御部15を呼び出
し,モジュール構成図21を表示して,入力装置19からの
入力を待つ。
〔作用〕
本発明では,デバッガ12の処理機能の1つとして,関
数トレース制御部13が設けられ,プログラム構成情報記
憶部11に記憶されているモジュール構成情報およびモジ
ュール別関数情報を使って,関数単位やモジュール単位
によるトレースが可能となっている。これにより,大ま
かなトレースができる。なお,必要な場合には,実行中
断時に,メニュー等により,従来のソースレベルまたは
機械語レベルのデバッグ処理機能を,呼び出すことがで
きるようになっている。
モジュール構成表示制御部15により,ディスプレイ装
置20の画面に,モジュール構成図21が表示されるので,
デバッグ中にモジュール構成および実行中の関数を常に
把握することができる。
〔実施例〕
第2図は本発明の一実施例に係るプログラム構成情報
の例,第3図は本発明の一実施例に係るモジュール構成
表示の例,第4図は本発明の一実施例に係る処理説明図
を示す。
本実施例では,第1図に示すプログラム構成情報記憶
部11において,プログラム構成情報を,第2図(イ)に
示す構造により管理する。
フィールド30は,デバッグ対象プログラム16のプログ
ラム名を記憶する。そして,ポインタ31から,先頭のモ
ジュール情報をポイントする。各モジュール情報の記憶
部は,モジュール名のフィールド32と,同レベルの兄弟
モジュールへのポインタ33と,下位レベルの子モジュー
ルへのポインタ34と,関数名リスト40へのポインタ35と
を持つ。関数名リスト40は,各モジュールで定義されて
いる関数名の一覧表である。
例えば,デバッグ対象プログラムのプログラム名が
“test"であり,そのプログラムが,主となるソースモ
ジュール“main.c"と,副となる2つのソースモジュー
ル“sub1.c"および“sub2.c"とから構成されているとす
る。また,ソースモジュール“main.c"の中で,関数“m
ain"と“error"が定義され,ソースモジュール“sub1.
c"の中で,関数“subx"と“suby"が定義され,ソースモ
ジュール“sub2.c"の中で,関数“subz"が定義されてい
るとする。
このときのプログラム構成情報は,第2図(イ)に示
す形式によって,第2図(ロ)に示すような木構造にな
る。すなわち,“main.c"から,“sub1.c"および“sub
2.c"を連鎖的にポイントし,各々関数名リスト40をポイ
ントする。
第1図に示すモジュール構成表示制御部15は,実行中
断時に,第2図(ロ)に示すようなプログラム構成情報
により,例えば第3図に示すようなモジュール構成図21
を表示する。
プログラムを構成するモジュールの関係が,すぐにわ
かるように,モジュール間の親子関係を,引き出し線を
使って表す。また,各モジュールに対して,その中で定
義されている関数を並べて表示する。
また,現在,ブレークポイントによって実行が中断し
ている関数を,反転表示51により,表示する。この例で
は,モジュール“sub1.c"中の関数“subx"の先頭で実行
が中断している。なお,モジュール構成をブロック図の
ような形式で表してもよい。また,実行中断の関数を,
反転表示51ではなく,網がけ表示,ブリンク表示等によ
り表してもよい。
本実施例では,さらに第3図に示すマウス・カーソル
52を用いて,モジュール構成図21上で特定の関数を指示
し,マウス・ボタンを操作することにより,その特定の
関数だけで,実行を停止させることもできるようになっ
ている。
第4図は,本発明の一実施例に係る処理の流れを示し
ている。以下の説明における〜は,第4図に示す処
理〜に対応する。
デバッガ12によって,関数トレース制御部13が起動さ
れると,ディスク記憶装置等に設けられたプログラム構
成情報ファイル17から,モジュール構成と関数の情報を
取り出し,プログラム構成情報記憶部11に設定する。
次に,ロードモジュールファイル18からデバッグ対象
プログラム16をロードし,プログラム構成情報記憶部11
に記憶されている情報に従って,デバッグ対象プログラ
ム16における各関数の先頭にブレークポイントを設定す
る。ブレークポイントの設定は,例えば命令を書き換え
ることによって行う。各関数のアドレスは,ロードモジ
ュールファイル18中のシンボル情報テーブルから得るこ
とができる。ブレークポイントの設定後、デバッグ対象
プログラム16を起動実行する。
最初は,メイン関数の先頭に設定したブレークポイン
トでストップすることになる。関数トレース制御部13に
制御が戻されたならば,中断判定制御部14により,中断
すべき関数の指定がなされているかどうかを判定する。
1回目は,中断関数の指定がないので,処理へ移る。
2回目以降で中断関数の指定がある場合には,処理の
判定を行う。ここで,中断関数は,オペレータが特別に
実行中断を指示した関数を意味する。
現在,実行がストップした関数が,オペレータが指示
した中断関数であるかどうかを中断アドレス等により,
判定する。中断関数でない場合,処理へ移る。中断関
数のときは,処理へ移る。
プログラム構成情報記憶部11に記憶されている情報に
基づき,第3図に示すようなモジュール構成図21を編集
して,ディスプレイ装置に表示する。特に,現在実行が
ストップしている関数については,反転表示を行い,実
行の停止中を表す矢印を先頭に付加する。そして,現在
実行がストップしている関数を中断関数の登録から削除
する。その後,キーボードまたはマウス等からの入力を
待つ。
入力があったならば,その入力の解析を行う。マウス
・ボタンのクリックにより,中断関数を指定するマウス
入力があった場合,処理へ移る。実行キーが打鍵され
た場合,処理へ移る。終了キー等による終了指示があ
った場合,処理へ移る。なお,図示省略するが,この
ときメニュー等により,関数トレースから従来の細かい
ステップ単位のトレースへの移行指示等があった場合に
は,これまでのブレークポイントの設定を必要に応じて
解除し,従来と同様なトレース制御に移行する。
マウス入力があったならば,そのときのマウス・カー
ソルの座標から,モジュール構成図21において,指定さ
れた関数を検索し,その関数を中断関数として登録し,
処理へ移る。
デバッグ対象プログラム16に実行制御を戻し,次に現
れる関数のブレークポイントまで,プログラムを実行さ
せる。
デバッグ対象プログラム16の実行がストップした場
合,処理以下を実行し,ブレークポイントによるスト
ップがなかった場合,処理へ移る。
デバッグ対象プログラム16の実行終了処理を行い,デ
バッグを終了する。
〔発明の効果〕
以上説明したように,本発明によれば,従来の細かい
ステップ単位のトレース機能に加え,関数単位やモジュ
ール単位の大まかなトレース機能を利用することができ
る。また,ディスプレイにモジュール構成図を表示し,
その上でトレース状況を表示したり,実行の制御ができ
るようになっているため,絶えずプログラムを構成する
各モジュールが,どのような関係を持っているかを把握
することができる。さらに,従来のように1つ1つブレ
ークポイントを設定する必要はなく,マウス等で指定さ
れた関数や,実行キーの押下によって,次に実行される
関数までトレースすることができるので,効率的にデバ
ッグ作業を進めることができるようになる。
【図面の簡単な説明】
第1図は本発明の構成例, 第2図は本発明の一実施例に係るプログラム構成情報の
例, 第3図は本発明の一実施例に係るモジュール構成表示の
例, 第4図は本発明の一実施例に係る処理説明図を示す。 図中,10は処理装置,11はプログラム構成情報記憶部,12
はデバッガ,13は関数トレース制御部,14は中断判定制御
部,15はモジュール構成表示制御部,16はデバッグ対象プ
ログラム,17はプログラム構成情報ファイル,18はロード
モジュールファイル,19は入力装置,20はディスプレイ装
置,21はモジュール構成図を表す。

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】デバッグ対象プログラム(16)の実行制御
    を行い,デバッグ情報を出力するデバッグシステムにお
    ける関数トレース処理方式において, デバッグ対象プログラムの構成情報およびソースモジュ
    ールごとに定義されている関数情報を記憶するプログラ
    ム構成情報記憶部(11)と, このプログラム構成情報記憶部が記憶する構成情報およ
    び関数情報に基づいて,デバッグ対象プログラム中の各
    関数にブレークポイントを設定する関数トレース制御部
    (13)と, デバッグ対象プログラムの実行中断時に,前記プログラ
    ム構成情報記憶部が記憶する構成情報および関数情報に
    基づき,関数情報付きのモジュール構成図を表示すると
    ともに,実行中断に係る関数情報を他と異なる態様で表
    示するモジュール構成表示制御部(15)とを備え, かつ,前記関数トレース制御部は,前記モジュール構成
    表示制御部が表示したモジュール構成図においてポイン
    ティングデバイスにより指定された関数を中断関数とし
    て登録し,その中断関数までデバッグ対象プログラムの
    実行を継続させ,登録されている中断関数のブレークポ
    イントで実行を中断させる制御手段(14)を持ち, 関数単位またはモジュール単位でトレースを行うように
    したことを特徴とする関数トレース処理方式。
JP63215915A 1988-08-30 1988-08-30 関数トレース処理方式 Expired - Fee Related JPH0833847B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63215915A JPH0833847B2 (ja) 1988-08-30 1988-08-30 関数トレース処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63215915A JPH0833847B2 (ja) 1988-08-30 1988-08-30 関数トレース処理方式

Publications (2)

Publication Number Publication Date
JPH0264748A JPH0264748A (ja) 1990-03-05
JPH0833847B2 true JPH0833847B2 (ja) 1996-03-29

Family

ID=16680360

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63215915A Expired - Fee Related JPH0833847B2 (ja) 1988-08-30 1988-08-30 関数トレース処理方式

Country Status (1)

Country Link
JP (1) JPH0833847B2 (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6053331B2 (ja) * 1980-12-19 1985-11-25 富士通株式会社 計算機システム
JPS57153343A (en) * 1981-03-18 1982-09-21 Hitachi Ltd Compile method for architecture program
JPS62121536A (ja) * 1985-11-22 1987-06-02 Toshiba Corp プログラム処理装置
JPS62140148A (ja) * 1985-12-16 1987-06-23 Omron Tateisi Electronics Co デバツガにおけるコマンド入力装置

Also Published As

Publication number Publication date
JPH0264748A (ja) 1990-03-05

Similar Documents

Publication Publication Date Title
US6026362A (en) Tool and method for diagnosing and correcting errors in a computer program
US7178135B2 (en) Scope-based breakpoint selection and operation
JPH07295859A (ja) プログラムの動的特性の決定
JP2006099798A (ja) コンピュータシステムのオペレーション方法
US20060085783A1 (en) Multi-process display method in debugger system
JPH0833847B2 (ja) 関数トレース処理方式
JPH06332689A (ja) プログラムの表示方法およびプログラムの編集受付け方法
JPH0833846B2 (ja) 関数トレース・ステップトレース切り替え制御方式
JPH02275539A (ja) デバッグ処理方式
JP2570593B2 (ja) デバッグ装置
JPS59105145A (ja) プログラムデバツグ装置
JPS60159911A (ja) 階層形シ−ケンス制御装置
US20050015677A1 (en) Method of executing a computer program
JPS62140148A (ja) デバツガにおけるコマンド入力装置
Hines CodeBase Relationship Visualizer: Visualizing Relationships Between Source Code Files
JP2795290B2 (ja) タスク表示方式
JPH03130840A (ja) オーバーレイモジュールのトレース制御方式
JPH06101045B2 (ja) データフロー型情報処理装置のシミュレーション装置
JPH096644A (ja) ソフトウエアデバッグ方法
JPH0546434A (ja) プログラムデバツグ方式
JPH02115950A (ja) プログラムデバッグ支援のファイルトレース方式
JPH01316842A (ja) バッチプログラム・デバッグツール
JPH04333146A (ja) デバッグにおけるプログラムの実行制御方式
JPH07311692A (ja) デバッグ方法
JPH02285414A (ja) キー表示処理方式

Legal Events

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