JPH05233365A - 最適化コードデバッグ方式 - Google Patents

最適化コードデバッグ方式

Info

Publication number
JPH05233365A
JPH05233365A JP4070259A JP7025992A JPH05233365A JP H05233365 A JPH05233365 A JP H05233365A JP 4070259 A JP4070259 A JP 4070259A JP 7025992 A JP7025992 A JP 7025992A JP H05233365 A JPH05233365 A JP H05233365A
Authority
JP
Japan
Prior art keywords
code
source program
processing
debugging
statement
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
JP4070259A
Other languages
English (en)
Inventor
Takashi Miyamoto
敬士 宮本
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 JP4070259A priority Critical patent/JPH05233365A/ja
Publication of JPH05233365A publication Critical patent/JPH05233365A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 ソースプログラムレベルのデバッグ方式にお
いて、指定する行の処理終了時点で実行を中断する機能
を持たせることにより、コード移動の最適化が行われる
場合でも正しい位置で実行が中断されることを可能とす
る。 【構成】 コンパイラのソースプログラム解釈部はソー
スプログラムの各行について処理手順4で示された処理
を行う。最初に現在の行に対するコード生成が始まるこ
とを表すデバッグ用中間コード命令の生成41を行う。
次に現在の行のプログラム文の解釈42を行う。最後に
現在の行に対するコード生成が終了したことを表すデバ
ッグ用中間コード命令の生成43を行う。処理41と処
理43で生成された中間コードは目的コード生成部にお
いて行番号に関するデバッグ情報の生成に用いられ、デ
バッガはこのデバッグ情報を参照することによりデバッ
グ時の実行中断を行う。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はコンパイラが生成するコ
ードに対して、指定されたソースプログラム行で実行を
中断させ得るコードデバッグ方式に関する。
【0002】
【従来の技術】従来、指定されたソースプログラム行の
処理終了時点で実行を中断させ得るデバッガにおいて、
デバッガの使用者が指定したソースプログラム行の処理
開始時点でのみ実行の中断が可能であった。そのため、
ソースプログラム中のある文の処理が正確に行われたか
どうかを知るためにはデバッガの使用者はこの文の次に
位置する文において実行を中断させ、処理動作の確認を
行っていた。
【0003】
【発明が解決しようとする課題】しかしながら、この方
式ではコード移動の最適化が行われたコンパイラが生成
したコードに対しては、ソースプログラムにおける文の
並びと生成コードにおける命令の並びの間には一般に対
応関係がないので、ソースプログラム上で処理動作の確
認を行う文の次の文が最適化によって移動された場合
に、正しい位置で実行を中断することができないという
問題があった。本発明の目的は上記問題を解決するもの
で、ソースプログラムを構成する各文について、対応す
る生成コードの開始位置に加えて終了位置にもデバッグ
用の情報を置き、デバッグ時に指定した文の処理終了時
点で実行を中断することを可能にすることにより、処理
動作の確認を行う文の次の文が最適化によって移動して
も正しい位置で実行を中断することができる最適化コー
ドデバッグ方式を提供することにある。
【0004】
【課題を解決するための手段】前記目的を達成するため
に本発明による最適化コードデバッグ方式はコイパイラ
が生成するコードを対象とするデバッグ方式において、
ソースプログラムの各行に対応するコードの終了位置を
生成コード中のデバッグ情報として含めることにより、
デバッグ時に指定されたソースプログラム行の処理終了
時点で実行を中断させ、コード移動の最適化が行われる
コンパイラが生成するコードに対してもデバッグを可能
にするように構成されている。
【0005】
【作用】上記構成によれば、処理動作の確認を行う文の
次の文が最適化によって移動しても正しい位置で実行を
中断することができる。
【0006】
【実施例】以下、図面を参照して本発明をさらに詳しく
説明する。図1は本発明による最適化コードデバッグ方
式の対象となるコードを生成するコンパイラの構成を示
す図である。本実施例は二次記憶装置に格納されている
ソースプログラム1,コイパイラ2およびコイパイルさ
れて二次記憶装置に格納される目的プログラム3より構
成されている。コンパイラ2はソースプログラム解釈部
21,コード移動の最適化を含む最適化部22および目
的プログラム出力部23より構成されている。
【0007】コンパイラ2は二次記憶装置からソースプ
ログラム1を取り込み、ソースプログラム解釈部21で
構文解析,意味解析を行い結果を中間コードに展開す
る。この中間コードにはデバッグ時にソースプログラム
レベルのデバッグを可能にするためのソースプログラム
の行番号と、各行に対応する中間コードの先頭および最
後の位置が記されている。中間コードに対して最適化部
22でコード移動の最適化を含む最適化処理を施す。目
的プログラム出力部23は目的プログラムを二次記憶装
置に出力する。
【0008】図2はソースプログラムの文に対する本方
式におけるソースプログラム解釈部21の処理手順を示
す図である。ソースプログラム解釈部21の処理手順4
は文の開始位置を表すデバッグ情報用命令の処理41,
プログラム文の解釈を行う処理42および文の終了位置
を表すデバッグ情報用命令の処理43の順になってい
る。
【0009】図3はソースプログラム解釈部の処理にし
たがって作成された中間コードの例を示す図である。図
中、5はソースプログラムの一部分の例,51はソース
プログラムを構成する文の一つを示している。ソースプ
ログラム5に対する中間コード5はソースプログラムの
文51に対する中間コードの先頭を表す命令61,ソー
スプログラムの文51に対する中間コードの最後を表す
命令62を含んでいる。
【0010】図4は中間コード6が最適化部22のコー
ド移動最適化によって変形され、ソースプログラムの文
51に対応する中間コードがコード移動の対象となり、
中間コードの命令61から中間コードの命令62までの
中間コードが別の位置に移動された結果を示す図であ
る。7は中間コード6に対して最適化部22のコード移
動最適化によって変形が行われた結果を示しており、最
適化によって移動された中間コード71が示されてい
る。図4に示されるようなコード移動の最適化が起こる
場合の一つはソースプログラム5がループ文の中にあ
り、文51をループ文の外に移動してもプログラムの意
味が変わらない場合である。このような最適化は「ルー
プ不変式の移動」と呼ばれ、一般的な最適化技法であ
る。本方式が対象とするコード移動の最適化はループ不
変式の移動以外のコード移動を含んでいる。
【0011】図5は中間コード6が目的プログラム出力
部23によって変換された目的プログラムをアセンブリ
言語表記で示す図である。中間コードに対する目的プロ
グラム8は中間コード71に対する目的プログラム8
1,ソースプログラムの文51が含まれる行に対するコ
ードの先頭を表すアセンブリ命令811,文51が含ま
れる行に対するコードの最後を表すアセンブリ命令81
2を含んでいる。中間コードの命令61,命令62は目
的プログラム出力部において最初にそれぞれ命令81
1,命令812に変換される。次に命令811,命令8
12はそれぞれ目的プログラム中の命令の位置を表すオ
フセットと組となり、行番号に関するデバッグ情報を構
成する。
【0012】デバッガはソースプログラム中の行番号に
おける実行中断指令を受けると、目的プログラム中の、
行番号に関する情報を参照して中断位置を設定する。デ
バッガの使用者は行番号を用いて実行中断位置を指定す
る時は、指定する行番号の文の処理の直前で実行を中断
するか、処理の直後で中断するかを指定する。デバッガ
はこの指定にしたがい適切な実行中断位置を設定する。
【0013】
【発明の効果】以上、説明したように本発明による最適
化コードデバッグ方式はソースプログラムを構成する各
文について、生成コード中の対応するコードの開始位置
に加えて終了位置にデバッグ用の情報を置いた構成であ
るので、デバッグ時に指定した文の処理終了時点で実行
を中断することを可能にし、これにより、指定した文の
次の文が最適化によって移動しても正しい位置で実行を
中断させることができるという効果がある。
【図面の簡単な説明】
【図1】本発明による最適化コードデバッグ方式の対象
となるコードを生成するコンパイラの構成を示す図であ
る。
【図2】本発明方式にしたがって作成されたソースプロ
グラム解釈部の処理手順の実施例を示す図である。
【図3】図2の処理手順にしたがって作成された中間コ
ードの例を示す図である。
【図4】中間コードが最適化部のコード移動最適化によ
って変形され、ソースプログラムの文に対応する中間コ
ードがコード移動の対象となり、別の位置に移動された
結果を示す図である。
【図5】中間コードが目的プログラム生成部によって変
換された目的プログラムを示す図である。
【符号の説明】
1…ソースプログラム 2…コイパイラ 3…目的プログラム 4…処理手順 6…中間コード 21…ソースプログラム解釈部 22…最適化部 23…目的プログラム出力部 51…ソースプログラムを構成する文の一つ 61,62…命令 811,812…アセンブリ命令

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 コイパイラが生成するコードを対象とす
    るデバッグ方式において、 ソースプログラムの各行に対応するコードの終了位置を
    生成コード中のデバッグ情報として含めることにより、
    デバッグ時に指定されたソースプログラム行の処理終了
    時点で実行を中断させ、コード移動の最適化が行われる
    コンパイラが生成するコードに対してもデバッグを可能
    にすることを特徴とする最適化コードデバッグ方式。
JP4070259A 1992-02-19 1992-02-19 最適化コードデバッグ方式 Pending JPH05233365A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4070259A JPH05233365A (ja) 1992-02-19 1992-02-19 最適化コードデバッグ方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4070259A JPH05233365A (ja) 1992-02-19 1992-02-19 最適化コードデバッグ方式

Publications (1)

Publication Number Publication Date
JPH05233365A true JPH05233365A (ja) 1993-09-10

Family

ID=13426369

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4070259A Pending JPH05233365A (ja) 1992-02-19 1992-02-19 最適化コードデバッグ方式

Country Status (1)

Country Link
JP (1) JPH05233365A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5956511A (en) * 1996-03-29 1999-09-21 Kabushiki Kaisha Toshiba Program development support apparatus, program development support method, and storage medium therefor

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS51144542A (en) * 1975-06-06 1976-12-11 Sharp Corp Debug device of program systemized computer
JPH03179535A (ja) * 1989-12-08 1991-08-05 Nec Corp デバッグ支援装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS51144542A (en) * 1975-06-06 1976-12-11 Sharp Corp Debug device of program systemized computer
JPH03179535A (ja) * 1989-12-08 1991-08-05 Nec Corp デバッグ支援装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5956511A (en) * 1996-03-29 1999-09-21 Kabushiki Kaisha Toshiba Program development support apparatus, program development support method, and storage medium therefor

Similar Documents

Publication Publication Date Title
JP2004164554A (ja) プログラム実行監視装置および方法
JPH05233365A (ja) 最適化コードデバッグ方式
JPH11110256A (ja) プログラムデバッグ装置、プログラムデバッグ方法及びその方法を記録したコンピュータ読取り可能な記録媒体
JPH10187461A (ja) 言語処理方式
JP2004287869A (ja) プログラム実行監視装置および方法
JP2672968B2 (ja) デバッグ用ソースリスト出力処理方式
JP2000353112A (ja) 中間言語レベルのデバッグ方法及びシステム
JP2001125793A (ja) コンパイラシステム及びコンパイル方法並びに記録媒体
JPH04333146A (ja) デバッグにおけるプログラムの実行制御方式
JPS626260B2 (ja)
JPH11154093A (ja) プログラムコンパイラ及びコンパイラ用プログラムを記録した記録媒体
JP2007004516A (ja) 組込みシステムのプログラムデバッグ方法
JPS61180344A (ja) 高級言語のステツプ実行システム
JPS61180342A (ja) 高級言語のステツプ実行方式
JPH04209029A (ja) 並列処理プログラム翻訳処理装置
CN121833469A (zh) 一种代码调试方法、装置、设备及介质
JPH0488438A (ja) 高級言語による原始プログラムに対するデバッガの一命令実行方式
JPH05341982A (ja) プログラム開発支援装置
JPH0954696A (ja) プログラム生成方法及びトランスレータ、コンパイラ並びに実行時ライブラリ
JPH07319730A (ja) テスト・デバッグ方法
JPH1040131A (ja) プログラムデバッグ方法
JP2006350676A (ja) 組込みシステムのプログラムデバッグ方法
JPH0651995A (ja) 実行サブルーチン名の認識方法
JPH04169941A (ja) デバッグ情報出力処理方式
JPH05108372A (ja) コンパイラ最適化処理内容の出力方式