JP2811804B2 - 変数出力範囲指定方式 - Google Patents

変数出力範囲指定方式

Info

Publication number
JP2811804B2
JP2811804B2 JP1249680A JP24968089A JP2811804B2 JP 2811804 B2 JP2811804 B2 JP 2811804B2 JP 1249680 A JP1249680 A JP 1249680A JP 24968089 A JP24968089 A JP 24968089A JP 2811804 B2 JP2811804 B2 JP 2811804B2
Authority
JP
Japan
Prior art keywords
variable
line
range
value
program
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
JP1249680A
Other languages
English (en)
Other versions
JPH03111943A (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 JP1249680A priority Critical patent/JP2811804B2/ja
Publication of JPH03111943A publication Critical patent/JPH03111943A/ja
Application granted granted Critical
Publication of JP2811804B2 publication Critical patent/JP2811804B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Description

【発明の詳細な説明】 〔概 要〕 本発明は変数出力範囲指定方式に関し、 プログラムデバックを効率的に行うことを目的とし、 命令を逐次実行するプロセッサと、該プロセッサによ
り実行される命令を格納する主記憶部とを備え、プログ
ラミング言語で記述されたソースプログラムを翻訳して
得られた機械語命令部と、各動作時点における変数の値
が格納されるデータ部とからなるロードモジュールを該
主記憶部に格納し実行するデータ処理装置において、該
ソースプログラム中の指定された行範囲に含まれるすべ
ての変数を該ソースプログラムより収集する変数収集手
段と、収集された該変数の主記憶上の格納アドレスを算
出し、該ロードモジュールの指定動作時点における該変
数の値を読取る読取手段と、読取った変数の値を対応す
る変数名とともに出力する編集出力部とを備え、ソース
プログラム中の指定の行範囲に含まれるすべての変数を
抽出し、該ロードモジュールの指定動作時点における該
変数の値を主記憶上の前記データ部よりそれぞれ読取っ
て出力するように構成する。
〔産業上の利用分野〕
本発明は、プログラミング言語で記述されたソースプ
ログラムを翻訳プログラムにより変換して得られたロー
ドモジュールを主記憶上に格納し、主記憶上の命令をプ
ロセッサ(CPU)が逐次実行することにより動作するデ
ータ処理システムにおいて、プログラムをデバックする
際に、ソースプログラム上の変数について、ロードモジ
ュールが実行中の一時点における値を出力する処理の指
定方式に関する。
〔従来の技術〕
従来例として会話型デバッガについて説明する。
第6図はロードモジュールの構成例を表す図、第7図
はシンボルテーブルの構造例を表す図、第8図は全体構
成図である。
ソースプログラムを翻訳プログラムで翻訳したロード
モジュールは、第6図に示すように、機械語の命令部分
であるテキスト部2−1と、初期値有りデータ部2−2
と、シンボルテーブル2−3より構成される。
このシンボルテーブル2−3は、変数名,関数名等の
名称と、変数か関数か等の区分と、ロードモジュール内
のいずれ(テキスト部等)にあるかを表すクラスと、ロ
ードモジュール生成時に仮りに定めた開始アドレスに基
づくアドレス(以下開始アドレスを0としてオフセット
値とする)等より構成されている。
第8図は、プロセッサCPU20、主記憶部21,表示部22、
入力部23等を備えたデータ処理装置において、デバッガ
10および上記ロードモジュール構成の被デバッグプログ
ラム2aを主記憶部21にロードして会話型デバッガを構成
した例を示している。
ここで、被デバッグプログラム2aおよびデバッガ10は
オペレーティングシステムOS4の配下で動作し、第8図
に示すように、被デバッグプログラム2aがロードされる
際には、初期値無しデータ部2−4の領域が主記憶部21
に確保され、またデバッガ10は、被データプログラム2a
に対応するソースプログラム1、シンボルテーブル2−
3、ソースプログラム1と被デバッグプログラム2aとを
対応付けした行番号テーブル3を主記憶部21に保有す
る。
なお、変数には初期値有り変数と、初期値無し変数と
があり、それぞれプログラム実行ごとに設定された値が
初期値有りデータ部2−2または初期値無しデータ部2
−4内の所定アドレスに格納,更新される。
以上のように構成された会話型デバッガにおいて、ソ
ースプログラム1中の変数について、被デバッグプログ
ラム2aの実行中の一時点における値を出力する操作なら
びに動作例を説明する。
(1) まず動作行を指定するコマンドを入力部23より
入力すると、デバッガ10は、ソースプログラム1より指
定表示行を基準とした所定行分のデータを抽出し、表示
部22に表示する。
(2) 変数名をコマンドとともに入力すると、デバッ
ガ10は、シンボルテーブル2−3を参照して指定された
変数のオフセットを求め、被デバッグプログラム2aのロ
ード時に通知された主記憶部21上の先頭アドレスより、
初期値有りデータ部2−2または初期値無しデータ部2
−4内におけるその変数の格納アドレスを算出する。
(3) 表示画面上走行停止点(ブレークポイント)を
指定して走行を指示すると、被デバッグプログラム2aは
CPU20によって順次実行され、ブレークポイントで停止
する。
この間、変数は初期値またはプログラムによる初期設
定より順次更新され、停止時には最新の値が主記憶上の
データ部内の所定アドレスにストアされている。
(4) デバッガ10は、走行が停止すると、既に算出し
た指定の変数の主記憶上の格納アドレスを指示してOS4
に読取りを依頼し、得られた値を表示部22に表示する。
なお、さらに実行を進めると、同じ変数について、次
の停止時点における値が表示される。
〔発明が解決しようとする課題〕
以上説明したように、会話型デバッガは、知りたい変
数の値は直ちに表示され、また実行を進めながら繰り返
し同じ変数の値を表示できるという利点があるが、複数
の変数を表示させるためには、従来では、変数ごとに繰
り返し操作を行う必要があり、デバッグの効率が悪いと
いう課題があった。
なお、プログラムのデバッグには、会話型デバッガの
他に次のような方法がある。
その第1の方法は、ソースプログラムのところどころ
に、その部分を通過したことを示すデータを出力する文
や、そのときのプログラム内の変数の値を出力する文を
挿入して翻訳,実行し、この出力結果を調べる方法であ
る。この方法は、翻訳プログラム以外に特別なプログラ
ムは必要ない利点はあるが、デバッグ中調べようとする
変数の範囲を広げようとすると、その都度ソースプログ
ラムの修正と再翻訳が必要となり、そのための操作と時
間が損失となるといった課題がある。
その第2の方法は、プログラムが停止した時点、ある
いは停止までのいくつかの時点で、主記憶内のプログラ
ム領域をファイル装置などに出力し、これを別のプログ
ラムで処理して見やすい形に編集,印刷して、これを調
べる方法がある。この方法は、ソースプログラムの修正
と再翻訳が不要で、且つプログラム内のすべての変数の
値が一度に出力されるという利点はあるが、通常プログ
ラムのデバッグはプログラムの一部に注目して行い、こ
れを順次移していくという方法をとるため、出力の回数
が増えると、処理時間と値を捜す時間が無視できないと
いう課題がある。
本発明は、上記課題に鑑み、会話型デバッガおよび第
2の方法の利点を生かしながら、上記課題を克服する変
数出力範囲指定方式を提供することを目的とする。
〔課題を解決するための手段〕
上記目的を達成するため、本発明の変数出力範囲指定
方式は、第1図本発明の原理図に示すように、 ソースプログラム1中の指定された行範囲に含まれる
すべての変数をソースプログラム1より収集する変数収
集手段30と、 収集された該変数の主記憶上の格納アドレスを算出
し、ロードモジュール2の指定動作時点における変数の
値を読取る読取手段31と、 読取った変数の値を対応する変数名とともに出力する
編集出力部18とを備える。
〔作 用〕
変数収集手段30は、ソースプログラム1中を指定され
た行範囲に含まれる変数をソースプログラム1を参照し
てすべて拾い出す。
読取手段31は、収集された変数について、主記憶部21
上のデータ部にある格納アドレスを算出し、指定動作時
点におけるこれらの変数の値を読取り、編集出力部18は
変数名とともにこの値を所定の形状で出力する。
以上により、ソースプログラム1中、指定した行範囲
内のすべての変数の値が同時に出力されるため、操作回
数が少なく、且つ実行を進めながら着目する複数の変数
の値を知ることができ、デバッグの効率が向上する。
〔実施例〕
本発明の実施例を図を用いて詳細に説明する。
第2図は一実施例の構成図、第3図は行範囲内変数テ
ーブル例を表す図、第4図は動作フローチャート図、第
5図はソースプログラム例を表す図である。
本実施例では、行範囲としてその開始行と終了行とを
指定させる例を示す。また、第2図に示すデバッガ10a
は、本発明に係わる主要部分のみを示したもので、その
他のデバッガ機能部分は省略している。第2図におい
て、 11は会話処理部で、デバッガ使用者へのデータ表示,
入力されたコマンドを解析して対応する処理部を呼出す
機能を備える。
12は行範囲指定コマンド処理部で、行範囲指定コマン
ドによりソースプログラム1の指定部分を表示して行範
囲を指定させるとともに、入力されたソースプログラム
1上の行範囲、即ち開始行番号と終了行番号とを主記憶
部21に記録する。
14は行範囲内変数収集処理部で、開始行番号と終了行
番号とに基づきソースプログラム1を参照し、その範囲
内にある変数を収集するとともに、行範囲変数テーブル
15を生成し、シンボルテーブル2−3を参照してその変
数名、オフセット、変数の型等を格納する。
16はアドレス変換部で、予め通知されている被デバッ
グプログラム2aの主記憶上の先頭アドレスとオフセット
とに基づき収集された各変数の格納アドレス(初期値有
りデータ部2−2または初期値無しデータ部2−4内の
アドレス)を算出し、行範囲内変数テーブル15に格納す
る。
15は後述する行範囲内変数テーブル、 17は変数値読取部で、被デバッグプログラム2aの走行
が停止した時点(指定動作時点)で行範囲内変数テーブ
ル15を参照し、各変数の主記憶上の格納アドレスを指示
して、OS4に読取りを依頼し、得られた値を行範囲内変
数テーブル15に格納する。
18は編集出力部で、行範囲内変数テーブル15を参照し
て格納された値をその変数の型に変換し、変数名ととも
に表示部22に表示する。
その他、全図を通じて同一符号は同一対象物を表す。
なお、第1図変数収集手段30は行範囲内変数収集処理部
14に、読取手段31はアドレス変換部16,変数値読取部17
に、データ部は初期値有りデータ部2−2,初期値無しデ
ータ部2−4に、それぞれ対応する。
また、第2図における各プログラム,テーブル,デー
タ部は、主記憶部21にロードされ、第8図に示すよう
に、OS4またはデバッガ10aによって管理される。
行範囲内変数テーブル15は、第3図に示すように、変
数名と、シンボルテーブル2−3に記録されているオフ
セットと、算出した主記憶上の格納アドレスと、整数,
少数,文字列等の変数の型と、変数値読取部17で読取っ
た値を格納する領域より構成され、前述した各部により
設定される。
なお、変数の型は、図示省略したが、シンボルテーブ
ル2−3に設定されており、行範囲内変数収集処理部14
によって格納される。
以下、第4図を参照しつつ変数出力動作を説明する。
(1) 行範囲指定コマンド処理 行範囲指定コマンド入力により、行範囲指定コマンド
処理部12は表示部23にソースプログラム1の指定部分を
表示し、画面上行範囲を指定させてその開始行番号,終
了行番号を主記憶部21内に記録する。
(2) 行範囲内変数収集処理 続いて行範囲内変数収集処理部14は、ソースプログラ
ム1を解析して指定行範囲内に現れる変数名を収集し、
行範囲内変数テーブル15を生成するとともに、シンボル
テーブル2−3を参照して、オフセット,変数の型を行
範囲内変数テーブル15に格納する。
(3) アドレス変換処理。
アドレス変換部16は、主記憶上の先頭アドレスとオフ
セットとにより、収集した各変数の主記憶上の格納アド
レスを求め、行範囲内変数テーブル15に格納する。
(4) 被デバッグプログラム2aのアクセス処理 被デバッグプログラム2aが走行し、ブレークポイント
で停止した後、変数値読取部17は、行範囲内変数テーブ
ル15を参照し、収集された変数ごとに主記憶上の格納ア
ドレスを指定してOS4に変数値の読取りを依頼する。OS4
はそのアドレスを基に、初期値有りデータ部2−2,初期
値無しデータ部2−4内に格納されている変数の現在値
を読取って通知する。なお、得られた値は行範囲内変数
テーブル15に格納される。
(5) 変数の出力処理 行範囲内変数テーブル15を参照し、各変数の値を変数
の型に応じて変換し、変数名とともに表示する。
以上の動作例として、第5図にソースプログラム例を
示す。
このソースプログラム中のi,j,k,lは、初期値無し変
数であって、プログラム実行中に設定され、且つラベル
P0で示される各ステップの繰り返しにより各変数が変化
する。この変化の模様は次のようにして表示される。
まず、行範囲の開始行(図示A)を「P0」行(以下行
番号の代わりに記述文で示す)に指定し、終了行Bを
「go to P0」行に、例えばカーソルによって指定する。
これにより、AB間の変数としてi,j,k,lが抽出され
る。
次にP0行をブレークポイントに指定してプログラムを
走行させると、P0行の前行でプログラムが停止し、変数
の値として、 i=1,j=1,k=1,l=0 が表示される。
次にブレークポイントをB行に設定し走行させると、
1回目の値として i=2,j=1,k=2,l=2 が表示される。次に継続コマンドを入力すると、再びP0
行に動作が移り、B行で停止して、 i=3,j=2,k=3,l=3 と表示される。
以下同様に継続コマンドを入力することによりi>10
となってP1行に制御が移るまでの各変数の値が順次表示
される。
以上のごとく、行範囲を指定することにより、着目す
る行範囲内のすべての変数の値がブレークポイントで停
止するごとに表示されるため、デバッグが容易となり、
且つ変数出力のための操作が簡単となる。
なお、各時点の値を一括表示する場合には、各時点の
値を行範囲内変数テーブル15に保持しておく。
(その他の実施例) 以上の実施例では、開始行,終了行で行範囲を指定し
たが、その他、 (1) ソースプログラム1上の、例えば{ }で括ら
れたブロックの開始行または終了行を指定して、そのブ
ロック全体を指定できるように構成する (2) ソースプログラム1上のサブルーチンを指定す
ることにより、そのサブルーチン全体を指定できるよう
に構成する 等の指定方法があり、ソースプログラム1を検索するこ
とにより、前述の実施例と同様に、その範囲に含まれる
変数を収集することができる。また、 (3) ソースプログラム1のうち画面に表示されてい
る部分を行範囲としてもよい。
この場合、画面上の表示範囲を変化させるに従ってプ
ログラムが走行し、その都度表示範囲を行範囲として変
数の値を表示し直すように構成することもできる。
〔発明の効果〕
本発明は、行範囲を指定することによってその範囲内
のすべての変数について、指定の動作時点における値を
出力する変数出力範囲指定方式を提供するものであるか
ら、操作回数が減少する、着目する変数の値が実行を進
めながら同時に出力される等により効率よくデバッグで
きる効果は多大である。
【図面の簡単な説明】
第1図は本発明の原理図、 第2図は一実施例の構成図、 第3図は行範囲内変数テーブル例を表す図、 第4図は動作フローチャート図、 第5図はソースプログラム例を表す図、 第6図はロードモジュールの構成例を表す図、 第7図はシンボルテーブルの構造例を表す図、 第8図は全体構成図である。 図中、1はソースプログラム、2はロードモジュール、
2−1はテキスト部、2−2は初期値有りデータ部、2
−3はシンボルテーブル、2−4は初期値無しデータ
部、2aは被デバッグプログラム、3は行番号テーブル、
4はオペレーティングシステムOS、10,10aはデバッガ、
11は会話処理部、12は行範囲指定コマンド処理部、13は
行範囲データ、14は行範囲内変数収集処理部、15は行範
囲内変数テーブル、16はアドレス変換部、17は変数値読
取部、18は編集出力部、20はプロセッサCPU、21は主記
憶部、22は表示部、23は入力部である。

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】命令を逐次実行するプロセッサ(20)と、
    該プロセッサにより実行される命令を格納する主記憶部
    (21)とを備え、プログラミング言語で記述されたソー
    スプログラム(1)を翻訳して得られた機械語命令部
    と、各動作時点における変数の値が格納されるデータ部
    とからなるロードモジュール(2)を該主記憶部に格納
    し実行するデータ処理装置において、 該ソースプログラム中の指定された行範囲に含まれるす
    べての変数を該ソースプログラムより収集する変数収集
    手段(30)と、 収集された該変数の主記憶上の格納アドレスを算出し、
    該ロードモジュールの指定動作時点における該変数の値
    を読取る読取手段(31)と、 読取った変数の値を対応する変数名とともに出力する編
    集出力部(18)と を備え、ソースプログラム中の指定の行範囲に含まれる
    すべての変数を抽出し、該ロードモジュールの指定動作
    時点における該変数の値を主記憶上の前記データ部より
    それぞれ読取って出力することを特徴とする変数出力範
    囲指定方式。
JP1249680A 1989-09-26 1989-09-26 変数出力範囲指定方式 Expired - Fee Related JP2811804B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP1249680A JP2811804B2 (ja) 1989-09-26 1989-09-26 変数出力範囲指定方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1249680A JP2811804B2 (ja) 1989-09-26 1989-09-26 変数出力範囲指定方式

Publications (2)

Publication Number Publication Date
JPH03111943A JPH03111943A (ja) 1991-05-13
JP2811804B2 true JP2811804B2 (ja) 1998-10-15

Family

ID=17196607

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1249680A Expired - Fee Related JP2811804B2 (ja) 1989-09-26 1989-09-26 変数出力範囲指定方式

Country Status (1)

Country Link
JP (1) JP2811804B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4877068B2 (ja) * 2007-05-22 2012-02-15 富士電機株式会社 ソフトウェア開発支援プログラム、ソフトウェア開発支援方法

Also Published As

Publication number Publication date
JPH03111943A (ja) 1991-05-13

Similar Documents

Publication Publication Date Title
JPH11249875A (ja) プログラミング支援方法及びその装置
JP2811804B2 (ja) 変数出力範囲指定方式
JP3196675B2 (ja) 言語処理方式
CN115098368A (zh) 一种识别脑图用例的智能验证方法和装置
JP2000207246A (ja) デバッグ支援装置及び方法並びにデバッグ支援用ソフトウェアを記録した記録媒体
JPH02275539A (ja) デバッグ処理方式
JPS59183441A (ja) 拡張言語のデバツグ処理方式
JPH1115826A (ja) 文書解析装置及び方法
JPS6254337A (ja) プログラムの階層指定表示方式
JP2999654B2 (ja) 端末装置
JPH11154093A (ja) プログラムコンパイラ及びコンパイラ用プログラムを記録した記録媒体
CN117112341A (zh) 一种基于asm字节码插桩的非入侵准实时监控方法及系统
JPH03273346A (ja) シンボリックデバッガによる動的呼出し関係解析方式
JPS6033640A (ja) デ−タ・モニタ方式
JPH05250210A (ja) プログラムトレース方式
JPH04178829A (ja) ロードモジュール内のファイル定義情報編集方式
JPH103390A (ja) テーブル管理システムとその作成方法
JPH06231003A (ja) 実行可能ファイルのデバッガ
JPS63104153A (ja) アボ−トダンブデ−タ記号編集方式
JPH0327452A (ja) プログラムデバッグ方式
JPH09282129A (ja) クリッカブルマップ設定データ作成方法及びその実施装置
JPH0371230A (ja) 実行プログラム情報表示方式
JPH01142936A (ja) 情報連結方法
JPH04229343A (ja) 対話型デバッガにおけるメモリ内容表示方式
JPH07152524A (ja) グラフィックスデータ変更処理方式

Legal Events

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