JPH01205348A - プログラムデバッグ方式 - Google Patents

プログラムデバッグ方式

Info

Publication number
JPH01205348A
JPH01205348A JP63030357A JP3035788A JPH01205348A JP H01205348 A JPH01205348 A JP H01205348A JP 63030357 A JP63030357 A JP 63030357A JP 3035788 A JP3035788 A JP 3035788A JP H01205348 A JPH01205348 A JP H01205348A
Authority
JP
Japan
Prior art keywords
instruction
program
module
debugging
data
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
JP63030357A
Other languages
English (en)
Inventor
Mitsuru Yoshida
満 吉田
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 JP63030357A priority Critical patent/JPH01205348A/ja
Publication of JPH01205348A publication Critical patent/JPH01205348A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 (産業上の利用分野〕 本発明はプログラムデバッグ方式に関し、特に複数のモ
ジュールで構成され、モジュールを呼出しながら動作す
るプログラムのプログラムデバッグ方式に関する。
(従来の技術) 従来、この種のデバッグ方式では、例えばモジュールA
がモジュールBを呼出すプログラムにおいて、A、Bの
何れのモジュールにバグがあるかを判別する際に、モジ
ュールAの中のモジュールBを呼出す呼出命令のアドレ
スまたはモジュールBの先頭の命令アドレスにてプログ
ラムの実行を停止させ、モジュールAからBへの引渡し
データをダンプ出力してデバッグを行っていた。
〔発明が解決しようとする課題〕
上述した従来のデバッグ方式は、プログラムの実行を停
止したいアドレスと、モジュールAからBへの引渡しデ
ータのアドレスをコンパイルリストとリンクロードマツ
プから人手により算出し、かつ引渡しデータのダンプ出
力指示も人手により行っていたために、誤りが混入し易
く、かつ時間がかかるという欠点がある。
〔課題を解決するための手段〕
本発明のプログラムデバッグ方式は、 トレース制御表と、 インタフェースデータ表と、 モジュール呼出命令の直前に無操作命令を付加し、モジ
ュール呼出命令の発行元および呼出先のモジュールのモ
ジュール名と前記無操作命令のアドレスとから成るトレ
ース制御情報を生成し、トレース制御表に登録する命令
コード生成手段と、モジュール名と当該モジュールのイ
ンタフェースデータの名称、アドレスおよびレングスと
から成るインタフェースデータ情報を生成し、インタフ
ェースデータ表に登録するデータコード生成手段と、 モジュール呼出命令の戻りアドレスによりトレース制御
表を参照して前記無操作命令の付加アドレスを検出し、
さらに該付加アドレスに対応する呼出先モジュールのモ
ジュール名によりインタフェースデータ表を参照して、
前記トレース制御情報に加えてインタフェースデータ名
およびその内容を出力装置に出力するトレース情報出力
手段と、 トレース制御表を参照して、付加された無操作命令をト
レース情報出力手段の呼出命令に変更するブリラン手段
と、 デバッグ用プログラムを走行させてバグが検出された時
、前記ブリラン手段を起動し、その後、デバッグ用プロ
グラムを再走行させる指示手段とを有している。
(作用〕 デバッグ用プログラムを走行させた際、他モジュールの
呼出命令の直前に無操作命令を付加するとともに、呼出
命令の発行元および呼出先モジュール名と付加した無操
作命令のアドレス等のトレース制御情報を生成し、バグ
が発見された時デバッグ用プログラムを再走行させ、そ
の際トレース制御情報に対応させてインタフェースデー
タを出力でき、そのインタフェースデータを関連するモ
ジュール間で比較することにより、バグの発生したモジ
ュールの判別が容易となる。
〔実施例〕
次に、本発明の実施例について図面を参照して説明する
第1図は本発明のプログラムデバッグ方式を採用した情
報処理システムの一実施例を示すブロック図、第2図は
コンパイラ2の命令コード生成部21の処理を示すフロ
ーチャート、第3図は同様にコンパイラ2のデータコー
ド生成部22の処理を示すフローチャート、第4図はモ
ニタプログラム61のブリラン処理部611の処理を示
すフローチャート、第5図は同様にモニタプログラム6
1のトレース情報出力処理部612の処理を示すフロー
チャート、第6図は第1図の、モジュールA2、B2.
C2を有するデバッグ用プログラム64を示す図である
この情報処理システムは、ソースプログラム1とコンパ
イラ2とオブジェクトプログラム格納手段3とリンク手
段4とロード手段5と主記憶装置6と中央処理装置7と
指示手段8と出力装置9とで構成されている。
コンパイラ2は命令コード生成部21とデータコード生
成部22を有し、それぞれオプションとしてトレース制
御コード生成処理とインタフエースコード生成処理を含
み、中央処理装置7の指示によりソースプログラム1を
取込んでコンパイル処理をする。トレース制御コード生
成処理とインタフェースコード生成処理は、予めオプシ
ョン設定時に指定された場合に動作する。命令コード生
成部21は、第2図に示す処理を行う。まず、コンパイ
ルすべき命令がモジュール呼出命令であるか否かを判定
しくステップ211)、モジュール呼出命令であればつ
づいてオプション判定を行う(ステップ212)。ここ
で、ステップ211でモジュール呼出命令でない場合と
ステップ212でトレース制御コード生成処理が指定さ
れていない場合は通常の命令コードの生成、すなわち通
常のコンパイルを行う(ステップ216)。また、ステ
ップ212のオプション判定でトレース制御コード生成
処理が指定されていれば、ステップ211でのモジュー
ル呼出命令の直前のアドレスにNOP命令を付加する(
ステップ213)。次に、モジュール呼出命令の呼出元
モジュール名と呼出先モジュール名を確認して(ステッ
プ214)、NOP命令の付加アドレスと呼出元モジュ
ール名および呼出先モジュール名をトレース情報として
主記憶装置6にトレース制御表として登録する(ステッ
プ215)。このステップ211〜216をプログラム
終了命令まで繰り返すことにより命令のコンパイルが終
了する。データコード生成部22は第4図に示す処理を
行う。
まず、コンパイルすべきデータがインタフェースデータ
であるか否か、すなわちモジュール間で転送されて使用
されるデータか否かを判定しくステップ221)、イン
タフェースデータであればオプション判定を行う(ステ
ップ222)。ここで、ステップ221でインタフェー
スデータでない場合とステップ222でインタフェース
コード生成処理が指定されていない場合は通常のデータ
コードの生成、すなわち通常のコンパイルを行う(ステ
ップ225)。また、ステップ222のオプション判定
でインタフェースコード生成処理が指定されていれば、
そのインタフェースデータが使用されているモジュール
であるデータ定義モジュール名とインタフェースデータ
名とデータアドレスとデータレングスとのインタフェー
スデータコードを生成して(ステップ223)、主記憶
装置6にインタフェースデータ表として登録する(ステ
ップ224)。このステップ221〜225をプログラ
ム終了命令まで繰返すことによりデータのコンパイルが
終了する。したがって、命令コード生成部21とデータ
コード生成部22により命令系とデータ系のコンパイル
を行うことでソースプログラム1のコンパイルが終了す
る。
主記憶装置6にはモニタプログラム61とデバッグ用プ
ログラム64が格納され、トレース制御表62とインタ
フェースデータ表63が生成される。トレース制御表6
2は、表1に示すように、呼出元モジュール名とNOP
命令付加アドレスと呼出先モジュール名の3項目で構成
されており、前述した命令コード生成部21で生成され
たトレース情報が登録される。
表1 インタフェースデータ表63は、表2に示すように、デ
ータ定義モジュール名とデータ名称とデータアドレスと
データレングスとの4項目で構成されており、前述した
データコード生成部22で生成されたインタフェースデ
ータコードが登録される。
モニタプログラム61はブリラン処理部611とトレー
ス情報出力処理部612を含んでいる。
ブ・リラン処理部611は、指示手段8の指示により第
4図に示すように、前述した命令コード生成部21で付
加されたNOP命令をトレース情報出力処理部612の
呼出命令である “CALL  T”に書換える(ステップ6111)。
トレース情報出力処理部612は、第2図に示すように
、モジュール呼出命令の戻りアドレス、すなわち呼出元
モジュールでの戻りアドレスを割出しくステップ612
1)、そのアドレスを基にトレース制御表62を参照し
て対応するNOP命令の付加アドレスを検出した時、前
述したトレース制御表62の内容をトレース情報前半部
として出力装置9に出力しくステップ6121)、つづ
いて、対応する呼出先モジュールを基にインタフェース
データ表63を参照して該当するデータ定義モジュール
名が検出された時(ステップ6123) 、関連するイ
ンタフェースデータ名およびその内容をトレース情報後
半部として出力装置9へ出力する(ステップ 6124)。指示手段8はデバッグ用プログラム64を
走行させてバグが検出された時、モニタプログラム61
のプリラン処理部611を起動し、その後デバッグ用プ
ログラム64を再走行させる。出力装置9は情報出力処
理部612から送られてきたトレース情報を表3に示す
ようなトレース情報表として可視表示する。表3におい
て前半部はトレース制御表62の内容と同一であるがデ
ータ収集アドレスはNOP命令の付加アドレスと同一で
、呼出元モジュールから呼出先モジュールへ転送される
インタフェースデータを収集したアドレス、すなわち呼
出命令の直前のアドレスを示している。
ソースプログラム1はモジュールA、B、Cを有してお
り、それぞわの構成は第6図に示すようになっている。
モジュールAはデータ名°“M、、I”、データレング
ス“La l”、データアドレス“Dal”のデータを
使用して、アドレス“Na、+1”および“Na□+1
”でモジュールBを呼出している。モジュールBはデー
タ名”M、、” 、データレングス“LbI”・データ
アドレス“Db+”のデータとデータ名“M、2”、デ
ータレングス“Lb2”、データアドレス“Db2”の
データとを使用して、アドレス″Nb、+1”でモジュ
ールCを呼出している。モジュールCはデータ名“Mc
l”、データレングス“Ucl”、データアドレス“D
el”のデータをイ吏用している。
次に、本実施例の動作を説明する。
まず、コンパイラ2が中央処理装置7の指示によりソー
スプログラムA、B、Cをコンパイルしてオブジェクト
プログラムA、、B、、C,を作成してオブジェクトプ
ログラム格納手段3に格納する。つづいて、これらのオ
ブジェクトブログラムA、B、Cがリンぐ手段4により
リンクされてロード手段5によって主記憶装置6にデバ
ッグ用プログラム64としてロードされる。また、主記
憶装置6か記憶しているトレース制御表62、インタフ
ェース制御表63は、コンパイラ2の命令コード生成手
段21とデータコード生成手段22により、それぞれ表
4、表5のようになっている。
その後、デバッグ用プログラム64の走行が開始され、
何らかのバグが発見されると、指示手段8によりモニタ
プログラム6!のブリラン処理部611か起動され、デ
バッグ用プログラム64上に付加されたNOP命令が“
CALL  T”命令に書換えられて再走行が行われる
。この再走行の際、モジュール呼出命令毎にトレース情
報出力手段612が“CALL  T″命令より呼出さ
れて、その都度関連するインタフェースデータ名および
その内容を含む、前述したトレース情報を出力手段9へ
転送する。トレース情報を受けた出力装置9は、その情
報のプリント出力をデバッグ用プログラム64の再走行
が終了するまで行う。・本実施例でのトレース情報を表
6に示す。
このトレース情報の正常性をチエツクすることにより、
先に検出されたバグがモジュールA、B、Cの何れにあ
るかを知ることができる。例えば、表6においてデータ
Mb1、Mb2が正常であり、データM。Iが異常であ
れば、バグがモジュールBに存在することが判別できる
〔発明の効果〕
以上説明したように本発明は、デバッグ対象とするプロ
グラム中に付加されたNOP命令をトレース情報出力手
段の呼出命令に変更してトレース情報を自動的に出力さ
せ、トレース情報の内容の正常性をチエツクすることに
より、プログラムを構成するモジュールの何れかにバグ
があるかを容易に判断でき、効率よくデバッグ作業を行
うことができるという効果がある。
【図面の簡単な説明】
第1図は本発明のプログラムデバッグ方式を採用した情
報処理システムの一実施例を示すブロック図、第2図は
コンパイラ2の命令コード生成部21の処理を示すフロ
ーチャート、第3図は同様にコンパイラ2のデータコー
ド生成部22の処理を示すフローチャート、第4図はモ
ニタプログラム61のブリラン処理部611の処理を示
すフローチャート、第5図は同様にモニタプログラム6
1のトレース情報出力処理部612の処理を示すフロー
チャート、第6図は第1図の、モジュールA2 、B2
 、C2を有するデバッグ用プログラム64を示す図で
ある。 1・・・ソースプログラム、  2・・・コンパイラ、
3・・・オブジェクトプログラム格納手段、4・・・リ
ンク手段、  5・−ロード手段、6・・・主記憶装置
、 7・・・中央処理装置、8・・・指示手段、   
9・・・出力装置、21−・・命令コード生成部、 22−・・データコード生成部、 61−・・モニタプログラム、 62・・・トレース制御表 63−・・インターフェースデータ表 64・・・デバッグ用プログラム、 211〜216.221〜225.6111.6121
〜6124・・・ステップ、 611・・・ブリラン処理部、 612−・・トレース情報出力処理部。 特許出願人  日本電気株式会社

Claims (1)

  1. 【特許請求の範囲】 1、複数のモジュールで構成され、モジュールを呼出し
    ながら動作するプログラムのプログラムデバッグ方式で
    あって、 トレース制御表と、 インタフェースデータ表と、 モジュール呼出命令の直前に無操作命令を付加し、モジ
    ュール呼出命令の発行元および呼出先のモジュールのモ
    ジュール名と前記無操作命令のアドレスとから成るトレ
    ース制御情報を生成し、トレース制御表に登録する命令
    コード生成手段と、モジュール名と当該モジュールのイ
    ンタフェースデータの名称、アドレスおよびレングスと
    から成るインタフェースデータ情報を生成し、インタフ
    ェースデータ表に登録するデータコード生成手段と、 モジュール呼出命令の戻りアドレスによりトレース制御
    表を参照して前記無操作命令の付加アドレスを検出し、
    さらに、該付加アドレスに対応する呼出先モジュールの
    モジュール名によりインタフェースデータ表を参照して
    、前記トレース制御情報に加えてインタフェースデータ
    名およびその内容を出力装置に出力するトレース情報出
    力手段と、 トレース制御表を参照して、付加された無操作命令をト
    レース情報出力手段の呼出命令に変更するプリラン手段
    と、 デバッグ用プログラムを走行させてバグが検出された時
    、前記プリラン手段を起動し、その後、デバッグ用プロ
    グラムを再走行させる指示手段とを有するプログラムデ
    バッグ方式。
JP63030357A 1988-02-12 1988-02-12 プログラムデバッグ方式 Pending JPH01205348A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63030357A JPH01205348A (ja) 1988-02-12 1988-02-12 プログラムデバッグ方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63030357A JPH01205348A (ja) 1988-02-12 1988-02-12 プログラムデバッグ方式

Publications (1)

Publication Number Publication Date
JPH01205348A true JPH01205348A (ja) 1989-08-17

Family

ID=12301606

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63030357A Pending JPH01205348A (ja) 1988-02-12 1988-02-12 プログラムデバッグ方式

Country Status (1)

Country Link
JP (1) JPH01205348A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0793183A (ja) * 1992-08-11 1995-04-07 Internatl Business Mach Corp <Ibm> プログラム分析のためのフック命令実行方法及びデータ処理システム
JP2007249828A (ja) * 2006-03-17 2007-09-27 Fuji Electric Fa Components & Systems Co Ltd プログラマブルコントローラシステム、プログラマブルコントローラのデバッグ方法、プログラミング支援プログラム、プログラマブルコントローラのデバッグ制御プログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0793183A (ja) * 1992-08-11 1995-04-07 Internatl Business Mach Corp <Ibm> プログラム分析のためのフック命令実行方法及びデータ処理システム
JP2007249828A (ja) * 2006-03-17 2007-09-27 Fuji Electric Fa Components & Systems Co Ltd プログラマブルコントローラシステム、プログラマブルコントローラのデバッグ方法、プログラミング支援プログラム、プログラマブルコントローラのデバッグ制御プログラム

Similar Documents

Publication Publication Date Title
US8266608B2 (en) Post-compile instrumentation of object code for generating execution trace data
KR950006619B1 (ko) 번역 코드 실행용의 개선된 에러 기록 방법 및 시스템
US20030041315A1 (en) Debugger with automatic detection of control points influencing program behavior
JPH0748182B2 (ja) プログラム・エラー検出方法
US20040268325A1 (en) High-level language, architecture-independent probe program compiler
JPH01205348A (ja) プログラムデバッグ方式
US20030018957A1 (en) Debugger monitor with anticipatory highlights
EP0801348A1 (en) Method of monitoring the operation of a computer
JPH0736734A (ja) アーギュメント値のチェック方法
JP2659366B2 (ja) デバッグ方法及びその装置
JPH0377541B2 (ja)
JP2002073370A (ja) デバッグ支援装置およびその装置によるデバッグ方法
JPH02210556A (ja) プログラム実行状態の視覚化装置
JPH04540A (ja) デバック装置
JPS63147232A (ja) 整合性検査方式
JPH0468446A (ja) デバッグ支援装置
JPH02115951A (ja) 高級言語プログラム保守デバッグ方式
JPH03263129A (ja) コンパイラ・デバッガ方法
JP2004054807A (ja) 情報処理方法および装置
JPS63289654A (ja) プログラム分岐命令モニタ方式
JPH05324402A (ja) プログラムのテスト状態計測方式
JPH03276236A (ja) プログラムテスト支援装置
JPS62231335A (ja) コ−デイング・エキスパ−ト・システム
JPH03100837A (ja) 共有データアクセス検出方式
JPH01166228A (ja) 末通過チェックポイント自動検出デバッグ方式