JPH08255097A - Debugging information output system - Google Patents
Debugging information output systemInfo
- Publication number
- JPH08255097A JPH08255097A JP7137786A JP13778695A JPH08255097A JP H08255097 A JPH08255097 A JP H08255097A JP 7137786 A JP7137786 A JP 7137786A JP 13778695 A JP13778695 A JP 13778695A JP H08255097 A JPH08255097 A JP H08255097A
- Authority
- JP
- Japan
- Prior art keywords
- source
- debug information
- information
- output
- text file
- 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
Links
Landscapes
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
Description
【0001】[0001]
【産業上の利用分野】本発明は、プログラム言語処理装
置等に利用され、オブジェクトファイルに対してデバッ
グを行うためのデバッグ情報出力方式に関する。BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a debug information output method used for a programming language processing device or the like to debug an object file.
【0002】[0002]
【従来の技術】従来、オブジェクトファイル(ソースプ
ログラムをデバッグ用の機械語に変換したもの)に対し
てソースレベルデバッグを行う場合において、そのオブ
ジェクトファイルは最適化されていないものを使用して
いる。その理由としては、次の2つが挙げられる。2. Description of the Related Art Conventionally, when source level debugging is performed on an object file (a source program converted into a machine language for debugging), the object file is not optimized. The reasons are as follows.
【0003】(1)ソースプログラムとの対応をとるた
めに行情報を使用するので、行が削除されたり、行が入
れ代わってしまうような最適化を行うと、行情報との対
応がとれなくなる。この点について図8を用いて説明す
る。図中111はソースプログラム、112はソースプ
ログラムを最適化したイメージ、113はソースプログ
ラム111の最適化後の出力テキストファイルである。
ソースプログラム111中の114は不要な命令を示す
部分であり最適化を行うと削除される。しかし、ソース
レベルデバッグ情報は、ソースプログラム111の各行
に対して出力されるので部分114に対するデバッグ情
報115,115’は対応する出力テキストがなくなっ
てしまい、ソースレベルデバッグが行えない。(1) Since line information is used to make correspondence with the source program, if optimization is performed such that lines are deleted or lines are replaced, line information cannot be obtained. . This point will be described with reference to FIG. In the figure, 111 is a source program, 112 is an optimized image of the source program, and 113 is an output text file after the source program 111 is optimized.
Reference numeral 114 in the source program 111 is a portion indicating an unnecessary instruction and is deleted when optimization is performed. However, since the source level debug information is output for each line of the source program 111, the output text corresponding to the debug information 115 and 115 'for the portion 114 is lost, and source level debugging cannot be performed.
【0004】(2)強力な最適化を行うためにはスタッ
ク(メモリの一部)を使用しなければならないが、スタ
ックを使用した場合、そこに書き込まれた内容が分から
ないとソースレベルデバッグは行えない。従来のソース
レベルデバッグ情報では、スタックの内容を知る手段が
なかったので、フレームポインタを使用したオブジェク
トファイルを用いている。しかし、フレームポインタを
使用した場合、レジスタが不足するため最適化が行えな
い。(2) The stack (a part of the memory) must be used to perform a powerful optimization, but if the stack is used, the contents written in the stack cannot be understood and the source level debugging cannot be performed. I can't do it. Since the conventional source level debug information has no means for knowing the contents of the stack, an object file using a frame pointer is used. However, when the frame pointer is used, optimization cannot be performed because there are insufficient registers.
【0005】一方、ソースプログラムを最適化処理して
得られる出力テキストファイルについて、使用者(以
下、ユーザという)がその内容を把握することは困難で
あった。特に、ソースプログラムが最適化された場合
は、出力テキストファイルを時系列的に追わねば不可能
である。その理由としては、次の2つが挙げられる。On the other hand, it has been difficult for a user (hereinafter referred to as a user) to grasp the contents of an output text file obtained by optimizing a source program. Especially when the source program is optimized, it is impossible to follow the output text file in time series. The reasons are as follows.
【0006】(1)ソースプログラム内の変数は、出力
テキストファイルにおいてレジスタやメモリに割り当て
られる。更に、最適化により、削除されることもある。(1) Variables in the source program are assigned to registers and memories in the output text file. Further, it may be deleted due to optimization.
【0007】この点について図9を用いて説明する。図
中121はソースプログラム、122はソースプログラ
ムを最適化したイメージ、123は121の最適化後の
出力テキストファイルである。121から122への最
適化の過程で、内部で使用されている変数c,d,e,
f,gは削除され、123では変数は出現していない。
しかし、出力テキストファイルを使用してソースプログ
ラムの検証を行うとき、変数の履歴(削除されたかどう
か)の情報は全く出力されていない。このため、ソース
プログラムの流れから想像して判断しなければならな
い。This point will be described with reference to FIG. In the figure, 121 is a source program, 122 is an image obtained by optimizing the source program, and 123 is an output text file after the optimization of 121. In the process of optimization from 121 to 122, variables c, d, e, which are used internally,
f and g are deleted, and the variable does not appear in 123.
However, when the source program is verified using the output text file, the variable history (whether deleted or not) information is not output at all. Therefore, it is necessary to imagine and judge from the flow of the source program.
【0008】(2)強力な最適化を行うためにはスタッ
クポインタ(メモリを使用するときの基準点)を使用し
てスタック(メモリ領域の一部)を用いなければならな
いが、スタックの使用に伴いスタックポインタは順次移
動するためその移動量を把握しないとスタックの内容を
把握できない。(2) In order to perform powerful optimization, the stack pointer (reference point when using the memory) must be used to use the stack (a part of the memory area). As the stack pointer moves sequentially, the contents of the stack cannot be grasped unless the movement amount is grasped.
【0009】124,125は共に変数a,bを参照し
ている部分であるが、124,125の処理の間にスタ
ックを利用する命令が介在するため変数の参照アドレス
が変化している。しかし、出力テキストファイルを使用
してソースプログラムの検証を行うとき、スタックの移
動情報は全く出力されていない。このため、出力テキス
トファイル中でスタックを利用する命令を総て把握しな
ければ検証できない。Reference numerals 124 and 125 both refer to the variables a and b, but the reference address of the variable changes because an instruction using the stack is interposed between the processing of 124 and 125. However, when verifying the source program using the output text file, the stack movement information is not output at all. For this reason, verification cannot be performed without understanding all the instructions that use the stack in the output text file.
【0010】[0010]
【発明が解決しようとする課題】上述したような理由か
ら、従来のソースレベルデバッグ情報出力方式では、ソ
ースレベルデバッグを行うときのオブジェクトファイル
が最適化されていないため、無駄が多く大きさが非常に
大きくなる。実際に応用製品上にオブジェクトファイル
を組み込んで使用する場合は、なるべく小さいものが必
要である。従って、ソースレベルデバッグ終了後、再度
最適化を行いながらコンパイルし、それをソースレベル
デバッグ無しで応用製品上で使用しなければならず、信
頼性が著しく落ちることになる。For the above-mentioned reason, in the conventional source level debug information output method, the object file at the time of source level debugging is not optimized, so that it is wasteful and the size is very large. Grows to. When actually using the object file by incorporating it in the application product, it is necessary to make it as small as possible. Therefore, after the source level debugging is completed, it is necessary to compile while performing optimization again and to use it on the application product without the source level debugging, resulting in a significant decrease in reliability.
【0011】一方、ソースプログラムを最適化処理して
得られる出力テキストファイルをユーザが把握すること
が困難なため、次に3つの問題点がある。On the other hand, since it is difficult for the user to grasp the output text file obtained by optimizing the source program, there are the following three problems.
【0012】(1)最適化を行ったとき、ソースファイ
ルの行単位の情報が得られない。最適化の手法によって
はソースファイルに対する出力テキストファイルが異な
った場所に出力される場合がある。(1) When optimization is performed, information on a line unit basis of a source file cannot be obtained. Depending on the optimization method, the output text file for the source file may be output at different locations.
【0013】(2)従来のソース情報に、ソースプログ
ラムにおける変数と出力テキストファイルにおける変数
の関連情報が無いために、両者の関係を把握しづらい。(2) It is difficult to grasp the relationship between the source program and the variable in the output text file, since the conventional source information does not have the related information.
【0014】(3)ソースプログラムと出力テキストフ
ァイルのデータの流れは完全に一致していないため、従
来の情報量ではデータの流れを把握できない。(3) Since the data flows of the source program and the output text file do not completely match, the data flow cannot be grasped by the conventional information amount.
【0015】以上の理由から出力テキストファイルを使
用してユーザがソースプログラムの検証を行うとき従来
の情報量では、時間効率が著しく落ちることになる。For the above reasons, when the user verifies the source program by using the output text file, the conventional information amount significantly reduces the time efficiency.
【0016】本発明は、上述の如き従来の問題点を解決
するためになされたもので、その目的は、最適化された
オブジェクトファイルに対してソースレベルデバッグを
行うことを可能にし、また、その最適化を行った際に生
成される出力テキストファイルの把握をより容易にする
ことを可能にするデバッグ情報出力方式を提供すること
である。The present invention has been made to solve the above-mentioned conventional problems, and an object thereof is to make it possible to perform source level debugging on an optimized object file. It is to provide a debug information output method that makes it easier to grasp an output text file generated when optimization is performed.
【0017】[0017]
【課題を解決するための手段】上記目的を達成するため
に、第1の発明の特徴は、ソースプログラムに対応して
ソースレベルデバッグ情報を出力し、ソースレベルデバ
ッグの実施対象であるオブジェクトファイルの基になる
出力テキストファイルを生成するソースレベルのデバッ
グ情報出力方式において、前記ソースプログラムを最適
化する最適化処理手段と、前記ソースプログラムの最適
化後に、ブロック単位でソースプログラムとの対応をと
るブロック情報を前記ソースレベルデバッグ情報として
挿入するデバッグ情報挿入手段とを備えたものである。In order to achieve the above object, a feature of the first invention is that source level debug information is output corresponding to a source program, and an object file which is a target of source level debugging is executed. In a source-level debug information output method for generating an underlying output text file, optimization processing means for optimizing the source program, and a block for correlating with the source program in block units after the optimization of the source program And debug information inserting means for inserting information as the source level debug information.
【0018】第2の発明の特徴は、ソースプログラムに
対応してソースレベルデバッグ情報を出力し、ソースレ
ベルデバッグの実施対象であるオブジェクトファイルの
基になる出力テキストファイルを生成するソースレベル
のデバッグ情報出力方式において、前記オブジェクトフ
ァイルを生成するためのスタックポインタと、前記ソー
スプログラムの最適化後に、ブロック単位でソースプロ
グラムとの対応をとるブロック情報、及び該ブロック毎
の前記スタックポインタの変化量を前記ソースレベルデ
バッグ情報として挿入するデバッグ情報挿入手段とを備
えたものである。 第3の発明に特徴は、ソースプログ
ラムの構文についての解析を行う構文解析部と、前記解
析に基づいて出力テキストファイルを生成するアセンブ
ラソース生成部と、前記生成された出力テキストファイ
ルを表示する表示部とを備えたデバッグ情報出力方式で
あって、前記アセンブラソース生成部は、前記構文解析
部にて行われる解析に基づいて前記ソースプログラムの
最適化のための処理を行う最適化処理手段と、少なくと
も前記出力テキストファイルのテキスト行単位でスタッ
クの移動量を示す情報、及び、前記出力テキストファイ
ルにて使用される変数のレジスタ・メモリ割り当て情報
を、前記出力テキストファイルにユーザ用デバッグ情報
として挿入するデバッグ情報挿入手段とを備えたもので
ある。The feature of the second invention is that the source level debug information is output corresponding to the source program, and the output text file which is the basis of the object file which is the target of the source level debug is generated. In the output method, the stack pointer for generating the object file, the block information that corresponds to the source program in block units after optimization of the source program, and the change amount of the stack pointer for each block are It is provided with a debug information insertion means to be inserted as source level debug information. A feature of the third invention is that a syntax analysis unit that analyzes the syntax of a source program, an assembler source generation unit that generates an output text file based on the analysis, and a display that displays the generated output text file. A debug information output method including a section, the assembler source generation section performing optimization processing means for optimizing the source program based on the analysis performed by the syntax analysis section; At least the information indicating the movement amount of the stack in units of text lines of the output text file and the register / memory allocation information of the variables used in the output text file are inserted into the output text file as user debug information. And debug information insertion means.
【0019】[0019]
【作用】上述の如き構成の第1の発明によれば、ソース
プログラムの最適化によりソースプログラム中の不要な
行が削除されてしまうことを考慮して、ソースプログラ
ムとの対応をとるために、従来の行情報の代わりにブロ
ック単位のブロック情報をソースレベルデバッグ情報と
して挿入する。これにより、最適化によって不要な行が
削除されても、ソースレベルデバッグが可能となる。According to the first aspect of the invention as described above, in consideration of the fact that unnecessary lines in the source program are deleted by the optimization of the source program, in order to correspond to the source program, Instead of conventional line information, block information in block units is inserted as source level debug information. This allows source-level debugging even if the optimization removes unnecessary lines.
【0020】上述の如き構成の第2の発明によれば、ブ
ロック毎のスタックポインタの変化量をソースレベルデ
バッグ情報として出力するので、スタックポインタの値
とスタックの内容を知ることができ、スタックポインタ
を使用して最適化されたオブジェクトファイルに対して
もソースレベルデバッグが可能となる。According to the second aspect of the present invention having the above-mentioned configuration, since the amount of change in the stack pointer for each block is output as the source level debug information, the value of the stack pointer and the contents of the stack can be known. Source level debugging is also possible for object files optimized using.
【0021】上述の如き構成の第3の発明によれば、ユ
ーザは出力テキストファイルのテキスト行単位でスタッ
クの移動量を示す情報、及び、前記出力テキストファイ
ルにて使用される変数のレジスタ・メモリ割り当て情報
をユーザ用デバッグ情報として得ることができるので、
出力テキストファイルの内容を把握する際、レジスタ/
メモリを考慮する必要が無くなり、コメントを見るだけ
で可能となる。この結果、出力テキストファイルの内容
把握に要する時間を減少できるのである。According to the third aspect of the invention as described above, the user has information indicating the movement amount of the stack for each text line of the output text file, and the register memory of the variables used in the output text file. Since the allocation information can be obtained as user debug information,
When grasping the contents of the output text file, register /
There is no need to consider the memory, it is possible only by looking at the comment. As a result, the time required to understand the contents of the output text file can be reduced.
【0022】[0022]
【実施例】以下、本発明に係るデバッグ情報出力方式の
実施例について図面を参照しながら説明する。本発明に
係るデバッグ情報出力方式が具備するハードウエア構成
は、各種処理を行うためのCPUと、キーボード、マウ
ス、ライトペン、又はフレキシブルディスク装置等の入
力装置と、メモリ装置やディスク装置等の外部記憶装置
と、ディスプレイ装置、プリンタ装置等の出力装置等と
を備えた通常のコンピュータシステムを用いてもよい。
なお、前記CPUは、言語等における処理等を行う演算
部と、前記処理の命令を記憶するレジスタ等の主記憶部
とを具備する。また、図1に示した表示部には上記ディ
スプレイ装置による表示や、上記プリンタ装置にて印字
されたものを含むのもとする。DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS An embodiment of a debug information output system according to the present invention will be described below with reference to the drawings. The hardware configuration of the debug information output system according to the present invention includes a CPU for performing various processes, an input device such as a keyboard, a mouse, a light pen, or a flexible disk device, and an external device such as a memory device or a disk device. An ordinary computer system that includes a storage device and an output device such as a display device and a printer device may be used.
The CPU includes an arithmetic unit that performs processing in a language and the like, and a main storage unit such as a register that stores an instruction of the processing. Further, the display unit shown in FIG. 1 includes the display by the display device and the one printed by the printer device.
【0023】次に、本発明に係るデバッグ情報出力方式
が具備するソフトウエア構成は、図1にそのブロック図
を示した通り、ソースコード(ソースプログラムと同義
である)1の構文解析を行う構文解析部と、この構文解
析部での解析に従い出力テキストファイル(以下、アセ
ンブラソースという)5を生成するアセンブラソース生
成部とを有し、前記アセンブラソース生成部には最適化
処理手段と、デバッグ情報挿入手段とを備える。また、
ここで生成されたアセンブラソース5について、ソース
レベルデバッグを行うための解析を行うソースレベルデ
バッグ解析部9を備えてある。Next, the software configuration of the debug information output system according to the present invention has a syntax for parsing the source code (synonymous with the source program) 1 as shown in the block diagram of FIG. It has an analysis part and an assembler source generation part for generating an output text file (hereinafter referred to as assembler source) 5 according to the analysis in the syntax analysis part, and the assembler source generation part has an optimization processing means and debug information. And insertion means. Also,
The assembler source 5 generated here is provided with a source level debug analysis unit 9 that analyzes for performing source level debugging.
【0024】以下、本発明に係る最適化情報出力方式の
行う処理動作を説明する。まず、プログラム開発者がハ
ードディスク等の補助記憶装置に格納され、Cやfor
tran等の高水準言語や、アセンブラ等の機械向き言
語高水準言語等で記述された所定のソースプログラム
を、コンピュータシステムに対し最適化処理を行わせる
ための命令を行う。The processing operation performed by the optimized information output method according to the present invention will be described below. First, the program developer stores it in an auxiliary storage device such as a hard disk, and
An instruction for causing a computer system to perform optimization processing on a predetermined source program written in a high-level language such as tran or a machine-oriented language such as an assembler and the like.
【0025】次に、命令を受けたコンピュータシステム
はソースプログラム及び本実施例に係る処理の命令群
(以下、単に命令群と記す)をCPU内の主記憶部等に
複写する。複写された命令群内の構文解析部が実行さ
れ、複写されたソースプログラムの構文についての解析
を行う。次に、命令群内のアセンブラソース生成部の最
適化処理手段にて、前記解析に基づいて、不要な命令の
削除、最適な命令の追加、命令順序の最適化等を行う。
次に、デバッグ情報挿入手段にて、最適化処理を行った
際のユーザ用のデバッグ情報と、最適化処理を行った際
のソースレベルデバッグ情報とをアセンブラソースに挿
入する。次に、最適化処理を施した新たなアセンブラソ
ース5が作成され、ディスプレイ装置等の表示部に出力
される。このときには、ユーザ用デバッグ情報や最適化
処理挿入手段にて最適化処理を行った内容もアセンブラ
ソース5と同時に出力される。また、ソースレベルデバ
ッグ情報解析部9にソースレベルデバッグ情報が挿入さ
れたアセンブラソース5を入力させることで、ソースレ
ベルデバッグを行うことができる。Next, the computer system that receives the instruction copies the source program and the instruction group of the processing according to the present embodiment (hereinafter, simply referred to as an instruction group) to the main storage unit or the like in the CPU. The syntax analysis unit in the copied instruction group is executed to analyze the syntax of the copied source program. Next, the optimization processing means of the assembler source generation unit in the instruction group performs deletion of unnecessary instructions, addition of optimum instructions, optimization of instruction order, etc. based on the analysis.
Next, the debug information insertion means inserts the debug information for the user when the optimization process is performed and the source level debug information when the optimization process is performed into the assembler source. Next, a new optimized assembler source 5 is created and output to a display unit such as a display device. At this time, the debug information for the user and the contents of the optimization processing performed by the optimization processing inserting means are also output at the same time as the assembler source 5. Further, source level debugging can be performed by inputting the assembler source 5 into which the source level debugging information is inserted into the source level debugging information analysis unit 9.
【0026】以下、本発明に係るデバッグ情報出力方式
の実施例の具体例を図面に基づいて説明する。第1乃至
第3実施例については特に、図1中のソースレベルデバ
ッグ情報を用いてソースレベルデバッグ情報解析部9に
よりソースレベルのデバッグを行う際の実施例について
説明する。従って以下の説明では、特にソースレベルデ
バッグ情報出力方式と記すことにする。図2(a),
(b)は、本発明の第1実施例に係るソースレベルデバ
ッグ情報出力方式を示す図であり、同図(a)は本方式
の流れ図、同図(b)は本方式のソースレベルデバッグ
のイメージ図である。A specific example of an embodiment of the debug information output system according to the present invention will be described below with reference to the drawings. In particular, the first to third embodiments will be described when the source level debug information analysis unit 9 performs source level debugging using the source level debug information in FIG. Therefore, in the following description, the source level debug information output method will be particularly referred to. 2 (a),
(B) is a diagram showing a source level debug information output system according to the first embodiment of the present invention, (a) is a flow chart of this system, and (b) is a source level debug information system of this system. It is an image figure.
【0027】本実施例の方式は、最適化により行が削除
された場合を例にとって説明するものであり、同図
(a)中21はソースプログラム、22は最適化された
イメージ、23は最適化された出力テキストファイル
(オブジェクトファイルの基になるもの)である。ソー
スプログラム21中の部分24は不要な命令なので最適
化時に削除される。これによって、行(3,4行目)が
削除されてしまうので、ソースプログラムとの対応をと
るために、ブロック単位のブロック情報25,25’を
出力する。その際、ブロック情報25はソースプログラ
ムの3〜5行目の複数行に対応して出力される(blo
ck 3−5,0)。また、ソースプログラムの6行目
のように最適化されない行に関してのブロック情報は、
ブロック情報25’に示すように1行につき1情報が出
力される(block 6−6,0)。The method of this embodiment is explained by taking as an example the case where a line is deleted by optimization. In FIG. 10A, 21 is a source program, 22 is an optimized image, and 23 is an optimum. It is a converted output text file (which is the basis of the object file). Since the part 24 in the source program 21 is an unnecessary instruction, it is deleted during optimization. As a result, the line (third and fourth lines) is deleted, so that block information 25, 25 'in block units is output in order to correspond to the source program. At this time, the block information 25 is output corresponding to the third to fifth lines of the source program (blo
ck 3-5, 0). In addition, the block information about the line which is not optimized like the 6th line of the source program,
As shown in the block information 25 ', one information is output per line (block 6-6, 0).
【0028】図2(b)中26,26’は、最適化され
た出力テキストファイル23から生成されたオブジェク
トファイルを使用してソースレベルデバッグ(ステップ
実行)を行ったイメージを示している。図中の反転部分
27,27’は、現在実行中の行を示している。Reference numerals 26 and 26 'in FIG. 2 (b) show images obtained by performing source level debugging (step execution) using the object file generated from the optimized output text file 23. Inverted portions 27 and 27 'in the figure indicate the line currently being executed.
【0029】本実施例は、最適化によってソースレベル
デバッグ21の3,4行目の部分24が削除されている
ため、ブロック情報25よりステップで3行目〜5行目
の複数行を一度反転させ、実行する。この様にすること
により、最適化によって行が削除されても、ソースレベ
ルデバッグが可能になる。In this embodiment, since the portions 24 of the third and fourth lines of the source level debug 21 are deleted by the optimization, a plurality of lines of the third line to the fifth line are once inverted from the block information 25 in steps. Let it run This allows source level debugging even if the line is deleted by optimization.
【0030】図3(a),(b),(c)は、本発明の
第2実施例に係るソースレベルデバッグ情報出力方式を
示す図であり、同図(a)は本方式の流れ図、同図
(b)は本方式のスタックの内容図、及び同図(c)は
スタックの移動に関する説明図である。FIGS. 3A, 3B and 3C are diagrams showing a source level debug information output system according to the second embodiment of the present invention. FIG. 3A is a flow chart of this system. FIG. 7B is a diagram showing the contents of the stack of this system, and FIG. 8C is an explanatory diagram relating to the movement of the stack.
【0031】本実施例の方式は、最適化を行うためにス
タック(メモリ)を使用した場合を例にとって説明する
ものであり、同図(a)中の31はソースプログラム、
32はスタックを使用して最適化された出力テキストフ
ァイルである。また、ソースプログラム31の実行時の
スタックの内容が同図(b)の33に示されている。The method of this embodiment will be described by taking a case where a stack (memory) is used for optimization as an example. Reference numeral 31 in FIG. 3A is a source program,
32 is an output text file optimized using the stack. The contents of the stack when the source program 31 is executed are shown at 33 in FIG.
【0032】ソースプログラム31中の部分34はロー
カル変数であり、その値はスタックに記憶され(図3
(b)参照)、その記憶に伴うスタックの移動に対応す
る命令が、出力テキストファイル32中の部分35(D
EC 0x02,XSP)である。そして、スタックの
移動に関するデバック情報が、出力テキストファイル3
2における部分36(block …,−2)中の部分
37(−2)である。この部分37は、関数の先頭と部
分36の実行時のスタックの位置との差を示している。
つまり、部分37は、部分36を実行した時点でのスタ
ック位置(X’)が関数の先頭のスタック位置(X)か
ら−2バイトのところにあるということを示している
(図3(c)の38参照)。The part 34 in the source program 31 is a local variable, and its value is stored in the stack (see FIG. 3).
(See (b)), the instruction corresponding to the movement of the stack accompanying the storage is the portion 35 (D
EC 0x02, XSP). Then, debug information related to stack movement is output to the output text file 3
2 is a portion 37 (-2) in the portion 36 (block ..., -2) in 2. This part 37 shows the difference between the start of the function and the stack position at the time of execution of the part 36.
That is, the part 37 indicates that the stack position (X ′) at the time when the part 36 is executed is −2 bytes from the stack position (X) at the beginning of the function (FIG. 3 (c)). 38).
【0033】上述したように、スタックにはローカル変
数の値が記憶されている(図3(b)参照)。各ローカ
ル変数に付属するデバック情報は、自分のスタック内の
位置を示す情報として、自分の所属する関数の先頭のス
タック位置からの差を持っている。つまり、関数の先頭
のスタック位置が分かれば、スタックの内容を知ること
ができるのである。さらに、ソースレベルデバッガはス
タックレジスタを参照することにより、スタックの現在
位置を知ることができる(XSP)。As described above, the values of local variables are stored in the stack (see FIG. 3 (b)). The debug information attached to each local variable has a difference from the stack position at the head of the function to which the user belongs, as information indicating the position in the own stack. In other words, if the stack position at the beginning of the function is known, the contents of the stack can be known. Further, the source level debugger can know the current position of the stack by referring to the stack register (XSP).
【0034】よって、スタックの現在位置(XSP)と
その時点での関数の先頭からの差とにより、関数の先頭
のスタック位置(X)を知ることができる(X=XSP
−(−2):図3(c)の38’参照)。Therefore, the stack position (X) at the beginning of the function can be known from the current position of the stack (XSP) and the difference from the beginning of the function at that time (X = XSP).
-(-2): See 38 'in Fig. 3 (c)).
【0035】以上より、関数の先頭のスタック位置が求
められたので、その値と各変数のデバッグ情報内のオフ
セット値とにより、スタックの内容(ローカル変数の置
かれている場所)を知ることができ、スタックを使用し
て最適化されたオブジェクトファイルに対してもソース
レベルデバッグが可能となる。From the above, since the stack position at the head of the function is obtained, it is possible to know the contents of the stack (location of the local variable) from the value and the offset value in the debug information of each variable. Yes, source level debugging is possible even for object files optimized using the stack.
【0036】図4は、本発明の第3実施例に係るソース
レベルデバッグ情報出力方式を示す図である。FIG. 4 is a diagram showing a source level debug information output system according to the third embodiment of the present invention.
【0037】本実施例では、上記第2実施例の応用例と
して、関数の途中でスタックの内容が変化した場合につ
いて説明するものである。In this embodiment, as an application example of the second embodiment, a case where the contents of the stack change in the middle of a function will be described.
【0038】同図(a)中の41はソースプログラム、
42はスタックを使用して最適化された出力テキストフ
ァイルである。ソースプログラム41中の部分43(f
uncl(a);)と部分43’(funcl
(b);)は引き数を伴う関数呼出しを示すものなの
で、スタックが変化する。41 in the figure (a) is a source program,
42 is an output text file optimized using the stack. Part 43 (f in source program 41
uncl (a);) and part 43 '(funcl
(B);) indicates a function call with an argument, so the stack changes.
【0039】前記部分43,43’に対応する出力テキ
ストファイル42の部分は、部分44,44’である。
さらに、出力テキストファイル42中の部分45,4
5’がスタックの変化に関する情報である。ここで、本
実施例では、部分45は(block …,−4)、部
分45’は(block …,−6)となっている。関
数の途中でスタックが変化した場合は、最小ブロック単
位でスタックの関数先頭からの差を出力しておく(部分
46(−4),部分46’(−6))。The parts of the output text file 42 corresponding to the parts 43, 43 'are parts 44, 44'.
Furthermore, parts 45 and 4 in the output text file 42
5'is information on the change of the stack. Here, in the present embodiment, the portion 45 is (block ..., -4) and the portion 45 'is (block ..., -6). When the stack changes in the middle of the function, the difference from the function head of the stack is output in the minimum block unit (part 46 (-4), part 46 '(-6)).
【0040】このようにすることによって、1行ずつ実
行するステップ実行ではなく、ある地点まで一気に進ん
で止めるGo&Breakを行っても、いつでも第2実
施例と同様の方法でスタックの内容を知ることができ、
スタックを使用して最適化されたオブジェクトファイル
に対しても、ソースレベルデバッグを行うことができ
る。By doing so, the contents of the stack can always be known in the same manner as in the second embodiment, even if Go & Break is carried out at a certain point and stopped at once, instead of stepwise execution which is executed line by line. You can
You can also do source-level debugging on object files that are optimized using the stack.
【0041】次に、以下に説明する第4乃至第6実施例
については特に、図1中のユーザ用デバッグ情報を用い
てデバッグを行う際の実施例について説明する。従って
以下の説明では、特にユーザ用デバッグ情報出力方式と
記すことにする。Next, with respect to the fourth to sixth embodiments described below, an embodiment in which debugging is performed using the user debug information shown in FIG. 1 will be described. Therefore, in the following description, the user debug information output method will be particularly referred to.
【0042】図5は本実施例に係るユーザ用デバッグ情
報出力方式の第4の実施例を示しており、本実施例の方
式はスタック移動情報を出力した場合を例にとって説明
する。同図中51はソースプログラム、52は最適化し
た出力テキストファイル、55はプログラム内で使用さ
れるスタックの使用状況をイメージしたものである。5
6に示した斜線領域はこのプログラムが呼び出される前
に既に使用されている領域を表している。この領域にプ
ログラムに渡される引数a,bが格納されている。これ
らの引数を参照するには、参照する時点でのスタックポ
インタに対する差分を加算する(図中57)。54はプ
ログラム先頭におけるスタックアドレスを基準としたと
きのスタックの移動量を示している。この情報を利用す
ると、プログラム内部でスタック操作が行われても以下
の式を利用することにより、目的の変数のアドレスは常
に一定のアドレスを取得出来る。FIG. 5 shows a fourth embodiment of the user debug information output method according to the present embodiment. The method of the present embodiment will be described by taking the case where stack movement information is output as an example. In the figure, 51 is a source program, 52 is an optimized output text file, and 55 is an image of the usage status of a stack used in the program. 5
The shaded area shown in 6 represents the area already used before this program is called. Arguments a and b passed to the program are stored in this area. To refer to these arguments, the difference with respect to the stack pointer at the time of reference is added (57 in the figure). Reference numeral 54 indicates the amount of movement of the stack with reference to the stack address at the beginning of the program. By using this information, the address of the target variable can always get a constant address by using the following formula even if stack operation is performed inside the program.
【0043】[0043]
【数1】(目的の変数のアドレス)=(出力テキストファ
イル上のアドレス)+(スタック移動量情報) 以下、具体的に説明する。55は出力テキストファイル
の使用するスタックのイメージ、57に示したXSP+
0xEは変数aのアドレスを示しており、この時点での
スタックポインタの移動量は−0x0008バイトであ
る(54)。変数aのアドレスは上記式に当てはめる
と、+0x0006の差分の値が得られる。[Equation 1] (Address of target variable) = (Address on output text file) + (Stack movement amount information) A specific description will be given below. 55 is an image of the stack used by the output text file, and XSP + shown in 57
0xE indicates the address of the variable a, and the movement amount of the stack pointer at this point is −0x0008 bytes (54). If the address of the variable a is applied to the above equation, a difference value of + 0x0006 is obtained.
【0044】[0044]
【数2】(変数aのアドレス)=(XSP+0xE)+
(−0x00008)=(XSP+0x0006) この計算により得られた値は常に同じ値を示す。図中5
3はスタックのサイズを表している。この事により、ソ
ースプログラムを実現するために必要なスタックのサイ
ズを取得することで、システム全体で必要なメモリサイ
ズの情報を容易に入手できる。[Formula 2] (address of variable a) = (XSP + 0xE) +
(−0x00008) = (XSP + 0x0006) The value obtained by this calculation always shows the same value. 5 in the figure
3 represents the size of the stack. In this way, by acquiring the size of the stack required to realize the source program, it is possible to easily obtain information on the memory size required for the entire system.
【0045】図6は本実施例に係るユーザ用デバッグ情
報出力方式の第5の実施例を示しており、本実施例の方
式は変数の割当情報を出力した場合を例にとって説明す
る。同図中61は51で示したソースプログラムに対す
る変数割当情報を追加したときの最適化を行っていない
出力テキストファイル、62は最適化を行った出力テキ
ストファイルである。62に示した変数の割当情報を得
ることで、最適化の結果削除/生成される変数が明示的
になり、出力テキストファイル中に出現するメモリやレ
ジスタに対するアクセスの意味を把握することが容易に
なる。例えば、61の10行目は変数cに引数aの値を
代入している。FIG. 6 shows a fifth embodiment of the user debug information output system according to this embodiment. The system of this embodiment will be described by taking the case where variable allocation information is output as an example. In the figure, 61 is an output text file which is not optimized when the variable allocation information for the source program shown by 51 is added, and 62 is an optimized output text file. By obtaining the variable allocation information shown in 62, the variables deleted / generated as a result of optimization become explicit, and it is easy to understand the meaning of access to the memory or register appearing in the output text file. Become. For example, the 10th line of 61 substitutes the value of the argument a for the variable c.
【0046】図7は本実施例に係るユーザ用デバッグ情
報出力方式の第6の実施例を示しており、本実施例の方
式は中間コードを出力した場合を例にとって説明する。
同図中71はソースプログラムを最適化処理した出力テ
キストファイル、72は変数割当情報を表している。7
3は変数割当情報を出力テキストファイル中のレジスタ
/メモリと置換したものをコメントとして出力したもの
である。ここで、Rvalはプログラムの戻り値であ
る。ユーザはこの情報を利用することで、出力テキスト
ファイルの内容を把握する際、レジスタ/メモリを考慮
する必要が無くなり、コメントを見るだけで可能とな
る。この結果、出力テキストファイルの内容把握に要す
る時間を減少できる。FIG. 7 shows a sixth embodiment of the user debug information output system according to the present embodiment, and the system of this embodiment will be described by taking the case where an intermediate code is output as an example.
In the figure, 71 is an output text file obtained by optimizing the source program, and 72 is variable allocation information. 7
Reference numeral 3 denotes a comment obtained by replacing the variable allocation information with the register / memory in the output text file. Here, Rval is the return value of the program. By utilizing this information, the user does not need to consider the register / memory when grasping the contents of the output text file, and can do so only by looking at the comment. As a result, the time required to understand the contents of the output text file can be reduced.
【0047】[0047]
【発明の効果】以上詳細に説明したように第1の発明に
よれば、ソースプログラムを最適化する最適化処理手段
と、前記ソースプログラムの最適化後に、ブロック単位
でソースプログラムとの対応をとるブロック情報をソー
スレベルデバッグ情報として出力するデバッグ情報挿入
手段とを備えたので、最適化されたオブジェクトファイ
ルに対してソースレベルデバッグが可能となる。従っ
て、デバッグしたオブジェクトファイルをそのまま応用
製品上で使用することができ、オブジェクトファイルの
信頼性が大幅に向上する。As described above in detail, according to the first aspect of the invention, the optimization processing means for optimizing the source program and the optimization of the source program correspond to the source program in block units. Since the debug information insertion means for outputting the block information as the source level debug information is provided, the source level debugging can be performed on the optimized object file. Therefore, the debugged object file can be used as it is on the application product, and the reliability of the object file is significantly improved.
【0048】第2の発明によれば、ソースプログラムを
最適化するためのスタックポインタと、前記ソースプロ
グラムの最適化後に、ブロック単位でソースプログラム
との対応をとるブロック情報、及び該ブロック毎の前記
スタックポインタの変化量をソースレベルデバッグ情報
として出力するデバッグ情報挿入手段とを備えたので、
スタックポインタの内容を知ることができ、スタックポ
インタを使用して最適化されたオブジェクトファイルに
対してもソースレベルデバッグが可能となる。従って、
デバッグしたオブジェクトファイルをそのまま応用製品
上で使用することができ、オブジェクトファイルの信頼
性が一層に向上する。According to the second invention, a stack pointer for optimizing the source program, block information for associating the source program in block units after the optimization of the source program, and the block information for each block. Since it has a debug information insertion means for outputting the amount of change of the stack pointer as source level debug information,
The contents of the stack pointer can be known, and source level debugging can be performed on the object file optimized using the stack pointer. Therefore,
The debugged object file can be used as it is on the application product, further improving the reliability of the object file.
【0049】また、第3の発明によれば、ユーザはユー
ザ用デバッグ情報を利用することで、出力テキストファ
イルの内容を把握する際、レジスタ/メモリを考慮する
必要が無くなり、コメントを見るだけで可能となる。こ
の結果、出力テキストファイルの内容把握に要する時間
を減少できる。According to the third aspect of the invention, by utilizing the user debug information, the user does not need to consider the register / memory when grasping the contents of the output text file, and only sees the comment. It will be possible. As a result, the time required to understand the contents of the output text file can be reduced.
【図1】本発明に係るデバッグ情報出力方式を示すブロ
ック図である。FIG. 1 is a block diagram showing a debug information output system according to the present invention.
【図2】本発明の第1実施例に係るソースレベルデバッ
グ情報出力方式を示す図である。FIG. 2 is a diagram showing a source level debug information output system according to the first embodiment of the present invention.
【図3】本発明の第2実施例に係るソースレベルデバッ
グ情報出力方式を示す図である。FIG. 3 is a diagram showing a source level debug information output system according to a second embodiment of the present invention.
【図4】本発明の第3実施例に係るユーザ用デバッグ情
報出力方式を示す図である。FIG. 4 is a diagram showing a user debug information output system according to a third embodiment of the present invention.
【図5】本発明の第4実施例に係るユーザ用デバッグ情
報出力方式を示す図である。FIG. 5 is a diagram showing a user debug information output system according to a fourth embodiment of the present invention.
【図6】本発明の第5実施例に係るユーザ用デバッグ情
報出力方式を示す図である。FIG. 6 is a diagram showing a user debug information output system according to a fifth embodiment of the present invention.
【図7】本発明の第6実施例に係るユーザ用デバッグ情
報出力方式を示す図である。FIG. 7 is a diagram showing a user debug information output system according to a sixth embodiment of the present invention.
【図8】従来のデバッグ情報出力方式を示す図である。FIG. 8 is a diagram showing a conventional debug information output method.
【図9】従来のデバッグ情報出力方式を示す図である。FIG. 9 is a diagram showing a conventional debug information output method.
1 ソースプログラム 3 コンパイラ部 プログラム言語処理の命令群 5 アセンブラソース 7 表示部 9 ソースレベルデバッグ情報解析部 21,31,41 ソースプログラム 22 最適化されたイメージ 23,32,42 最適化された出力テキストファイル 24 ソースプログラムの不要な命令 25 ブロック情報 26,26’ ソースレベルデバッグを行ったイメージ 27,27’ 現在実行中の行 33 スタックの内容 34 ローカル変数 35 スタックの移動に対応する命令 36,37 スタックの移動に関するデバック情報 38,38’ スタック 51 ソースプログラム 52 出力テキストファイル 53 ソースプログラムを実現するために必要なスタッ
クのサイズ 54 スタック移動情報 55 スタック利用イメージ 56 ソースプログラムを実行する前に既に使用済みの
スタック領域 57 スタックの参照 61 最適化を行わなかったときの出力テキストファイ
ル 62 最適化を行わなかったときの変数割当情報 63 最適化を行ったときの出力テキストファイル 64 最適化を行ったときの変数割当情報 71 ソースプログラム 72 最適化された出力テキストファイル 73 中間コード 111 ソースプログラム 112 出力テキストファイル 113 最適化された出力テキストファイル 114 不要な命令を示す部分 115,115’ デバッグ情報 121 ソースプログラム 122 ソースプログラムの最適化されたイメージ 123 最適化を行った出力テキストファイル 124,124’ 1回目の引数参照部と説明 125,125’ 2回目の引数参照部と説明1 Source program 3 Compiler section Program language processing instruction group 5 Assembler source 7 Display section 9 Source level debug information analysis section 21, 31, 41 Source program 22 Optimized image 23, 32, 42 Optimized output text file 24 Unnecessary instruction of source program 25 Block information 26,26 'Source level debug image 27,27' Line currently being executed 33 Contents of stack 34 Local variable 35 Instruction corresponding to movement of stack 36,37 Stack Debug information about movement 38, 38 'Stack 51 Source program 52 Output text file 53 Size of stack required to realize source program 54 Stack movement information 55 Stack usage image 56 Source program Stack area that has already been used before execution 57 Stack reference 61 Output text file when optimization is not done 62 Variable allocation information when optimization is not done 63 Output text file when optimization is done 64 Variable allocation information at the time of optimization 71 Source program 72 Optimized output text file 73 Intermediate code 111 Source program 112 Output text file 113 Optimized output text file 114 Unnecessary instruction parts 115, 115 ' Debugging information 121 Source program 122 Optimized image of source program 123 Optimized output text file 124,124 'First argument reference part and description 125,125' Second argument reference part and description
Claims (3)
ルデバッグ情報を出力し、ソースレベルデバッグの実施
対象であるオブジェクトファイルの基になる出力テキス
トファイルを生成するソースレベルのデバッグ情報出力
方式において、 前記ソースプログラムを最適化する最
適化処理手段と、 前記ソースプログラムの最適化後に、ブロック単位でソ
ースプログラムとの対応をとるブロック情報を前記ソー
スレベルデバッグ情報として挿入するデバッグ情報挿入
手段とを備えたことを特徴とするデバッグ情報出力方
式。1. A source-level debug information output method for outputting source-level debug information corresponding to a source program, and generating an output text file which is a base of an object file for which source-level debugging is performed, wherein the source An optimization processing unit for optimizing a program; and a debug information inserting unit for inserting block information corresponding to the source program in block units as the source level debug information after the optimization of the source program. Characteristic debug information output method.
ルデバッグ情報を出力し、ソースレベルデバッグの実施
対象であるオブジェクトファイルの基になる出力テキス
トファイルを生成するソースレベルのデバッグ情報出力
方式において、 前記オブジェクトファイルを生成する
ためのスタックポインタと、 前記ソースプログラムの最適化後に、ブロック単位でソ
ースプログラムとの対応をとるブロック情報、及び該ブ
ロック毎の前記スタックポインタの変化量を前記ソース
レベルデバッグ情報として挿入するデバッグ情報挿入手
段とを備えたことを特徴とするデバッグ情報出力方式。2. A source-level debug information output method for outputting source-level debug information corresponding to a source program and generating an output text file which is a base of an object file for which source-level debugging is performed, wherein the object A stack pointer for generating a file, block information that makes a correspondence with the source program in block units after optimization of the source program, and a change amount of the stack pointer for each block is inserted as the source level debug information. And a debug information inserting means for performing the debug information output method.
を行う構文解析部と、前記解析に基づいて出力テキスト
ファイルを生成するアセンブラソース生成部と、前記生
成された出力テキストファイルを表示する表示部とを備
えたデバッグ情報出力方式であって、 前記アセンブラソース生成部は、 前記構文解析部にて行われる解析に基づいて前記ソース
プログラムの最適化のための処理を行う最適化処理手段
と、 少なくとも前記出力テキストファイルのテキスト行単位
でスタックの移動量を示す情報、及び、前記出力テキス
トファイルにて使用される変数のレジスタ・メモリ割り
当て情報を、前記出力テキストファイルにユーザ用デバ
ッグ情報として挿入するデバッグ情報挿入手段とを備え
たことを特徴とするデバッグ情報出力方式。3. A syntax analysis unit that analyzes the syntax of a source program, an assembler source generation unit that generates an output text file based on the analysis, and a display unit that displays the generated output text file. A debug information output method, wherein the assembler source generation unit performs optimization processing means for optimizing the source program based on the analysis performed by the syntax analysis unit; and at least the output Inserting debug information that inserts information indicating the amount of stack movement in text line units of a text file and register / memory allocation information of variables used in the output text file into the output text file as user debug information. And a debug information output method comprising:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7137786A JPH08255097A (en) | 1995-01-20 | 1995-06-05 | Debugging information output system |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP699395 | 1995-01-20 | ||
JP7-6993 | 1995-01-20 | ||
JP7137786A JPH08255097A (en) | 1995-01-20 | 1995-06-05 | Debugging information output system |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH08255097A true JPH08255097A (en) | 1996-10-01 |
Family
ID=26341217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP7137786A Pending JPH08255097A (en) | 1995-01-20 | 1995-06-05 | Debugging information output system |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH08255097A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6014516A (en) * | 1996-12-27 | 2000-01-11 | Nec Corporation | Language processing system which generates debugging source file corresponding to optimization image and method therefor |
JP2007122207A (en) * | 2005-10-26 | 2007-05-17 | Fujitsu Ltd | Program analysis program, program analyzing device and program analyzing method |
-
1995
- 1995-06-05 JP JP7137786A patent/JPH08255097A/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6014516A (en) * | 1996-12-27 | 2000-01-11 | Nec Corporation | Language processing system which generates debugging source file corresponding to optimization image and method therefor |
JP2007122207A (en) * | 2005-10-26 | 2007-05-17 | Fujitsu Ltd | Program analysis program, program analyzing device and program analyzing method |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004164554A (en) | Device and method for executing and monitoring program | |
JP2003050715A (en) | Compiler and debugging device | |
US7240334B1 (en) | Methods, systems, and computer program products for deferred computer program tracing | |
JP2013008277A (en) | Coverage measuring apparatus and method and program | |
JPS60107142A (en) | Program translating device | |
KR0125605B1 (en) | Method and device for verifying operation of machine language program | |
JPH08255097A (en) | Debugging information output system | |
JP2010287101A (en) | Software debugging device and method | |
JP3196675B2 (en) | Language processing method | |
JP5021584B2 (en) | Microcomputer simulator, simulation method thereof, program, and computer-readable medium | |
JP2004287869A (en) | Program execution monitoring device and method | |
JP2004070561A (en) | Debugging device | |
JPH11110256A (en) | Device and method for debugging program, and computer readable recording medium recorded with the method for the same | |
JPH0863369A (en) | Optimization information output system | |
CN116775127B (en) | Static symbol execution pile inserting method based on RetroWrite frames | |
JP2672968B2 (en) | Source list output processing method for debugging | |
JP2812302B2 (en) | Program development equipment | |
JP5091520B2 (en) | Hybrid model simulation device | |
JPH0255811B2 (en) | ||
JP2008071065A (en) | Compile device, method, program and storage medium for performing in-line expansion | |
JP2005301415A (en) | Compile system, simulator, emulator, and program development supporting system | |
JPH11154093A (en) | Program compiler and storage medium recording compiler program | |
JP2000122895A (en) | Method and device for analyzing stack size | |
JP2004078375A (en) | Information processing apparatus, business form processing method, computer-readable storage medium, and program | |
JP3165105B2 (en) | Program tracer, compiler and linker |