JP2000353112A - 中間言語レベルのデバッグ方法及びシステム - Google Patents

中間言語レベルのデバッグ方法及びシステム

Info

Publication number
JP2000353112A
JP2000353112A JP11164663A JP16466399A JP2000353112A JP 2000353112 A JP2000353112 A JP 2000353112A JP 11164663 A JP11164663 A JP 11164663A JP 16466399 A JP16466399 A JP 16466399A JP 2000353112 A JP2000353112 A JP 2000353112A
Authority
JP
Japan
Prior art keywords
debugging
intermediate language
source program
program
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.)
Pending
Application number
JP11164663A
Other languages
English (en)
Inventor
Chitoshi Takei
千敏 竹井
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 Solution Innovators Ltd
Original Assignee
NEC Solution Innovators 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 NEC Solution Innovators Ltd filed Critical NEC Solution Innovators Ltd
Priority to JP11164663A priority Critical patent/JP2000353112A/ja
Publication of JP2000353112A publication Critical patent/JP2000353112A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】基本的な命令の単位である中間言語レベルでブ
レイクポイントの設定やステップ実行を行うことができ
るデバッグ方法及びシステムの提供。 【解決手段】高水準言語で記述されたソースプログラム
を中間言語に翻訳するコンパイラにおいて、前記ソース
プログラムをデバッグ用にコンパイルする際に、高水準
言語の命令に対して生成した中間言語の行番号、及び前
記コンパイラが内部で自動生成する内部生成変数のシン
ボル情報をデバッグ情報として生成し、前記ソースプロ
グラムをデバッグするにあたり、前記中間言語単位での
デバッグ操作、すなわち前記中間言語単位でのブレーク
ポイントの設定とステップ実行、ならびに前記内部生成
変数の値の設定及び参照を可能としている。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プログラムの開発
支援システムに関し、特に、高水準プログラム言語で記
述されたプログラムのデバッグ方法に関する。
【0002】
【従来の技術】プログラムの開発にあたり、プログラム
のデバッグを支援するツールとしてデバッガが用いられ
ている。デバッガは、高水準言語のソースプログラムを
端末画面上に、プログラム命令に行番号を付して表示
し、ユーザは、プログラム命令へのプレークポイントの
設定・解除機能、一命令毎に実行するステップ実行機
能、あるいはプログラム実行のパス、変数値を履歴表示
するトレース機能等を利用してプログラムを、一命令、
又は1行ごとにステップ実行したり、あるいはブレーク
ポイントを設定して、プレークポイントまで実行させて
停止させる等の制御を行い、プログラムのフロー解析を
行うとともに、変数の値の設定や変数値の表示等による
確認を行い、プログラムが正しく動作するか否かを検証
する。
【0003】従来のデバッガでは、ブレイクポイントの
設定をソースプログラムの1行単位で行っており、ま
た、ステップ実行もソースプログラムの1行単位、もし
くは機械語の1命令単位で行っていた。
【0004】一般に、高水準プログラム言語のコンパイ
ラは、基本的な命令で構成された汎用的な中間言語(中
間コード)を用意し、ソースプログラムを一旦この中間
言語に翻訳し、中間言語を、さらに計算機の機械語に翻
訳する構成とされている。
【0005】このソースプログラムから中間言語に翻訳
する部分を「フロントエンド」、中間言語から機械語に
翻訳する部分を「バックエンド」と呼ぶ。
【0006】
【発明が解決しようとする課題】しかしながら、上記し
た従来のデバッグ装置では、適切な位置へのブレイクポ
イントの設定やステップ実行を行うことができず、プロ
グラムの動作が把握しづらい、という問題点を有してい
る。
【0007】その理由は、以下に通りである。すなわ
ち、高水準プログラム言語の1命令は、複数の処理を行
う複雑な記述が可能であり、ソースプログラムの1命令
は中間言語のいくつかの命令に翻訳される。従来のデバ
ッグ装置では、ソースプログラムの1行単位や、機械語
の1命令単位でのステップ実行やブレイクポイントの設
定が行われるため、プログラムの動作が把握しづらいこ
とがある。
【0008】したがって本発明は、上記問題点に鑑みて
なされたものであって、その目的は、基本的な命令の単
位である中間言語レベルでブレイクポイントの設定やス
テップ実行を行うことができるデバッグ方法及びシステ
ムを提供することにある。
【0009】
【課題を解決するための手段】前記目的を達成する本発
明は、コンパイラが高水準言語で記述されたソースプロ
グラムをコンパイルする際に、中間言語の行番号及びコ
ンパイラが内部で自動生成する内部生成変数のシンボル
情報をデバッグ情報として生成し、デバッグ装置を用い
てソースプログラムをデバッグするにあたり、中間言語
でのブレークポイントの設定とステップ実行、及び前記
内部生成変数の値の参照又は参照及び設定を可能とした
ものである。
【0010】デバッグ装置を用いてソースプログラムを
デバッグするにあたり、ソースプログラムでのデバッグ
又は中間言語レベルでのデバッグが切替え自在とされ
る。
【0011】
【発明の実施の形態】本発明の実施の形態について説明
する。デバッグ装置を用いてデバッグを行う場合、コン
パイル時に、スイッチ(オプション)等でデバッグ用の
コンパイルを行う。コンパイラによって生成されるオブ
ジェクトファイルはコードとデータを含んでいる。デバ
ッグ指定してコンパイルを行った場合、さらに変数名な
どのシンボル情報や、行番号生成手段によって一命令又
は複数命令毎に付与される行番号情報といったデバッグ
情報が付加される。
【0012】本発明は、高水準プログラム言語で作成さ
れたソースプログラムのデバッグにおいて、中間言語の
1命令(1行)単位にブレイクポイントを設定したり、
ステップ実行を行うため、ソースプログラムのプログラ
ム命令に対して生成される中間言語に対する行番号情報
をデバッグ情報の中に挿入しておき、端末上に中間言語
を行番号情報とともに表示し、この中間言語の行番号情
報に基づいて当該プログラムを指定の位置でブレイクし
たりステップ実行を行うようにしたものである。
【0013】これにより、ユーザは中間言語の1命令
(1行)単位でブレイクポイントの設定やステップ実行
を行うことができるようになる。
【0014】ところで、中間言語の中には、コンパイラ
が自動的に生成した変数(内部生成変数)が存在するた
め、中間言語レベルで実行を一旦止めても、この内部生
成変数を参照することができなければ、効果的なデバッ
グ作業はできない。
【0015】そこで、本発明においては、中間言語に対
する行番号情報と同様に、コンパイラが自動生成する内
部生成変数に対してもシンボル情報をデバッグ情報の中
に挿入しておき、内部生成変数の参照できるようにす
る。ユーザは、中間結果などの内部生成変数に対しても
参照を行うことができるようにしている。
【0016】本発明は、高水準言語で記述されたソース
プログラムを入力し中間言語に翻訳するコンパイラにお
いて、デバッグ情報の生成が指定入力された際に、前記
コンパイラが前記ソースプログラムの翻訳にあたり、高
水準言語の命令に対して生成した中間言語の行番号、及
び前記コンパイラが内部で自動生成する内部生成変数の
シンボル情報をデバッグ情報として生成する処理は、コ
ンピュータで実行されプログラムでその処理が実現され
る。
【0017】またコンピュータ上でソースプログラムを
デバッグするデバッガ装置において、ソースプログラム
の中間言語の行番号情報及びコンパイラが内部生成した
内部変数のシンボル情報をデバッグ情報として入力し、
中間言語をその行番号情報とともに端末に表示し、中間
言語単位でのブレークポイントの設定とステップ実行、
及び前記内部生成変数の値の設定及び参照を可能とする
前記中間言語単位でのデバッグ操作を実行する処理は、
コンピュータで実行されプログラムでその処理が実現さ
れる。これらのプログラムを記録した記録媒体から該プ
ログラムをコンピュータに読み出すか、通信媒体を介し
て該プログラムを読み出し、コンピュータで該プログラ
ムを実行することで本発明を実施することができる。
【0018】
【実施例】本発明の実施例について図面を参照して説明
する。図1は、本発明の一実施例の構成を説明するブロ
ック図である。図1において、11はソースファイル、
12はコンパイラフロントエンド、13は中間言語ファ
イル、14はコンパイラバックエンド、15はオブジェ
クトファイル、16はデバッガ、17はデバッガ・ユー
ザインタフェイス、18は入出力手段である。
【0019】ソースファイル11は、ユーザが、COB
OL、FORTRAN、又はC言語等の所望の高水準言
語の文法(シンタックス)にしたがって記述したソース
プログラムである。
【0020】コンパイラフロントエンド12は、ソース
ファイル11を入力し、字句解析、構文解析、意味解析
等を行い、中間言語に翻訳し、中間言語ファイル13を
作成する。
【0021】コンパイラバックエンド14は、中間言語
ファイル13をターゲット計算機の機械語(オブジェク
トコード)に翻訳してオブジェクトファイル15を作成
する。
【0022】この際に、従来のデバッグ情報に加え、中
間言語に対する行番号情報と、コンパイラが自動で生成
した内部生成変数に対するシンボル情報を挿入する。
【0023】これにより、オブジェクト中に、ソースフ
ァイル11と中間言語ファイル13の両方の行番号情
報、およびユーザ変数(ソースプログラムでユーザが定
義した変数)と内部生成変数のシンボル情報が存在する
ことになる。
【0024】デバッガ16によって、オブジェクトファ
イル15の実行を制御する場合、例えばソースファイル
11のリストの何行目までを実行せよ、といったような
実行制御命令を、ユーザがデバッガ16に対して与える
ことができ、デバッグ作業を容易に行うことができる。
【0025】ここで、デバッガ16は、中間言語に対す
る行番号情報に基づいて、ブレイクポイントを設定する
ことができ、ユーザの指示に応じた位置で当該プログラ
ムをブレイクすることができる。またステップ実行にお
いてもユーザの指示により、ソースプログラムの1行単
位と中間言語の1行単位とに任意に切り換えて行う切替
手段を備えている。中間言語に切り換えた場合、内部生
成変数の参照も可能となる。
【0026】デバッガ・ユーザインタフェイス17は、
デバッガとユーザとの間のインタフェイスであり、入出
力手段18を通じて指示されたブレイク位置をデバッガ
16に伝える。入出力手段18は、データの入力や指示
を行うためのキーボード等の入力装置と、デバッガ16
の実行結果等を表示するためのディスプレイ等の表示装
置とからなる。
【0027】最終的に、オブジェクトファイル15には
行番号情報と対応するアドレスの組からなるリストがデ
バッグ情報の一部として格納される。
【0028】ユーザはデバッガ・ユーザインタフェイス
17などを用いブレイクポイントの指定やステップ実行
の指示を行う。ユーザインタフェイス17は、ブレイク
ポイントの設定には行番号を、コマンドもしくはリスト
からの選択で指定して行うが、このとき表示されるリス
ト、およびコマンドで入力する行番号は、ソースプログ
ラム又は中間言語のいずれかに任意に切り換えられる。
【0029】また、ステップ実行の指定についても、従
来通りソースプログラムの1行単位に行うか、中間言語
の1行単位に行うかをユーザが指示し、切替え自在とさ
れている。
【0030】デバッガ16は、デバッグ情報を参照し
て、ブレイクポイントの指定位置を認識することによ
り、当該プログラムを停止させる。
【0031】このように、翻訳時に中間言語ファイルの
行情報を挿入しておくことで、ユーザがブレイクポイン
トの位置を指定する場合においてソースファイルの指定
された行だけでなく、より詳細な位置を指定することが
でき、その際に中間結果などの内部生成変数を参照する
ことで効果的なデバッグ作業を行うことができる。
【0032】以下に、本発明を適用した具体例に即して
説明する。図2は、本発明の一実施例を説明するための
図であり、COBOLプログラムのデバッグの例を示す
図である。図2において、21はソースプログラムの一
部、22はソースプログラム21を展開した中間言語の
一部である。また、中間言語22のT#1はコンパイラ
が内部的に生成した中間結果領域である。
【0033】このプログラムは、Bの値が1、Cの値が
3のとき、BのCに対するパーセンテージを求め変数A
に代入する演算(A=B/C×100)を行っている。
COBOLのソースプログラムの演算命令であるCOM
PUTE A=B/C×100は、中間言語に翻訳され
た結果、 COMPUTE T#1=B/C COMPUTE A=T#1×100 と二つの命令に変換される。
【0034】このプログラムを実行した結果、変数Aの
値として33であることが期待されるが、演算後Aの値
は0となった。
【0035】この場合、ソースプログラムにおいて、0
02010行からはプログラムに誤りはないように思わ
れる。
【0036】そこで、ユーザは、このプログラムのデバ
ッグにあたり、中間言語の003020行でブレイクポ
イントを設定し、内部変数T#1の値を参照したとこ
ろ、T#1の小数部桁数は0桁であり、0.33にはな
っていなかった。
【0037】このことから、中間結果領域の生成規則に
より小数部が切り捨てられ、A=R#1*100の演算
は、0*100より変数Aに0が代入されていることが
わかった。なお、デバッグステージで、内部変数T#1
の値の参照のみならず、その値の設定を行なうようにし
てもよいことは勿論である。
【0038】このように、中間言語レベルでのブレーク
ポイントの設定、ステップ実行、並びに内部変数T#1
の値の参照を可能としたことにより、プログラムの動作
解析を正確に行なうことができる。
【0039】
【発明の効果】以上説明したように、本発明によれば、
デバッグ時に、中間言語レベルでブレイクポイントの指
定やステップ実行を行い、また内部生成変数を参照可能
としたため、デバッグ作業を効率化する、という効果を
奏する。
【図面の簡単な説明】
【図1】本発明の一実施例の構成を示す図である。
【図2】本発明の一実施例を説明するための図であり、
COBOLプログラムのデバッグの例を示す図である。
【符号の説明】
11 ソースファイル 12 コンパイラフロントエンド 13 中間言語ファイル 14 コンパイラバックエンド 15 オブジェクトファイル 16 デバッガ 17 デバッガ・ユーザインタフェイス 18 入出力手段 21 ソースプログラムの一部 22 中間言語の一部

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】高水準言語で記述されたソースプログラム
    を中間言語に翻訳するコンパイラにおいて、前記ソース
    プログラムをデバッグ用に翻訳する際に、高水準言語の
    命令に対して生成した中間言語の行番号、及び前記コン
    パイラが内部で自動生成する内部生成変数のシンボル情
    報をデバッグ情報として生成出力し、 前記ソースプログラムをデバッグ装置でデバッグするに
    あたり、前記デバッグ情報に基づき前記中間言語単位で
    のデバッグ操作を可能としたことを特徴とするデバッグ
    方法。
  2. 【請求項2】前記中間言語単位でのブレークポイントの
    設定及びステップ実行を可能としたことを特徴と請求項
    1記載のデバッグ方法。
  3. 【請求項3】前記内部生成変数の値の参照及び/又は設
    定を可能としたことを特徴と請求項1又は2記載のデバ
    ッグ方法。
  4. 【請求項4】前記デバッグ装置を用いて前記ソースプロ
    グラムをデバッグするにあたり、ソースプログラムでの
    デバッグ又は中間言語レベルでのデバッグが切替え自在
    とされていることを特徴とする請求項1乃至3のいずれ
    か一に記載のデバッグ方法。
  5. 【請求項5】コンパイラが、高水準言語で記述されたソ
    ースプログラムを中間言語にコンパイルする際に、前記
    中間言語の行番号及び前記コンパイラがコンパイル時に
    自動生成する内部生成変数のシンボル情報をデバッグ情
    報として生成し記憶手段に格納する手段を備え、 デバッグ装置が、前記ソースプログラムのデバッグ実行
    に際して、中間言語を表示し、前記デバッグ情報を参照
    して、中間言語でのブレークポイントの設定、ステップ
    実行、前記内部生成変数の値の参照及び/又は設定を含
    むデバッグ処理を実行する手段を備えたことを特徴とす
    るプログラム開発支援システム。
  6. 【請求項6】前記デバッグ装置が、前記ソースプログラ
    ムをデバッグするにあたり、ソースプログラムでのデバ
    ッグ又は中間言語レベルでのデバッグを切替える手段を
    備えたことを特徴とする請求項4記載のプログラム開発
    支援システム。
  7. 【請求項7】高水準言語で記述されたソースプログラム
    を入力し中間言語に翻訳するコンパイラが稼動するコン
    ピュータにおいて、 デバッグ情報の生成が指定入力された際に、前記コンパ
    イラが前記ソースプログラムの翻訳にあたり、高水準言
    語の命令に対して生成した中間言語の行番号、及び前記
    コンパイラが内部で自動生成する内部生成変数のシンボ
    ル情報をデバッグ情報として生成する処理を、 前記コンピュータで実行するためのプログラムを記録し
    た記録媒体。
  8. 【請求項8】コンピュータ上でソースプログラムをデバ
    ッグするデバッガ装置において、 ソースプログラムの中間言語の行番号情報及びコンパイ
    ラが内部生成した内部変数のシンボル情報をデバッグ情
    報として入力し、中間言語をその行番号情報とともに端
    末に表示し、中間言語単位でのブレークポイントの設
    定、ステップ実行、前記内部生成変数の値の参照及び/
    又は設定を含む前記中間言語単位でのデバッグ操作を実
    行する処理を、 前記コンピュータで実行するためのプログラムを記録し
    た記録媒体。
JP11164663A 1999-06-11 1999-06-11 中間言語レベルのデバッグ方法及びシステム Pending JP2000353112A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11164663A JP2000353112A (ja) 1999-06-11 1999-06-11 中間言語レベルのデバッグ方法及びシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11164663A JP2000353112A (ja) 1999-06-11 1999-06-11 中間言語レベルのデバッグ方法及びシステム

Publications (1)

Publication Number Publication Date
JP2000353112A true JP2000353112A (ja) 2000-12-19

Family

ID=15797462

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11164663A Pending JP2000353112A (ja) 1999-06-11 1999-06-11 中間言語レベルのデバッグ方法及びシステム

Country Status (1)

Country Link
JP (1) JP2000353112A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014067211A (ja) * 2012-09-26 2014-04-17 Hitachi Solutions Ltd OpenCOBOLプログラムのデバッグ支援システム
US9081584B2 (en) 2012-07-03 2015-07-14 Fujitsu Limited Recording medium storing compiling program, compiling method, and compiling device
KR101670726B1 (ko) * 2013-12-02 2016-10-31 한국과학기술연구원 중간 언어 코드의 디버깅 정보를 이용한 코드 변환 방법과 그를 위한 장치 및 컴퓨터로 읽을 수 있는 기록매체

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9081584B2 (en) 2012-07-03 2015-07-14 Fujitsu Limited Recording medium storing compiling program, compiling method, and compiling device
JP2014067211A (ja) * 2012-09-26 2014-04-17 Hitachi Solutions Ltd OpenCOBOLプログラムのデバッグ支援システム
KR101670726B1 (ko) * 2013-12-02 2016-10-31 한국과학기술연구원 중간 언어 코드의 디버깅 정보를 이용한 코드 변환 방법과 그를 위한 장치 및 컴퓨터로 읽을 수 있는 기록매체

Similar Documents

Publication Publication Date Title
US5815714A (en) Embedded debug commands in a source file
JP3612294B2 (ja) デバッグ方法およびデバッグ装置
JPH11194957A (ja) デバッグ支援装置、並列実行情報生成装置、及びこれらに適用されるプログラムを記録した記録媒体
JPH10240543A (ja) オブジェクト・コード最適化装置
JP3380390B2 (ja) デバッグ情報表示装置
CN110442520B (zh) 一种基于plc编程语言的交叉调试系统及方法
JP2000353112A (ja) 中間言語レベルのデバッグ方法及びシステム
KR100417655B1 (ko) 최적화과정을참조하면서동작검증을행하도록디버그정보를생성하는디버그정보생성장치및프로그래머가최적화과정을의식하면서동작검증을할수있는디버그장치로이루어지는프로그램개발시스템
JP3196675B2 (ja) 言語処理方式
JPH0766342B2 (ja) プログラムテスト装置
KR20090004210A (ko) 통합 개발 환경을 이용한 소프트웨어 프로그램을 개발하기위한 장치 및 통합 개발 환경을 이용한 소프트웨어프로그램 개발 시스템
JPH1185486A (ja) プログラム編集装置,プログラム編集方法,及びコンピュータ可読媒体
JP2010287101A (ja) ソフトウエアデバッグ装置及び方法
JPH11110256A (ja) プログラムデバッグ装置、プログラムデバッグ方法及びその方法を記録したコンピュータ読取り可能な記録媒体
KR100294633B1 (ko) 피엘씨의시뮬레이터
JP2007004516A (ja) 組込みシステムのプログラムデバッグ方法
JP2004026083A5 (ja)
JP4594704B2 (ja) プログラム開発支援システム、プログラムおよび記録媒体
JP2004287869A (ja) プログラム実行監視装置および方法
JP2672968B2 (ja) デバッグ用ソースリスト出力処理方式
JPH0756723A (ja) コンパイラ装置
Elms Debugging optimised code using function interpretation
JPH10289123A (ja) 最適化コードデバッグ方式
JP2009515243A (ja) ホストコンピュータ上で実行可能なシミュレーションプログラムを生成する方法
JPH06231003A (ja) 実行可能ファイルのデバッガ

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20020226