JPH04236635A - 識別名検索処理方式 - Google Patents

識別名検索処理方式

Info

Publication number
JPH04236635A
JPH04236635A JP3018431A JP1843191A JPH04236635A JP H04236635 A JPH04236635 A JP H04236635A JP 3018431 A JP3018431 A JP 3018431A JP 1843191 A JP1843191 A JP 1843191A JP H04236635 A JPH04236635 A JP H04236635A
Authority
JP
Japan
Prior art keywords
data
information
debugging
block
identification name
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.)
Withdrawn
Application number
JP3018431A
Other languages
English (en)
Inventor
Tsutomu Fujii
努 藤井
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 JP3018431A priority Critical patent/JPH04236635A/ja
Publication of JPH04236635A publication Critical patent/JPH04236635A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はデータ処理装置における
識別名検索処理方式,特に,デバッグ対象のプログラム
中に同一識別名が存在する場合に,可視範囲にある本来
の識別名を検索することにより,ユーザが必要とするデ
ータを表示可能とした識別名検索処理方式に関する。
【0002】
【従来の技術】計算機上で動作するプログラムを記述す
る高級言語では,プログラム中に同一の識別名を宣言す
ることができる場合がある。
【0003】C言語の場合には,同一関数内でブロック
ごとに同一の識別名を宣言できる。このように,一つの
翻訳単位内または一つの関数内で同一の識別名が宣言さ
れた場合,従来のデバッガでは,本来の可視範囲の識別
名を検索できなかった。以下,図6に示す従来技術の説
明図に従って説明する。
【0004】図6は,C言語により記述されたソースプ
ログラムの例を示している。このソースプログラムにお
ける(a) で宣言した変数:valと,(b) で宣
言した変数:valとは同一名である。
【0005】デバッグの際,■と■のどちらかで中断し
ているときに,valという変数を表示する要求があっ
た場合には,本来,その範囲で有効となる(a) で宣
言した変数:valの内容を表示しなければならない。 また,■で中断しているときに,valという変数の内
容を表示する要求があった場合には,(b) で宣言し
た変数:valの内容を表示しなければならない。
【0006】しかし,従来のデバッガでは,同一識別名
の考慮がされておらず,どこで中断していようが,(a
) で宣言した変数:valの内容を表示したり,また
,■内で中断しているときに,(b) で宣言した変数
:valの内容を表示したりすることがあった。
【0007】
【発明が解決しようとする課題】以上のように従来技術
によれば,同一識別名の考慮がされていないため,デー
タの表示要求に対して,本来必要とするデータと異なる
意図しないデータの内容を表示することがあるという問
題があった。本発明は上記問題点の解決を図り,本来の
可視範囲の識別名をデバッグ対象として表示可能とする
手段を提供することを目的としている。
【0008】
【課題を解決するための手段】図1は,本発明の原理ブ
ロック図である。図1において,10は高級言語で記述
されたデバッグ対象となるソースプログラム,11はデ
ィスプレイ・キーボードなどの入出力装置,12はCP
Uおよびメモリなどからなるデータ処理装置,13はソ
ースプログラム10を計算機の機械語に翻訳するコンパ
イラ,14はデバッグ機能を提供するデバッガ,15は
デバッグ対象のプログラムに中断点を設定する中断点設
定部,16は中断点において指示されたデータの内容を
表示するデータ表示部,17は表示するデータ情報を検
索するデータ情報検索部,18はコンパイラ13がデバ
ッグ・オプションにより出力したデバッグ用情報,19
はソースプログラム10の文情報,20はソースプログ
ラム10で宣言されたデータ情報,21はソースプログ
ラム10を翻訳した結果の実行形式プログラム(オブジ
ェクトプログラム)を表す。
【0009】ソースプログラム10が正しく動作するか
どうかを検査するためにデバッグする場合,デバッグ・
オプションを選択して,コンパイラ13によりソースプ
ログラム10をオブジェクトプログラムまたは実行形式
プログラム21に翻訳する。このとき,同時にデバッグ
用情報18が出力される。
【0010】特に,本発明では,デバッグ時に参照され
るデータに関する情報を保持するデータ情報20に,そ
のデータがソースプログラム10上のどこで宣言された
かを表す位置情報を保持するように構成される。
【0011】デバッグの際には,入出力装置11から実
行形式プログラム21を指定してデバッガ14を起動す
る。中断点設定部15は,入出力装置11からの指示に
より,実行形式プログラム21中に実行中断点を設定す
る。この中断点の設定等の処理については,従来と同様
である。中断点の設定は,例えば中断点の命令を,ソフ
トウェア割り込み等によってデバッガ14に制御を移行
させる命令に書き換えることにより行う。
【0012】中断点の設定の後,実行形式プログラム2
1を実行させると,実行命令が中断点に到達したとき,
デバッガ14に制御が渡る。ここで,データ内容を表示
することを指示するデバッグ用のサブコマンドが投入さ
れると,データ表示部16が起動される。
【0013】データ表示部16は,表示要求のサブコマ
ンドがソースプログラム10上のどこで中断していると
きに投入されたかにより,その中断位置に対応するデー
タ情報20がどれかを,デバッグ用情報18から探し出
すデータ情報検索部17を備えている。これにより,中
断位置における可視範囲の識別名に対応するデータを表
示する。
【0014】
【作用】デバッグするということは,プログラムのどこ
に誤りがあるかを調べることである。そのデバッグをす
るときに,従来のデバッガでは,同一識別名が複数存在
したとすると,本来の可視範囲の識別名のデータと異な
るデータがデバッグの対象になる可能性がある。これで
は,正しくデバッグをしていると言うことはできない。 なお,可視範囲とは,その中断点の位置において,命令
により直接的にデータを参照/更新できるように割り当
てられた領域の範囲をいう。
【0015】本発明によれば,データ情報検索部17に
より,中断点における可視範囲のデータ情報を検索する
ので,本来の可視範囲の識別名がデバッグの対象になり
,正しいデバッグが可能になる。
【0016】
【実施例】図2は,本発明の実施例に係るデバッグ用情
報説明図である。本発明では,例えば図2の(a) に
示すようなソースプログラム10をデバッグするとき,
コンパイル時に図2の(b) に示すように,データの
識別名と,対応する行番号または可視範囲を示すブロッ
ク追番などの位置情報とを関係づける情報を出力し,そ
れを保持する。
【0017】データの内容を表示するサブコマンド(L
ISTサブコマンドという)が投入されると,そのサブ
コマンドがどこで中断しているときに投入されたかを把
握し,図2の(b) に示すようなデータ情報20を検
索することにより,中断位置における可視範囲にあるデ
ータを探し出して,本来表示すべきデータの内容を表示
する。
【0018】もっと具体的には,識別名がどこに宣言さ
れているかを管理するために,図2の(c) に示すよ
うに,文と行番号との対応関係を保持している文情報1
9と,識別名に関する情報を保持しているデータ情報2
0とを,例えばブロック追番によって関係づける。
【0019】データ情報20は,ソースプログラム10
における可視範囲を定める各ブロックごとの開始終了情
報と,そのブロック内において宣言されたデータの識別
名,整数型・実数型・文字型などのデータタイプを示す
属性情報およびそのデータが割り付けられた領域情報の
組からなる。領域情報は,レジスタ,メモリ内のアドレ
スまたはスタックのオフセット情報などである。
【0020】ソースプログラム10と,文情報19と,
データ情報20との関係は,例えば図3に示すようにな
る。図3では,C言語を例にしているが,他の高級言語
も同様に扱うことができる。
【0021】図3に示す例では,■のブロック内に,■
のブロックと■のブロックが存在する。■のブロックで
は,整数型の変数aが宣言され,この■のブロック内で
変数aが有効となる。■のブロックでは,整数型の変数
bが宣言されているが,この変数bは,■のブロック内
でのみ有効であり,例えば■のブロックからは,参照ま
たは更新することはできない。
【0022】したがって,例えば■のブロック内に同じ
bという識別名の変数があったとしても,■のブロック
における変数bと■のブロックにおける変数bとは,異
なるデータとなる。
【0023】デバッグの際,■のブロックにおける中断
時に,変数bの表示要求があったならば,■のブロック
で有効な変数bのデータの内容を表示する必要があり,
■のブロックにおける中断時に,変数bの表示要求があ
ったならば,■のブロックで有効な変数bのデータの内
容を表示する必要がある。これを次のように実現する。
【0024】本来の可視範囲の識別名がどの識別名かを
判定するために,まず現在中断している位置に対応する
文情報19内の一つの文情報を求める。その文情報から
遡って,ブロック開始という文種別を持つ文情報を求め
る。さらに,その文情報のブロック追番をキーにして,
その追番と関係付けられているデータ情報20内の情報
を探す。そして,その関係付けられているデータ情報に
,探している識別名が存在しない場合には,文情報をさ
らに遡って処理を繰り返す。こうして,本来の可視範囲
の識別名を検索する。
【0025】図4は,本発明の実施例に係るデータ表示
部の処理フローである。図1に示すデータ表示部16は
,データの表示を要求するLISTサブコマンドの投入
に対して,例えば図4に示す処理P1〜P12を実行す
る。
【0026】(1) 中断点において,変数aを表示す
ることを指示するLISTサブコマンドが投入されたな
らば,処理P1により,図3に示すような文情報19か
ら,現在中断している位置に対応する文情報を求める。 (2) 処理P2により,求めた文情報を1つ遡る。す
なわち,文情報へのポインタを1エントリ分だけ前に戻
す。
【0027】(3) 処理P3により,現在ポイントし
ている文情報の文種別を調べ,文種別がブロック終了な
らば,処理P4へ進み,ブロック開始ならば,処理P1
0へ進む。それ以外の場合には,処理P2へ戻る。 (4) 処理P4〜P9では,処理P3で検出したブロ
ック終了に対応するブロック開始の文情報を探し,その
ブロックをスキップするために,文情報を1つずつ遡り
ながら,文種別を判定する。ブロック終了ならばカウン
タに1を加え,ブロック開始ならば,カウンタから1を
引く。カウンタが0になったならば,その処理P2へ戻
ってブロック開始を探す。
【0028】(5) 処理P3の判定により,ブロック
開始が見つかったならば,処理P10により,文情報か
らそのブロックの追番を得る。そして,処理P11によ
りデータ情報検索部17を呼び出す。 (6) データ情報検索部17から復帰したならば,対
象データ(変数a)があったかどうかを判定し,対象デ
ータがなければ,処理P2へ戻り,同様に処理を繰り返
す。 対象データがあれば,そのデータの内容(aの値)を出
力する。
【0029】データ情報検索部17は,図5に示す処理
P1〜P10を実行する。 (1) 処理P1により,図3に示すようなデータ情報
20の先頭のアドレスを得る。 (2) 処理P2により,ブロックの開始終了情報であ
るかどうかを判定し,開始終了情報でなければ,処理P
3によってデータ情報を1エントリ分スキップして,同
様に判定を繰り返す。 (3) 処理P4により,データ情報が終了したかどう
かを判定し,終了が検出されたならば,対象データがな
かったとして,呼び出し元へ復帰する。
【0030】(4) 処理P5により,ブロックの開始
終了情報に含まれるブロックの追番が,呼び出し元から
指定されたブロックの追番と等しいかどうかを判定する
。等しくなければ,処理P6によって,開始終了情報を
1エントリ分スキップして,処理P2へ戻る。 (5) ブロック追番が等しければ,処理P7により,
開始終了情報を1エントリ分スキップし,処理P8〜P
10によって,データ情報を1エントリずつ調べながら
,対象データを探す。次の開始終了情報になったならば
,対象データがなかったとして呼び出し元へ復帰し,対
象データがあれば,対象データがあったとして呼び出し
元へ復帰する。
【0031】以上のように処理することにより,中断位
置における可視範囲の識別名が選択されて,出力される
ことになる。
【0032】なお,現在中断しているプログラムと異な
る位置で宣言された識別名を対象とする場合,例えば現
在中断しているプログラムの呼び出し元で宣言された識
別名をデバッグ対象とする場合には,次のようにするこ
とにより,呼び出した位置からの可視範囲の識別名をデ
バッグ対象とすることもできる。
【0033】呼び出し元の親のプログラムをAモジュー
ルとする。呼び出されたプログラムをBモジュールとす
る。今,Bモジュール内で中断しているときに,Aモジ
ュールで宣言された変数xの内容を表示させたいとする
。この場合,LISTサブコマンドを『LIST  x
  IN(A)』というように投入する。
【0034】この場合,中断位置がBモジュール内であ
っても,呼び出し元のAモジュールにおける呼び出し位
置を,データの検索基準位置とし,その呼び出し位置に
おける可視範囲のデータを,図4,図5に示すような処
理によって検索する。
【0035】
【発明の効果】本発明では,デバッグ用情報内のデータ
情報に,識別名が宣言された位置を表す情報を保持する
ことによって,本来の可視範囲の識別名をデバッグの対
象として,データ表示部に表示させたり,必要に応じて
その値を変更したりすることができる。したがって,同
一の識別名が多数存在するプログラムについても,デバ
ッグ作業を誤りなく効率的に進めることができるように
なる。
【0036】また,プログラムを作成するときには,既
に同一名の識別名が宣言されているか否かを意識しなく
てもよいので,プログラムの作成を簡易化することが可
能になる。
【図面の簡単な説明】
【図1】本発明の原理ブロック図である。
【図2】本発明の実施例に係るデバッグ用情報説明図で
ある。
【図3】本発明の実施例の説明図である。
【図4】本発明の実施例に係るデータ表示部の処理フロ
ーである。
【図5】本発明の実施例に係るデータ情報検索部の処理
フローである。
【図6】従来技術の説明図である。
【符号の説明】
10    ソースプログラム 11    入出力装置 12    データ処理装置 13    コンパイラ 14    デバッガ 15    中断点設定部 16    データ表示部 17    データ情報検索部 18    デバッグ用情報 19    文情報 20    データ情報 21    実行形式プログラム

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】  高級言語で記述されたプログラムのデ
    バッグ機能を有するデータ処理装置(12)における識
    別名検索処理方式であって,デバッグ時に参照されるデ
    ータに関する情報を保持するデータ情報(20)に,そ
    のデータがソースプログラム(10)上のどこで宣言さ
    れたかを表す情報を保持するように構成され,データ内
    容を表示することを指示するデバッグ用のサブコマンド
    が投入された場合に,そのサブコマンドがソースプログ
    ラム(10)上のどこで中断しているときに投入された
    かにより,その中断位置に対応するデータ情報がどれか
    を探し出すデータ情報検索手段(17)を備え,中断位
    置における可視範囲の識別名に対応するデータを表示す
    るようにしたことを特徴とする識別名検索処理方式。
JP3018431A 1991-01-18 1991-01-18 識別名検索処理方式 Withdrawn JPH04236635A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3018431A JPH04236635A (ja) 1991-01-18 1991-01-18 識別名検索処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3018431A JPH04236635A (ja) 1991-01-18 1991-01-18 識別名検索処理方式

Publications (1)

Publication Number Publication Date
JPH04236635A true JPH04236635A (ja) 1992-08-25

Family

ID=11971461

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3018431A Withdrawn JPH04236635A (ja) 1991-01-18 1991-01-18 識別名検索処理方式

Country Status (1)

Country Link
JP (1) JPH04236635A (ja)

Similar Documents

Publication Publication Date Title
US5926638A (en) Program debugging system for debugging a program having graphical user interface
US6412106B1 (en) Graphical system and method for debugging computer programs
US6550056B1 (en) Source level debugger for debugging source programs
US6981248B2 (en) Conditional breakpoint encountered indication
US7552425B2 (en) Implementing enhanced compiled breakpoint analysis
EP0370274A2 (en) Personal computer/host emulation system for handling host data with personal computer application programs at personal computers
US6330691B1 (en) Use of dynamic translation to provide breakpoints in non-writeable object code
JPH0766342B2 (ja) プログラムテスト装置
JP2922723B2 (ja) 情報処理装置
WO2024069730A1 (ja) デバッグ装置及びデバッグ方法
JP2570593B2 (ja) デバッグ装置
JPS61213936A (ja) 高級言語プログラムのステツプ実行方式
JP2659366B2 (ja) デバッグ方法及びその装置
Robbins GDB Pocket Reference
Josephs An on-line machine language debugger for OS/360
JPS63223931A (ja) 論理図実行ル−ト出力処理方式
JPS6367695B2 (ja)
US7627859B2 (en) Method for configuring non-script language library files to be run as scripts
JP2815638B2 (ja) デバッグ装置
JPS63223928A (ja) 論理図デバツグ処理方式
JPH03144833A (ja) デバッグ・システム
JPH06290077A (ja) プログラム実行中断点設定方法
JPH0259936A (ja) カーソル移動処理方式
JPH05334135A (ja) プログラム異常終了時のエラー情報表示方式
JPH05342052A (ja) デバッグ方式

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 19980514