JPH0211930B2 - - Google Patents
Info
- Publication number
- JPH0211930B2 JPH0211930B2 JP58226321A JP22632183A JPH0211930B2 JP H0211930 B2 JPH0211930 B2 JP H0211930B2 JP 58226321 A JP58226321 A JP 58226321A JP 22632183 A JP22632183 A JP 22632183A JP H0211930 B2 JPH0211930 B2 JP H0211930B2
- Authority
- JP
- Japan
- Prior art keywords
- processing
- pass
- processing time
- compiler
- time required
- 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 - Lifetime
Links
Landscapes
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Description
【発明の詳細な説明】
〔発明の技術分野〕
本発明は、データ処理装置におけるソースプロ
グラムのコンパイル処理において、コンパイラの
欠陥により無限ループにおちいつた状態を早期に
検出するためのコンパイラ障害自動検出方式に関
する。
グラムのコンパイル処理において、コンパイラの
欠陥により無限ループにおちいつた状態を早期に
検出するためのコンパイラ障害自動検出方式に関
する。
一般に、コンパイル処理において、コンパイラ
自身のパグで異常終了となる場合には、無限ルー
プの場合と、それ以外の特定処理での障害の場合
とがある。通常、コンパイラの異常終了ではメモ
リ内容ダンプの指定が行なわれていないので、後
者の場合、メモリ内容ダンプの指定をとり直して
もう1度処理を繰り返せばバグ位置をつきとめる
ことが可能である。しかし、前者の無限ループに
入つた場合には、たとえば30秒乃至60秒に設定さ
れているCPUの時間監視(CPU TIME OVER)
にかかるまで、そのまま走行を続けた後、異常終
了することになる。しかもこのとき、メモリ内容
のダンプ指定が行なわれていないと、異常終了の
メツセージが出力されるのみであり、また、たと
え異常終了時のダンプ指定が行なわれたとして
も、ループのどの位置でCPU TIME OVERに
かかるかは定まつていないため、異常終了の原因
を知る確実な手掛りが得られず、障害回復にかな
りの手間と時間がかかつていた。
自身のパグで異常終了となる場合には、無限ルー
プの場合と、それ以外の特定処理での障害の場合
とがある。通常、コンパイラの異常終了ではメモ
リ内容ダンプの指定が行なわれていないので、後
者の場合、メモリ内容ダンプの指定をとり直して
もう1度処理を繰り返せばバグ位置をつきとめる
ことが可能である。しかし、前者の無限ループに
入つた場合には、たとえば30秒乃至60秒に設定さ
れているCPUの時間監視(CPU TIME OVER)
にかかるまで、そのまま走行を続けた後、異常終
了することになる。しかもこのとき、メモリ内容
のダンプ指定が行なわれていないと、異常終了の
メツセージが出力されるのみであり、また、たと
え異常終了時のダンプ指定が行なわれたとして
も、ループのどの位置でCPU TIME OVERに
かかるかは定まつていないため、異常終了の原因
を知る確実な手掛りが得られず、障害回復にかな
りの手間と時間がかかつていた。
本発明の目的は、コンパイラの欠陥により無限
ループに入つた場合に、CPU時間監視によらず
に異常を検出して、必要な情報を出力することを
可能にする手段を提供することにあり、そのため
本発明は、コンパイラの処理が複数の処理段階
(フエーズ)で構成されていて、ソースプログラ
ムはこれらの処理段階を順次パスして行くことに
よりオブジエクトに変換される点と、各処理段階
でのパス処理時間に極端な差がないことに着目し
て、各処理段階のパス処理時間の間の相対的な比
較によつて無限ループの検出を行なうものであ
る。
ループに入つた場合に、CPU時間監視によらず
に異常を検出して、必要な情報を出力することを
可能にする手段を提供することにあり、そのため
本発明は、コンパイラの処理が複数の処理段階
(フエーズ)で構成されていて、ソースプログラ
ムはこれらの処理段階を順次パスして行くことに
よりオブジエクトに変換される点と、各処理段階
でのパス処理時間に極端な差がないことに着目し
て、各処理段階のパス処理時間の間の相対的な比
較によつて無限ループの検出を行なうものであ
る。
そしてそれによる本発明の構成は、ソースプロ
グラムを複数回のパスによりコンパイル処理する
コンパイラをそなえたデータ処理装置において、
上記コンパイラを用いたコンパイル処理の第1回
のパスに要する処理時間と、第2回以降の各回ご
とのパスに要する処理時間との間の比率について
予測できる最大値を超えた所定の値が予め設定さ
れているテーブル手段と、実際のソースプログラ
ムについてコンパイル処理時に各回ごとのパスに
要する処理時間を計測する手段と、第2回以降の
パスごとに要した処理時間と第1回のパスに要し
た処理時間に上記テーブル手段に設定されている
当該回の比率とを乗じた時間とを比較し、前者が
後者よりも大きくなつたとき無限ループ状態と判
定する手段とを有し、該判定手段が無限ループ状
態と判定したパスにおいて異常終了処理を行なう
ことを特徴とするものである。
グラムを複数回のパスによりコンパイル処理する
コンパイラをそなえたデータ処理装置において、
上記コンパイラを用いたコンパイル処理の第1回
のパスに要する処理時間と、第2回以降の各回ご
とのパスに要する処理時間との間の比率について
予測できる最大値を超えた所定の値が予め設定さ
れているテーブル手段と、実際のソースプログラ
ムについてコンパイル処理時に各回ごとのパスに
要する処理時間を計測する手段と、第2回以降の
パスごとに要した処理時間と第1回のパスに要し
た処理時間に上記テーブル手段に設定されている
当該回の比率とを乗じた時間とを比較し、前者が
後者よりも大きくなつたとき無限ループ状態と判
定する手段とを有し、該判定手段が無限ループ状
態と判定したパスにおいて異常終了処理を行なう
ことを特徴とするものである。
以下に、本発明の詳細を実施例にしたがつて説
明する。
明する。
第1図は、コンパイラの主要な処理段階を示し
たもので、単語解析、構文解析、最適化、記憶域
割当て、コード生成、アセンブルの各処理からな
り、それぞれの段階で各種の記号表、リテラル
表、中間テキストなどが生成される。
たもので、単語解析、構文解析、最適化、記憶域
割当て、コード生成、アセンブルの各処理からな
り、それぞれの段階で各種の記号表、リテラル
表、中間テキストなどが生成される。
上記の各処理段階は、実際には10乃至30のパス
処理に分けられている。そしてそれぞれのパスに
要する処理時間は、ソース行数に大体比例するこ
とが言える。したがつて、最初のパスでの処理時
間と他のパスでの処理時間とは、任意のソースに
対して同じ比例関係を保つものと考えることがで
きる。
処理に分けられている。そしてそれぞれのパスに
要する処理時間は、ソース行数に大体比例するこ
とが言える。したがつて、最初のパスでの処理時
間と他のパスでの処理時間とは、任意のソースに
対して同じ比例関係を保つものと考えることがで
きる。
そこで、最初のパスで処理時間を測定し、2番
目以降のパスの処理時間が最初のパスの処理時間
に予め定められた一定の係数を掛けて得られた時
間を超えたならば、コンパイラループが生じてい
るものと判定して異常終了する機構を設け、その
時点での処理情報を出力させる。
目以降のパスの処理時間が最初のパスの処理時間
に予め定められた一定の係数を掛けて得られた時
間を超えたならば、コンパイラループが生じてい
るものと判定して異常終了する機構を設け、その
時点での処理情報を出力させる。
第2図は、本発明の1実施例装置の機能構成図
である。図中、1はデータ処理装置、2はコンパ
イル処理部、3は処理情報記憶部、4はループ検
出処理部、5は処理時間タイマ、6はループ判定
係数テーブル、7は異常終了処理部、8は外部記
憶装置、9はプリンタを示す。
である。図中、1はデータ処理装置、2はコンパ
イル処理部、3は処理情報記憶部、4はループ検
出処理部、5は処理時間タイマ、6はループ判定
係数テーブル、7は異常終了処理部、8は外部記
憶装置、9はプリンタを示す。
コンパイル処理部2は、コンパイラの各処理段
階のパス処理を順次実行する。処理情報記憶部3
はコンパイル処理に必要な全ての情報を記憶す
る。コンパイル処理部2は、パス処理において、
必要に応じて処理時間タイマ5のセツトを要求す
るSTIMERマクロ、テストを要求するT
TIMERマクロ、クリヤを要求するCTIMERマク
ロを、それぞれ発行する。
階のパス処理を順次実行する。処理情報記憶部3
はコンパイル処理に必要な全ての情報を記憶す
る。コンパイル処理部2は、パス処理において、
必要に応じて処理時間タイマ5のセツトを要求す
るSTIMERマクロ、テストを要求するT
TIMERマクロ、クリヤを要求するCTIMERマク
ロを、それぞれ発行する。
ループ検出処理部4は、OSの1機能部として
設けられ、STIMER、TTIMER、CTIMERの
各マクロに応答して処理時間タイマ5を制御する
とともに、処理時間タイマ5のタイムオーバーを
監視し、タイムオーバーの場合に異常終了処理部
7を起動する。
設けられ、STIMER、TTIMER、CTIMERの
各マクロに応答して処理時間タイマ5を制御する
とともに、処理時間タイマ5のタイムオーバーを
監視し、タイムオーバーの場合に異常終了処理部
7を起動する。
ループ判定係数テーブル6は、2回目以降の各
パスP2,P3,…,Pi,PNについて、それぞれの
処理時間に掛けるべき係数k2,k3,…,ki,…kN
を保持するテーブルである。
パスP2,P3,…,Pi,PNについて、それぞれの
処理時間に掛けるべき係数k2,k3,…,ki,…kN
を保持するテーブルである。
異常終了処理部7は、コンパイラループが検出
されたとき、コンパイル処理部2の処理を終了さ
せるとともに、処理情報記憶部3にある中間テキ
ストをプリンタ9へ出力させる処理を行なう。
されたとき、コンパイル処理部2の処理を終了さ
せるとともに、処理情報記憶部3にある中間テキ
ストをプリンタ9へ出力させる処理を行なう。
第3図は、上記した実施例装置の処理手順の説
明図である。
明図である。
コンパイル処理部2は第1回のパスP1の始め
にSTIMER(TA)のマクロを発行し、そしてパ
スP1の終りにTTIMER(TB)のマクロを発行す
る。ループ検出処理部4は、STIMER(TA)に
応じて処理時間タイマ5にTAをプリセツトして、
クロツクのカウントダウン動作を行なわせ、そし
てTTIRER(TB)マクロに応じて、処理時間タイ
マ5の残り時間TBを調べ、パスP1の処理時間T1
=TA−TBを求めて記憶する。
にSTIMER(TA)のマクロを発行し、そしてパ
スP1の終りにTTIMER(TB)のマクロを発行す
る。ループ検出処理部4は、STIMER(TA)に
応じて処理時間タイマ5にTAをプリセツトして、
クロツクのカウントダウン動作を行なわせ、そし
てTTIRER(TB)マクロに応じて、処理時間タイ
マ5の残り時間TBを調べ、パスP1の処理時間T1
=TA−TBを求めて記憶する。
次に、コンパイル処理部2は、パスP2の始め
にSTIMER(k2・T1)マクロを発行し、終りに
CTIMERマクロを発行する。ループ検出処理部
4は、STIMER(k2・T1)マクロに応じて、ルー
プ判定係数テーブル6から、係数k2を求め、これ
と先に記憶してあるパスP1の処理時間T1とを掛
け合わせて、その結果値を、処理時間タイマ5に
プリセツトする。そしてその後CTIMERマクロ
を受けとるまで処理時間タイマ5のタイムオーバ
ーを監視する。
にSTIMER(k2・T1)マクロを発行し、終りに
CTIMERマクロを発行する。ループ検出処理部
4は、STIMER(k2・T1)マクロに応じて、ルー
プ判定係数テーブル6から、係数k2を求め、これ
と先に記憶してあるパスP1の処理時間T1とを掛
け合わせて、その結果値を、処理時間タイマ5に
プリセツトする。そしてその後CTIMERマクロ
を受けとるまで処理時間タイマ5のタイムオーバ
ーを監視する。
タイマの残り時間が零となつてタイムオーバ
ー、すなわちT2>k2・T1になつた場合には、ル
ープと判定して異常終了処理部7に通知し、他
方、タイマがタイムオーバーにならない間に
CTIMERマクロを受けとつた場合、すなわち正
常終了の場合には、タイマをクリヤする。この正
常終了の場合には以上のようなPiの処理を繰り返
す。
ー、すなわちT2>k2・T1になつた場合には、ル
ープと判定して異常終了処理部7に通知し、他
方、タイマがタイムオーバーにならない間に
CTIMERマクロを受けとつた場合、すなわち正
常終了の場合には、タイマをクリヤする。この正
常終了の場合には以上のようなPiの処理を繰り返
す。
異常終了処理部7は、任意のパスPiにおいてル
ープ検出処理部4からループ検出を通知される
と、出口ルーチンを呼び出して実行し、ループに
よるコンパイラ障害の発生をメツセージ出力する
とともに、処理情報記憶部3の中の中間テキスト
をプリンタ出力し、異常終了処理(ABEND)を
行なう。
ープ検出処理部4からループ検出を通知される
と、出口ルーチンを呼び出して実行し、ループに
よるコンパイラ障害の発生をメツセージ出力する
とともに、処理情報記憶部3の中の中間テキスト
をプリンタ出力し、異常終了処理(ABEND)を
行なう。
以上のように、本発明によれば、最初のパス
P1で無限ループに入つた場合を除いてコンパイ
ラのループは確実に検出でき、しかもそのパス位
置情報と中間テキストが得られるので、コンパイ
ラのバグの検出が容易となり障害の回復処理に要
する手間と時間の大幅な短縮が可能となる。
P1で無限ループに入つた場合を除いてコンパイ
ラのループは確実に検出でき、しかもそのパス位
置情報と中間テキストが得られるので、コンパイ
ラのバグの検出が容易となり障害の回復処理に要
する手間と時間の大幅な短縮が可能となる。
第1図はコンパイラの処理段階の説明図、第2
図は本発明の1実施例装置の構成図、第3図は本
発明実施例の処理手順のフロー図である。 図中、1はデータ処理装置、2はコンパイル処
理部、3は処理情報記憶部、4はループ検出処理
部、5は処理時間タイマ、6はループ判定係数テ
ーブル、7は異常終了処理部、8は外部記憶装
置、9はプリンタを示す。
図は本発明の1実施例装置の構成図、第3図は本
発明実施例の処理手順のフロー図である。 図中、1はデータ処理装置、2はコンパイル処
理部、3は処理情報記憶部、4はループ検出処理
部、5は処理時間タイマ、6はループ判定係数テ
ーブル、7は異常終了処理部、8は外部記憶装
置、9はプリンタを示す。
Claims (1)
- 1 ソースプログラムを複数回のパスによりコン
パイル処理するコンパイラをそなえたデータ処理
装置において、上記コンパイラを用いたコンパイ
ル処理の第1回のパスに要する処理時間と、第2
回以降の各回ごとのパスに要する処理時間との間
の比率について予測できる最大値を超えた所定の
値が予め設定されているテーブル手段と、実際の
ソースプログラムについてコンパイル処理時に各
回ごとのパスに要する処理時間を計測する手段
と、第2回以降のパスごとに要した処理時間と第
1回のパスに要した処理時間に上記テーブル手段
に設定されている当該回の比率とを乗じた時間と
を比較し、前者が後者よりも大きくなつたとき無
限ループ状態と判定する手段とを有し、該判定手
段が無限ループ状態と判定したパスにおいて異常
終了処理を行なうことを特徴とするコンパイラ障
害自動検出方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP58226321A JPS60118935A (ja) | 1983-11-30 | 1983-11-30 | コンパイラ障害自動検出方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP58226321A JPS60118935A (ja) | 1983-11-30 | 1983-11-30 | コンパイラ障害自動検出方式 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS60118935A JPS60118935A (ja) | 1985-06-26 |
| JPH0211930B2 true JPH0211930B2 (ja) | 1990-03-16 |
Family
ID=16843356
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP58226321A Granted JPS60118935A (ja) | 1983-11-30 | 1983-11-30 | コンパイラ障害自動検出方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS60118935A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0573136U (ja) * | 1992-03-10 | 1993-10-05 | アイカ工業株式会社 | 螺旋階段の踊場構造 |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5054294A (en) * | 1990-09-21 | 1991-10-08 | Carrier Corporation | Compressor discharge temperature control for a variable speed compressor |
| GB2373072A (en) * | 2001-03-08 | 2002-09-11 | Escher Technologies Ltd | Process for validating a computer program segment that has recursive cycles or loops |
-
1983
- 1983-11-30 JP JP58226321A patent/JPS60118935A/ja active Granted
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0573136U (ja) * | 1992-03-10 | 1993-10-05 | アイカ工業株式会社 | 螺旋階段の踊場構造 |
Also Published As
| Publication number | Publication date |
|---|---|
| JPS60118935A (ja) | 1985-06-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0211930B2 (ja) | ||
| JPS6115239A (ja) | プロセツサ診断方式 | |
| KR910006314B1 (ko) | 리얼타임 클럭의 장애검출 및 복귀방법 | |
| JPH09231105A (ja) | プログラム障害検出方法 | |
| JPH10171546A (ja) | 起動監視装置 | |
| JP2990008B2 (ja) | プロセッサの自己診断方式 | |
| JPH06149762A (ja) | 計算機システムの競合動作試験方式 | |
| KR200293236Y1 (ko) | 감시타이머장치 | |
| JPS632922Y2 (ja) | ||
| JP2836084B2 (ja) | 計算機の検査装置 | |
| JPS6272038A (ja) | プログラム暴走検出装置の試験方法 | |
| JPH04160649A (ja) | 試験プログラムのタイミング設定方式 | |
| JPH0149975B2 (ja) | ||
| JPS6162945A (ja) | 情報処理装置の検査方式 | |
| JPH0314148A (ja) | プログラム破壊検出装置 | |
| JPS60243750A (ja) | コンピユ−タにおける異常監視回路 | |
| JPS61240334A (ja) | 情報処理装置の検査方式 | |
| JPH02130646A (ja) | Cpuの異常検出方式 | |
| JPH01106231A (ja) | 異常処理検出方式 | |
| JPH08305673A (ja) | マルチcpu監視方式 | |
| JPS5858662A (ja) | 装置試験方式 | |
| JPS6015749A (ja) | インラインtmp方式 | |
| JPH0997197A (ja) | 情報処理装置の自己診断方法 | |
| JPH01243132A (ja) | 障害処理方式 | |
| JPS6295646A (ja) | 走行監視機能付マイクロプログラム制御装置 |