JPH0724030B2 - Debug device - Google Patents
Debug deviceInfo
- Publication number
- JPH0724030B2 JPH0724030B2 JP63001905A JP190588A JPH0724030B2 JP H0724030 B2 JPH0724030 B2 JP H0724030B2 JP 63001905 A JP63001905 A JP 63001905A JP 190588 A JP190588 A JP 190588A JP H0724030 B2 JPH0724030 B2 JP H0724030B2
- Authority
- JP
- Japan
- Prior art keywords
- subroutine
- register
- address
- frame
- 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
Links
Landscapes
- Debugging And Monitoring (AREA)
Description
【発明の詳細な説明】 (産業上の利用分野) 本発明はデバック装置に関し、特にプログラムのサブル
ーチンの実引数、又は局所変数へのアクセスを高速に行
うことを特徴とするデバック装置である。TECHNICAL FIELD The present invention relates to a debug device, and more particularly to a debug device which is characterized in that an actual argument of a subroutine of a program or a local variable is accessed at high speed.
(従来の技術) 従来、実機に接続してデバックを行うためのデバック装
置では、アクセスしようとする実機中のプログラムメモ
リのアドレスを指定して、該アドレスへのデータの書込
み、又は該アドレスからのデータの読出しを行ってい
た。(Prior Art) Conventionally, in a debug device for performing debugging by connecting to an actual machine, an address of a program memory in the actual machine to be accessed is specified, and data is written to the address or the address from the address is written. I was reading data.
(発明が解決しようとする問題点) 上述した従来の方式、たとえば高級言語で書かれたプロ
グラムでは、プログラム実行時に、サブルーチンが呼ば
れた時に、実行時スタックに実引数、局所変数、呼び側
のサブルーチンのフレームを指すフレームポインタの
値、及び戻り番地からなるスタックフレームを形成され
る。このとき、指定されたサブルーチンの実引数、局所
変数に対応するメモリアドレスにアクセスする時、以下
のような問題が発生する。(Problems to be Solved by the Invention) In the conventional method described above, for example, in a program written in a high-level language, when a subroutine is called at the time of program execution, an actual argument, a local variable, A stack frame composed of the value of the frame pointer pointing to the frame of the subroutine and the return address is formed. At this time, the following problems occur when accessing the memory address corresponding to the actual argument and local variable of the specified subroutine.
まず、実行時スタック中の最近呼ばれたサブルーチンの
スタックフレームから呼び側のサブルーチンのスタック
フレームへ、スタックフレーム中のフレームポインタを
たどりながら、スタックフレームの内容を調べる。First, the contents of the stack frame are examined by tracing the frame pointer in the stack frame from the stack frame of the most recently called subroutine in the runtime stack to the stack frame of the calling subroutine.
もし、スタックフレーム中の戻り番地が指定されたサブ
ルーチンの命令領域に含まれるならば、該スタックフレ
ームに対応するサブルーチンを呼んだサブルーチンが、
指定されたサブルーチンであることがわかる。したがっ
て、該サブルーチンのスタックフレーム中に保持されて
いる実引数、局所変数にアクセスすることになる。If the return address in the stack frame is included in the instruction area of the specified subroutine, the subroutine that called the subroutine corresponding to the stack frame is
It turns out that it is a designated subroutine. Therefore, the actual argument and local variable held in the stack frame of the subroutine are accessed.
この時、プログラムのソースファイル、シンボルテーブ
ルを保持するホストマシンとデバック装置とを回線によ
り結合して、ホストマシンから、指定された関数の実引
数、局所変数にアクセスしようとすると、該関数の命令
領域、アクセスしようとする実引数、局所変数のフレー
ム内の相対位置に関する情報が、ホストマシンのみにし
かないため、上述のように、実行スタックを辿っていく
場合に、ホストマシンとデバック装置間の通信回数が増
加し、サブルーチンの実引数、又は局所変数へのアクセ
スが高速には行われなくなり、デバック作業の能率低下
をまねいていた。At this time, if the host machine that holds the source file of the program and the symbol table and the debug device are connected by a line, and the host machine tries to access the actual arguments and local variables of the specified function, the instructions of the function Since the information about the area, the actual argument to be accessed, and the relative position in the frame of the local variable is only in the host machine, as described above, when the execution stack is traced, communication between the host machine and the debug device is performed. The number of times increases, the actual argument of the subroutine or the local variable is not accessed at high speed, and the efficiency of debugging work is reduced.
本発明は、このような従来の欠点を解決したもので、そ
の目的は、プログラムのサブルーチンの実引数、又は局
所変数へのアクセスを高速にしてデバック作業の能率を
高めることになる。The present invention has solved such a conventional drawback, and an object thereof is to speed up access to an actual argument of a subroutine of a program or a local variable to improve efficiency of debugging work.
(問題を解決するための手段) 本発明は、デバック装置において、該実機で実行中のプ
ログラムのサブルーチン開始アドレスを保有する第1の
レジスタと該サブルーチンの終了アドレスを保持する第
2のレジスタと実機中で実行されるサブルーチンの引数
もしくは局所変数の格納されるフレームを指すフレーム
ポインタからのオフセットを保持する第3のレジスタと
該フレームから読み出したデータ、もしくは該フレーム
へ書込むデータを保持する第4のレジスタと実機中のプ
ログラムメモリにある実行スタックより、第1のレジス
タに保持されたサブルーチンの先頭アドレス及び第2の
レジスタに保持された該サブルーチンの終了アドレスで
挟まれるメモリアドレスから呼ばれたサブルーチンのフ
レームを見出し、該フレームより第3のレジスタに格納
されたオフセット値で指定されるサブルーチンの実引数
もしくは局所変数の内容を読出し第4のレジスタの内容
に設定する手段、及び該アドレスに第4のレジスタの内
容を書込む手段を有する。(Means for Solving the Problem) According to the present invention, in a debug device, a first register holding a subroutine start address of a program being executed on the real machine, a second register holding an end address of the subroutine, and the real machine. A third register that holds an offset from a frame pointer that points to a frame in which an argument of a subroutine to be executed or a local variable is stored, and a fourth register that holds data read from the frame or data written to the frame. Subroutine called from the register's register and the execution stack in the program memory in the actual machine, which is sandwiched between the start address of the subroutine held in the first register and the end address of the subroutine held in the second register. Frame is found, and the third frame from that frame is found. It has means for reading the contents of the actual argument or local variable of the subroutine designated by the offset value stored in the register and setting it to the contents of the fourth register, and means for writing the contents of the fourth register to the address.
(実施例) 次に本発明の実施例について図面を参照して説明する。(Example) Next, the Example of this invention is described with reference to drawings.
第1図は本発明のデバック装置の一実施例のブロック図
であり、デバック装置1と実機2とで構成されている。FIG. 1 is a block diagram of an embodiment of a debug device of the present invention, which is composed of a debug device 1 and an actual machine 2.
デバック装置1は、プロセッサ10、メモリ14、ディスプ
レイ15、キーボード16、実機のプロセッサ20を制御する
制御回路103、指定されたサブルーチンの開始アドレス
を格納するレジスタ17、指定されたサブルーチンの終了
アドレスを格納するレジスタ18、指定されたサブルーチ
ンにおいてアクセスする局所変数、又は実引数へのフレ
ームポイントからのオフセット値を格納するレジスタ1
9、アクセスされた局所変数、又は実引数へ設定するデ
ータ、又は該局所変数又は実引数から読み出されたデー
タを格納するデータレジスタ101、読み又は書きのアク
セス方法を保持するアクセスレジスタ102を具備する。The debug device 1 stores a processor 10, a memory 14, a display 15, a keyboard 16, a control circuit 103 for controlling the actual processor 20, a register 17 for storing the start address of a designated subroutine, and an end address of the designated subroutine. Register 18, the local variable to be accessed in the specified subroutine, or register 1 that stores the offset value from the frame point to the actual argument
9. A data register 101 for storing the data to be set in the accessed local variable or actual argument, or data read from the local variable or actual argument, and an access register 102 for holding a read or write access method To do.
プロセッサ10、メモリ14、ディスプレイ15、キーボード
16、レジスタ17、レジスタ18、レジスタ19、データレジ
スタ101はデータバス11、アドレスバス12、コントロー
ルバス13によって接続されている。実機2はプロセッサ
20、メモリ24を具備する。アドレスバス22、プロセッサ
20とメモリ24はデータバス21、コントロールバス23によ
って接続されている。デバック装置1のメモリ14には、
ディスプレイ15とキーボード16を制御して、指定された
サブルーチンの命令開始アドレスをレジスタ17に設定し
該サブルーチンの命令終了アドレスをレジスタ18に設定
し該サブルーチンのアクセスする局所変数、又は実引数
のフレームポインタからのオフセット値をレジスタ19に
設定し、該局所変数又は実引数への読み又は書きのアク
セス方法を命令レジスタ102に設定し、該局所変数、又
は実引数に設定するデータをデータレジスタ101に設定
し、該局所変数、又は実引数から読出されたデータを保
持するデータレジスタ101からデータを読出すプログラ
ムが含まれる。Processor 10, memory 14, display 15, keyboard
16, the register 17, the register 18, the register 19, and the data register 101 are connected by a data bus 11, an address bus 12, and a control bus 13. Real machine 2 is a processor
20 and a memory 24 are provided. Address bus 22, processor
20 and the memory 24 are connected by a data bus 21 and a control bus 23. In the memory 14 of the debug device 1,
By controlling the display 15 and the keyboard 16, the instruction start address of the designated subroutine is set in the register 17, the instruction end address of the subroutine is set in the register 18, and the local variable accessed by the subroutine or the frame pointer of the actual argument The offset value from is set in the register 19, the read or write access method to the local variable or the actual argument is set in the instruction register 102, and the data to be set in the local variable or the actual argument is set in the data register 101. However, a program for reading data from the data register 101 holding the data read from the local variable or the actual argument is included.
次に第1図のデバック装置の動作を、第2図及び第3図
を用いて説明する。Next, the operation of the debug device shown in FIG. 1 will be described with reference to FIGS. 2 and 3.
まず、デバック装置1において、メモリ14に含まれる前
記プログラムを起動させる。該プログラムはキーボード
16よりアクセスするサブルーチンの命令開始アドレス、
命令終了アドレス、アクセスする局所変数又は実引数の
フレームポインタからオフセット値を入力し、それぞれ
レジスタ17、レジスタ18、レジスタ19に設定し、更に、
アクセス方法を命令レジスタ102に設定し、命令レジス
タ102の内容が書き込み命令の場合には、データレジス
タ101に書込みデータを設定する。First, in the debug device 1, the program contained in the memory 14 is activated. The program is a keyboard
Instruction start address of the subroutine accessed from 16,
The offset value is input from the instruction end address, the local variable to be accessed, or the frame pointer of the actual argument, and set in register 17, register 18, and register 19, respectively.
The access method is set in the instruction register 102, and when the content of the instruction register 102 is a write instruction, the write data is set in the data register 101.
次に、実機2の実行中断状態において、第2図に示す処
理をメモリ14に含まれる制御プログラムは行う。即ち、
該制御プログラムは、プロセッサ20のフレームポインタ
レジスタの内容(第3図)をメモリ14にある変数Aに設
定する(第2図201)。Next, in the execution suspended state of the actual machine 2, the control program contained in the memory 14 performs the processing shown in FIG. That is,
The control program sets the content of the frame pointer register of the processor 20 (FIG. 3) to the variable A in the memory 14 (201 of FIG. 2).
次に、変数Aに保持されているサブルーチンのスタック
フレームのアドレスからオフセット値β離れたアドレス
に格納されているサブルーチンの戻りアドレスを求め、
メモリ14中にある変数Bに格納する(第2図202)。Next, the return address of the subroutine stored at the address offset by the offset value β from the address of the stack frame of the subroutine held in the variable A is obtained,
It is stored in the variable B in the memory 14 (202 in FIG. 2).
次に、変数Bの内容、即ち戻り番地が、レジスタ17に含
まれる指定されたサブルーチンの開始アドレスとレジス
タ18に含まれるサブルーチンの終了アドレスの間にある
か否が判定される(第2図203)。もし間にあれば、着
目しているサブルーチンを呼んだサブルーチンが、指定
されたサブルーチンである。Next, it is judged whether or not the content of the variable B, that is, the return address is between the start address of the designated subroutine contained in the register 17 and the end address of the subroutine contained in the register 18 (FIG. 2, 203). ). If there is a gap, the subroutine that called the subroutine of interest is the designated subroutine.
もし、サブルーチンの戻り番地がレジスタ17とレジスタ
18の間になければ、着目しているサブルーチンを呼んだ
サブルーチンは指定されたサブルーチンではない。If the return address of the subroutine is register 17 and register
If it is not between 18, the subroutine that called the subroutine of interest is not the designated subroutine.
ゆえに、サブルーチンのスタックフレームのアドレスか
らオフセット値α離れたアドレスに格納されている該サ
ブルーチンを呼んだサブルーチンのフレームのアドレス
を求め、変数Aに格納する(第2図205)。Therefore, the address of the frame of the subroutine that called the subroutine, which is stored at the address offset by the offset value α from the address of the stack frame of the subroutine, is obtained and stored in the variable A (205 in FIG. 2).
前記のサブルーチンの戻り番地の判定203において、指
定されたサブルーチンが見出された時、変数Aに指定さ
れたサブルーチンのスタックフレームのポインタ値を設
定する(第2図204)。In the determination 203 of the return address of the subroutine, when the designated subroutine is found, the pointer value of the stack frame of the designated subroutine is set to the variable A (204 in FIG. 2).
次に、第2図206において命令レジスタ102の内容を調
べ、書込み指示の場合は、変数Aの内容からレジスタ19
に含まれるオフセット値離れたメモリアドレスに、デー
タレジスタ101の内容を書き込む(第2図207)。Next, referring to FIG. 206 in FIG. 2, the contents of the instruction register 102 are checked.
The contents of the data register 101 are written to the memory addresses separated by the offset value included in (2) in FIG.
又、読出し指示の場合は、当該アドレスの内容をデータ
レジスタ101に設定する。以上でメモリ14に含まれる制
御プログラムの動作は終了する(第2図208)。In the case of a read instruction, the content of the address is set in the data register 101. This completes the operation of the control program contained in the memory 14 (FIG. 2, 208).
(発明の効果) 以上説明したように本発明は、実機において高級言語な
どで書かれたプログラムが実行された時形成される実行
時スタックになるサブルーチンの局所変数又は実引数に
アクセスする場合に、デバック装置内に実機内の実行的
スタックを辿る手段を具備することにより、アドレスの
みによるメモリアクセスしか許さないデバック装置に比
べて、高速にアクセスすることが可能となる。更に、デ
バック装置とホストマシンとを回線で接続してデバック
する場合に、ホストマシンとデバック装置間の通信量を
減少させることができ、従来のデバック装置に比べてデ
バック効果を向上させるという効果がある。(Effect of the Invention) As described above, according to the present invention, when accessing a local variable or an actual argument of a subroutine that becomes a runtime stack formed when a program written in a high-level language or the like is executed in an actual machine, By providing a means for tracing the execution stack in the real machine in the debug device, it becomes possible to access at a higher speed than a debug device which allows only memory access by address only. Furthermore, when debugging is performed by connecting the debug device and the host machine with a line, the communication amount between the host machine and the debug device can be reduced, and the debug effect is improved as compared with the conventional debug device. is there.
第1図は本発明の実施例を示すブロック図、第2図は実
機において実行スタックにあるサブルーチンの局所変数
又は実引数にアクセスする処理の一例を示す流れ図、第
3図は第2図の説明のための実機における実行スタック
の一例である。サブルーチンiがサブルーチンi+1を
呼び出し、サブルーチンi+1は次の関数を呼び出して
いる。現在呼ばれているサブルーチンはnである。サブ
ルーチンnのスタックフレームは、フレームポインタレ
ジスタに格納されている。フレームポインタは、サブル
ーチンnのスタックフレーム内のあるアドレスを指す。
サブルーチンi(0≦i≦n)の戻り番地が、フレーム
ポインタからβ離れたアドレスに格納されており、サブ
ルーチンi−1のスタックフレームの格納領域が、α離
れたアドレスに格納されているとしている。 1……デバック装置、10……データバス 11……アドレスバス、12……コントロールバス 14……メモリ、15……ディスプレイ 16……キーボード、17……レジスタ 18……レジスタ、19……レジスタ 101……データレジスタ 102……アクセスレジスタ 103……制御回路、2……実機、20……プロセッサ 21……データバス、22……アドレスバス 23……コントロールバス、24……メモリFIG. 1 is a block diagram showing an embodiment of the present invention, FIG. 2 is a flow chart showing an example of processing for accessing a local variable or an actual argument of a subroutine on an execution stack in an actual machine, and FIG. 3 is an explanation of FIG. Is an example of an execution stack in a real machine for. Subroutine i calls subroutine i + 1, and subroutine i + 1 calls the next function. The currently called subroutine is n. The stack frame of the subroutine n is stored in the frame pointer register. The frame pointer points to an address within the stack frame of subroutine n.
It is assumed that the return address of the subroutine i (0 ≦ i ≦ n) is stored at an address β away from the frame pointer, and the stack frame storage area of the subroutine i-1 is stored at an address α away. . 1 …… debug device, 10 …… data bus 11 …… address bus, 12 …… control bus 14 …… memory, 15 …… display 16 …… keyboard, 17 …… register 18 …… register, 19 …… register 101 ...... Data register 102 ...... Access register 103 ...... Control circuit, 2 …… Actual machine, 20 …… Processor 21 …… Data bus, 22 ...... Address bus 23 ...... Control bus, 24 ...... Memory
Claims (1)
ムを記録したプログラムメモリとを具備する実機の、シ
ステムバスもしくは該プロセッサの端子からアドレス信
号、データ信号およびコントロール信号を取出してプロ
グラムデバックを行うデバック装置であって、該実機で
実行中のプログラムのサブルーチン開始アドレスを保持
する第1のレジスタと該サブルーチンの終了アドレスを
保持する第2のレジスタと実機中で実行されるサブルー
チンの引数もしくは局所変数の格納されるフレームを指
すフレームポインタからのオフセットを保持する第3の
レジスタと該フレームから読み出したデータ、もしくは
該フレームへ書込むデータを保持する第4のレジスタと
実機中のプログラムメモリにある実行スタックより、第
1のレジスタに保持されたサブルーチンの先頭アドレス
及び第2のレジスタに保持された該サブルーチンの終了
アドレスで挟まれるメモリアドレスから呼ばれたサブル
ーチンのフレームを見出し、該フレームより第3のレジ
スタに格納されたオフセット値で指定されるサブルーチ
ンの実引数もしくは局所変数の内容を読出し第4のレジ
スタの内容に設定する手段、及び該アドレスに第4のレ
ジスタ内容を書込む手段を有し、プログラムのサブルー
チンの実引数、又は局所変数へのアクセスを高速に行う
ことを特徴とするデバック装置。1. A debug device for executing program debugging by extracting an address signal, a data signal and a control signal from a system bus or a terminal of the processor, which is an actual machine having a processor and a program memory in which a control program of the processor is recorded. The first register that holds the subroutine start address of the program being executed on the actual machine, the second register that holds the end address of the subroutine, and the arguments or local variables of the subroutine executed on the actual machine are stored. A third register that holds an offset from a frame pointer that points to a frame and a fourth register that holds the data read from the frame or the data to be written to the frame, and the execution stack in the program memory in the actual machine, Stored in the first register Found the frame of the subroutine called from the memory address sandwiched between the start address of the executed subroutine and the end address of the subroutine held in the second register, and designated from the frame by the offset value stored in the third register Means for reading the actual argument or the content of the local variable of the subroutine to be set to the content of the fourth register and the means for writing the fourth register content to the address, and the actual argument of the subroutine of the program or the local A debug device characterized by high-speed access to variables.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63001905A JPH0724030B2 (en) | 1988-01-08 | 1988-01-08 | Debug device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63001905A JPH0724030B2 (en) | 1988-01-08 | 1988-01-08 | Debug device |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH01177644A JPH01177644A (en) | 1989-07-13 |
JPH0724030B2 true JPH0724030B2 (en) | 1995-03-15 |
Family
ID=11514593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP63001905A Expired - Fee Related JPH0724030B2 (en) | 1988-01-08 | 1988-01-08 | Debug device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0724030B2 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07168743A (en) * | 1993-12-16 | 1995-07-04 | Nec Corp | Information display system in abnormal completion of user program |
JP2008305337A (en) * | 2007-06-11 | 2008-12-18 | Panasonic Corp | Program converter, program conversion method, program, storage medium, debugging device, debugging method and program development system |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59221753A (en) * | 1983-06-01 | 1984-12-13 | Hitachi Ltd | Subroutine tracer |
JPS61128743U (en) * | 1985-01-25 | 1986-08-12 |
-
1988
- 1988-01-08 JP JP63001905A patent/JPH0724030B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH01177644A (en) | 1989-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR960011613A (en) | Data processing device | |
KR900013389A (en) | Data processing system with built-in program supervisor | |
US4314332A (en) | Memory control system | |
JPH0724030B2 (en) | Debug device | |
JP2507791B2 (en) | Data processing device | |
JP2669300B2 (en) | Program trace circuit and program trace method | |
JPS59197946A (en) | Memory device | |
JPH05108404A (en) | Debugger system | |
JPH0447350A (en) | Main storage read/response control | |
JPS6367695B2 (en) | ||
JPH05197596A (en) | Tracer | |
JPH04328644A (en) | Debug back-up device | |
JPH05181702A (en) | Soft debugger | |
JPH04167146A (en) | Address tracing system for information processor | |
JPS63170752A (en) | Trace circuit | |
JPS6286442A (en) | Data processor | |
JPH01130237A (en) | Information processor | |
JPH04167031A (en) | Tracing system | |
JPS63208126A (en) | List processor | |
JPH04242455A (en) | Inter-processor communication trace circuit | |
JPH0795288B2 (en) | Microcomputer | |
JPS6168648A (en) | Method for storing branch trace address | |
JPH07141252A (en) | Data processor | |
JPS62281040A (en) | Page managing system | |
JPS623294A (en) | Bit map mover |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |