JPH0353334A - 言語処理プログラムのデバッグ情報出力処理方式 - Google Patents

言語処理プログラムのデバッグ情報出力処理方式

Info

Publication number
JPH0353334A
JPH0353334A JP1189437A JP18943789A JPH0353334A JP H0353334 A JPH0353334 A JP H0353334A JP 1189437 A JP1189437 A JP 1189437A JP 18943789 A JP18943789 A JP 18943789A JP H0353334 A JPH0353334 A JP H0353334A
Authority
JP
Japan
Prior art keywords
program
information
source
processing
function
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
JP1189437A
Other languages
English (en)
Inventor
Hirohiko Ono
洋彦 小野
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 JP1189437A priority Critical patent/JPH0353334A/ja
Publication of JPH0353334A publication Critical patent/JPH0353334A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

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

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、言語処理プログラムにおけるソースレベルの
デバッグを行う場合の言語処理プログラムのデバッグ情
報出力処理方式に関する.〔従来の技術〕 従来の言語処理プログラムの生成するデバッグのための
情報の出力方法には2等りある.一つは行番号情報のよ
うにソースプログラムと直接結び付いた情報を出力する
方法と、もう一方は例えばスタックが使用可能であるか
否かを調べるルーチンを呼び出す、呼び出し命令のよう
に関数の先頭で機械語命令として、生成する情報の出力
方法である. 前者のソースレベルデバッグのための情報である、行番
号情報のように機械語とは異なる情報は、ソースレベル
デバッグを行うときにデバッガが使用するもので、1行
ごとのステップ実行を行う場合などに使用される。
後者の関数の先頭でスタックが使用可能であるかを調べ
るルーチンを呼出す呼出し命令のように機械語命令とし
て生成する情報は、実行時にエラーが発生する可能性の
ある場合やエラーの発生した場合等に、特殊な処理ルー
チンを呼び出したり、メッセージの出力やエラー処理等
を行う場合に使用する。
ここで従来のソースレベルのデバッグのうちステップ実
行の方式を説明する. ソースレベルの1行は、言語処理プログラムにより複数
の機械語命令に変換される。その場合、各ソース行の先
頭に対応した機械語命令のアドレスと、ソースプログラ
ムファイル内のそのソース行数の対応表とが、デバッグ
情報としてホスト計算機上にファイルとして出力される
. デバッグプログラムは、機械語レベルで1命令ステップ
実行を行い、停止後の被デバッグプログラムの停止アド
レスをターゲットシステムから得る。実行前のアドレス
に対する行番号と停止後のアドレスに対する行番号を比
較し異なっている場合、ソースレベルでの1行ステップ
実行が完了したとして、デバッガプログラムはユーザに
1行ステップ実行の終了を通知する。
実行前のアドレスに対する行番号と停止語のアドレスに
対する行番号が同じ場合は、まだ同一のソース行中を実
行しているとして、再びデバッガプログラムは機械語レ
ベルの1命令のステップ実行を行なう。デバッグプログ
ラムは、行番号が異なるまでこの手順を繰返す。
ソースレベルの1行は、機械語命令の数命令から、多い
場合は十数命令に展開されることがある。そのためソー
スレベルの従来方式のステップ実行では、デバッグのタ
ーゲットシステムに数回から十数回の機械語レベルの1
命令のステップ実行コマンドを送り、その停止アドレス
情報を得る通信を行う必要があった。
従来の機械語レベルのみのデバッガプログラムに比べ、
現在の高級言語を処理できるデバッガプログラムでは、
ソースレベルの処理が増加しており、またインサーキッ
トエミュレー夕との通信量の増加のため、デバッガ使用
者へのコマンドの応答時間が増加しており、コマンドの
応答時間の高速化の要求がある. ここで言語処理プログラムが認識するコンパイル単位を
、C言語を例に説明する.コンパイル単位には、関数定
義と、宣言とがあり、関数定義は複文を含む.この複文
は文のうちの1つで、文には次のものがある。
■ラベルで始まるラベル付き文 ■複数の文をブロック中に持つ複文 ■算術式、論理式等からなる弐文 ■if文、s w i t c h文等の選択文■fo
r文、While文等の条件文 ■goto文等のジャンプ文 言語処理プログラムは関数定義とこれらの文に対してオ
ブジェクトを生成する。
これらの文がソースプログラム1行に複数記述されてい
ると、デバッグ時のステップ実行の対象はあくまでもソ
ースプログラムの1行であるので、次の行あるいは分岐
した先の行単位で1回のステップ実行を終了していた。
また前記■の複文のブロックの中に複数の文がある場合
などは、1行のステップ実行を複数回行うか、次のブロ
ックの先頭にブレークポイントを設定して実行していた
〔発明が解決しようとする課題〕
上述した従来の言語処理プログラムの処理方式では、ソ
ースレベルのデバッグを行う場合、デバッグ情報として
行情報しか出力されていないので、ソースプログラムの
ステプ実行は1行単位でしか行えないという欠点があっ
た。
ソースプログラム1行に複数の文が記述されていた場合
、1つの文の実行結果を得るには、たとえば代入文では
機械語レベルでステップ実行を行い、レジスタ、あるい
は変数の値を見なければならない。またはソースプログ
ラムを、1行にlつの文しか記述しないように修正する
必要がある。
ブロックの中に複数の文がある場合は、1行のステップ
実行を複数回行うか、次のブロックの先頭をソースプロ
グラム上がら探して、ブレークボイントを設定して実行
していた.プログラムの動作の流れが連続的でない場合
、予想していなかった別の場所に分岐して、プログラム
の動作の流れを追うことができなくなる.tた分岐した
先でプログラムが終了してしまうことも考えられるので
、デバッグを最初からやり直さなければならなくなる。
このように従来の言語処理プログラムの処理方式では、
デバッグに操作上の手間がかかるうえ、予想に反した動
作をすることもあり、使用者の使い勝手は良いものとは
言えなかった。
また、ターゲットシステム上の被デバッグプログラムの
ソースレベルのステップ実行を行う場合、1ソース行内
に含まれる機械語命令文の機械語命令のステップ実行の
ためのデバツガプログラムとターゲットシステムとの通
信を必要としているので、デバッガプログラムの使用者
へのソースレベルの1行ステップ実行コマンド時の応答
時間が多大となる欠点がある。
本発明の目的は、ソースプログラム中の関数定義と文の
先頭に、ソースレベルのデバッグのための処理部を呼出
す呼出し命令を生成することにより、必要なソースデバ
ッグを最少のデバッグ情報の通信によって可能にした言
語処理プログラムのデバッグ情報出力処理方式を提供す
ることにある。
〔課題を解決するための手段〕
本発明の構成は、ソースプログラム情報を入力する入力
手段と、この入力手段により入力されたソースポルガル
マ情報を解析してオブジェクト情報を生成する情報生成
手段と、デバッグ情報を出力する出力手段とを有する言
語処理プログラムのデバッグ情報出力処理方式において
、デバッグを目的としたオブジェクト情報を生成する際
に、前記オブゼクト情報のうちソースプログラム中の関
数定義と文に対するオブジェクト情報の前に、デバッグ
のための処理部を呼出す呼出し命令を生成することを特
徴とする. 〔実施例〕 次に本発明について図面を参照して説明する。
第1図は本発明の一実施例のC言語処理プログラムのオ
ブジェクト出力部のフローチャート、第2図は本実施例
の適用されるシステム楕成を示すブロック図である。こ
のC言語処理プログラム2は、入力ファイル1からソー
スプログラム情報を入力する入力部4、入力したソース
プログラム情報を解析する構文解析部5、構文解析され
たソースプログラムに対しオブジェクトプログラムを生
成し出力するオブジェクト出力部9から構成されている
6 次の第1表は入力ファイル1のプログラム内容を示し、
左側の数字は説明のために付けたソースプログラム中の
行番号である。
以  下  余  白 第l表 (1)   int datal  data2,da
ta3;(2)   void main  (>(3
〉   { (4)      datal  =1;  data
2 =(5)   { (6)      int autol;(7)   
   data3 = autol;2; 第2図により全体の処理の流れを説明する。入力部4が
入力ファイル1からプログラム情報を入力する。次に、
構文解析部5でソースプログラムを解析する.最後に、
オブジェクト出力部9でオブジェクトプログラムを生成
し出力ファイル3に出力する。
次に、第1図のフローチャートの説明を行う.ただしC
言語処理プログラムのオブジェクト出力の対象となる関
数と、文のうちのブロックに着目して説明を行う。
(1)まず、ステップ10のソースプログラムの解析に
より入力ファイル1の1行を解析する。
〈2)この処理の結果、ステップl2でソースプログラ
ムが終了しているか否かを判定し、終了していれば、処
理は終了処理へ移りステップ14で終了する.ソースプ
ログラムが終了していなければ処理は次の処理13へ移
る. (3) (1)の処理の結果、ステップ11でオブジェ
クト出力の対象であるか否かを判定する。ソースプログ
ラムの1行が宣言やブロックの開始であればオブジェク
ト出力の対象ではないのでステップ10の処理に戻り、
次の行の解析を行う。
(4)(1)の処理の結果、ステップ13で関数の始ま
りであると判定されれば、処理は関数処理部の呼出し命
令出力処理(ステップ15)へ移る.関数処理部の呼出
し命令出力処理(ステップ15〉では、関数処理部の呼
出し命令を出力する。関数の始まりでなければ処理はス
テップ16のブロック判定処理へ移る. <5)(1)の処理の結果、ステップ16でブロックの
始まりであると判定されれば、処理はブロック処理部の
呼出し命令出力処理(ステップ17)へ移る。このブロ
ック処理部の呼出し命令出力処理(ステップ17)では
ブロック処理部の呼出し命令をを出力し、(1〉の処理
へ移る。ブロックの始まりでなければ処理は次の(6)
の処理18へ移る. 〈6)関数の始まりでもブロックの始まりでもなければ
、処理はステップ18の文処理部の呼出し命令出力処理
へ移る.この文処理部の呼出し命令出力処理208では
文処理部の呼び出し命令を出力する. (7)各処理部の呼出し命令を出力したあと、処理は文
に対する機械語命令出力処理(ステ,ブ19〉へ移る。
文に対する機械語命令出力処理19では1つの文に対す
る機械語命令を出力する。
次に、このフローチャートに従い、C言語処理プログラ
ム2が第1表に示すソースプログラムを入力し、第3図
に示すオブジェクトプログラムを出力する利を説明する
.第3図のオブジェクトプログラムは、簡略のため全体
の構成のみを記述してある。また、ソースプログラム情
報の入力からオブジェクトプログラム出力の全体の処理
は、前記全体の処理の流れの説明どうりであるので省略
して説明を行う。
(1)ソースプログラムの解析10により第1表の1行
目を解析する.オブジェクト出力判定処理20により、
この行に対してオブジェクトは生成されないので、処理
はソースプログラムの解析11に移り2行目の解析を行
う. (2〉2行目はオブジェクト出力の対象であり、ソース
プログラムの終了ではないと判定されるので、処理は関
数判定処理13へ移る. (3)関数判定処理13で2行目は関数の始まりと判定
されるため、関数処理部の呼出し命令出力処理により関
数処理部の呼出し命令を出力する。これが第3図の関数
処理部の呼び出し命令31である. (4)次に文に対するステップ1つの機械語出力処理に
より文に対する機械語を出力し、これが第3図の関数前
処理部32である。
(5)同様に3行目はブロック判定処理(16〉により
ブロックの始まりと判定され、ブロック処理部呼出し命
令出力処理(17)により第3図のブロック処理部呼出
し命令33が出力される。
(6〉4行目に対して文に対する機械語命令出力処理(
19〉により、第3図の文に対する機械語命令34が出
力される. (7)4行目の2つ目の文に対しては、文処理部読び出
し命令出力処理部(18)により、第3図の文処理部呼
出し命令35が出力される。
(8)次に文に対する機械語命令出力処理部(l9)に
より、第3図の文に対する機械語命令36が出力される
(9)5行目はブロック判定処理部(16)によりブロ
ックの始まりと判定され、ブロック処理部呼出し命令出
力処理(17〉により、第3図のブロック処理部呼出し
命令37が出力される。
(10)5行目と6行目に対してはオブジェクトは生成
されないので、7行目に対して、文に対する機械語命令
出力処理(19〉により、第3図の文に対する機械語命
令38が出力される。
このようにして、第1表のソースプログラムに対して第
3図のオブジェクトが生成される。
次に、出力された第3図のオブジェクトプログラムによ
って、ソースレベルのデバッグ方法のうちのステップ実
行を第4図を用いて説明する。このソースデバッガでは
、関数処理部41、ブロック処理部42、文処理部43
にブレークポイントを設定するなどして、各処理部に被
デバッグプログラムの実行が移ったとき、ステップ実行
を完了する。関数処理部41は、文処理部43に分岐す
る。ブロック処理部42は文処理部43に分岐する。
1つの文に関数呼出しだけが記述された場合、言語処理
プログラムにより関数処理部41を呼出す呼出し命令だ
けが出力される。また、ブロックの開始の直後に文が記
述されている場合、ブロック処理部42を呼出す呼出し
命令だけが出力される。
関数レベルのステップ実行を行う場合、関数処理部の呼
出し命令31により、被デバッグプログラムの実行は関
数処理部41に移る。ここでソースデバッガにより被デ
バッグプログラムの動作は停止する。これにより被デバ
ッグブレゴルマのステップ実行中に、予期しない関数呼
出しがあった場合でも呼出された関数の先頭で被デバッ
グプログラムの実行は停止するので、被デバッグプログ
ラムの動作の流れを追えなくなってしまったり、呼出さ
れた関数中で被デバッグプログラムの実行が終了してし
まい、デバッグを最初からやり直さなければならなくな
るということがなくなる。
ブロックレベルのステップ実行を行う場合、ブロック処
理部の呼出し命令33により、被デバッグプログラムの
実行はブロック処理部42に移る.ここでソースデバッ
ガにより被デバッグプログラムの動作は停止する。これ
により被デバッグプログラムのステップ実行時に、次の
ブロックまで停止することなく被デバッグプログラムを
実行でき、1行ごとのステップ実行を複数回行ったり、
次のブロックの先頭をソースプログラム上から探して、
ブレークポイントを設定して実行するといった操作上の
手間をなくすばかりでなく、ステップ実行のための時間
の短縮が図られる。
文レベルのステップ実行を行う場合、文処理部の呼出し
命令35により、被デバッグプログラムの実行は文処理
部43に移る。ここでソースデバッガにより被デバッグ
プログラムの動作は停止する。これによりソースプログ
ラムの1行内に複数の文が記述されていた場合でも、各
文の先頭で変数の内容を見ることにより、1つの文の実
行結果を確認することができる。
関数レベルのステップ実行を行わず、文レベルのステッ
プ実行を行う場合、関数の始まりでは関数処理部の呼出
し命令31により、被デバッグプログラムの実行は関数
処理部41に移る。しかし、関数処理部41にはブレー
クポイントが設定されていないため、処理は文処理部4
3に移る。
文処理部43にはブレークポイントが設定されているた
め、被デバッグプログラムはここで停止する。
同様にブロックレベルのステップ実行を行わず、文レベ
ルのステップ実行を行う場合、ブロックの始まりではブ
ロック処理部の呼出し命令33により、被デバッグプロ
グラムの実行はブロック処理部42に移る。しかし、ブ
ロック処理部42にはブレークポイントが設定されてい
ないため、処理は文処理部43に移る.文処理部43に
はブレークポイントガ設定されているため、被デバッグ
プログラムはここで停止する。
〔発明の効果〕
以上説明したように、本発明の言語処理プログラムのデ
バッグ情報出力処理方式では、ソースプログラム中の各
文に対するオブジェクト情報の前に、ソースレベルのデ
バッグのため処理部を呼出す呼出命令を生成することに
より、ソースレベルのデバッグ時に従来の1行ごとのス
テップ実行に加えて関数や文単位のステップ実行が可能
になり、また各ステップ実行が従来のデバッグ方式に比
べ高速に行うことができるという効果を有している.
【図面の簡単な説明】
第1図は、本発明の一実施例を説明するC言語処理プロ
グラムのオブジェクト出力処理のフローチャート、第2
図は第1図を適用するシステム横成のブロック図、第3
図は第2図のオブゼクトファイルの内容を説明する構成
図、第4図は第1図のソースレベルのステップ実行を行
う処理部の構成図である. 1・・・入力ファイル、2・・・C言語処理プログラム
、3・・・オブジェクトファイル、4・・・入力部、5
・・・構文解析部、6・・・オブジェクト出力部、10
・・・1行のソースプログラムの解析、11・・・オブ
ジェクト出力判定処理、12・・・終了判定処理、13
・・・終了処理、14・・・関数判定処理、15・・・
ブロック判定処理、16・・・関数処理部の呼出し命令
出力処理、17・・・ブロック処理部の呼出し命令出力
処理、18・・・文処理部の呼出し命令出力処理、19
・・・文に対する機械語命令出力処理、31・・・関数
処理部の呼出し命令、32・・・関数前処理部、33・
・・ブロック処理部の呼出し命令、34・・・文に対す
る機械語命令、35・・・文処理部の呼出し命令、36
・・・文に対する機械語命令、37・・・ブロック処理
部の呼出し命令、38・・・文に対する機械語命令、4
1・・・関数処理部、42・・・ブロック処理部、43
・・・文処理部.

Claims (1)

    【特許請求の範囲】
  1. ソースプログラム情報を入力する入力手段と、この入力
    手段により入力されたソースポルガルマ情報を解析して
    オブジェクト情報を生成する情報生成手段と、デバッグ
    情報を出力する出力手段とを有する言語処理プログラム
    のデバッグ情報出力処理方式において、デバッグを目的
    としたオブジェクト情報を生成する際に、前記オブゼク
    ト情報のうちソースプログラム中の関数定義と文に対す
    るオブジェクト情報の前に、デバッグのための処理部を
    呼出す呼出し命令を生成することを特徴とする言語処理
    プログラムのデバッグ情報出力処理方式。
JP1189437A 1989-07-21 1989-07-21 言語処理プログラムのデバッグ情報出力処理方式 Pending JPH0353334A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP1189437A JPH0353334A (ja) 1989-07-21 1989-07-21 言語処理プログラムのデバッグ情報出力処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1189437A JPH0353334A (ja) 1989-07-21 1989-07-21 言語処理プログラムのデバッグ情報出力処理方式

Publications (1)

Publication Number Publication Date
JPH0353334A true JPH0353334A (ja) 1991-03-07

Family

ID=16241235

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1189437A Pending JPH0353334A (ja) 1989-07-21 1989-07-21 言語処理プログラムのデバッグ情報出力処理方式

Country Status (1)

Country Link
JP (1) JPH0353334A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6565143B2 (en) 2000-04-05 2003-05-20 Shinichi Okamoto Camping car

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6565143B2 (en) 2000-04-05 2003-05-20 Shinichi Okamoto Camping car

Similar Documents

Publication Publication Date Title
US5651111A (en) Method and apparatus for producing a software test system using complementary code to resolve external dependencies
US5313387A (en) Re-execution of edit-compile-run cycles for changed lines of source code, with storage of associated data in buffers
US9367423B1 (en) Methods, systems, and articles of manufacture for using multiple modes during execution of a program
US20130086424A1 (en) Debugging analysis in running multi-user systems
JP2004164554A (ja) プログラム実行監視装置および方法
JP2008033849A (ja) 障害解析システム
JPH0748182B2 (ja) プログラム・エラー検出方法
CN109144849B (zh) 一种嵌入式软件调测方法
JPS62113244A (ja) プログラムテスト装置
KR0125605B1 (ko) 프로그램의 아키덱쳐 변환방법 및 장치와 그 방법 및 장치를 사용하여 프로그램의 동작을 검증하는 방법 및 장치
JP3196675B2 (ja) 言語処理方式
JPH0353334A (ja) 言語処理プログラムのデバッグ情報出力処理方式
EP0801348A1 (en) Method of monitoring the operation of a computer
JPH11110256A (ja) プログラムデバッグ装置、プログラムデバッグ方法及びその方法を記録したコンピュータ読取り可能な記録媒体
CN117785160B (zh) 一种低代码应用的行为逻辑开发调试方法、系统及装置
JP2004287869A (ja) プログラム実行監視装置および方法
JPH04169941A (ja) デバッグ情報出力処理方式
JPS626260B2 (ja)
JPH1165885A (ja) ソフトウェアディバッグ装置及びソフトウェアディバッグ方法
JP2009515243A (ja) ホストコンピュータ上で実行可能なシミュレーションプログラムを生成する方法
JP2659366B2 (ja) デバッグ方法及びその装置
JP2000353112A (ja) 中間言語レベルのデバッグ方法及びシステム
JPH05250221A (ja) シミュレータ実行方式
US7627859B2 (en) Method for configuring non-script language library files to be run as scripts
JPH04209029A (ja) 並列処理プログラム翻訳処理装置