JPS62118448A - 不定値参照の検出方式 - Google Patents
不定値参照の検出方式Info
- Publication number
- JPS62118448A JPS62118448A JP60258874A JP25887485A JPS62118448A JP S62118448 A JPS62118448 A JP S62118448A JP 60258874 A JP60258874 A JP 60258874A JP 25887485 A JP25887485 A JP 25887485A JP S62118448 A JPS62118448 A JP S62118448A
- Authority
- JP
- Japan
- Prior art keywords
- program
- indefinite
- variable
- statement
- value
- 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)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
(産業上の利用分野)
本発明はプログラム中の不定値を有する変数の参照を検
出する不定値参照の検出方式に関する。
出する不定値参照の検出方式に関する。
(従来の技術)
プログラム中の不定変数、すなわち、値が定義されてい
ない変数であるにも拘らずこれを参照する文を設定する
ことはプログツムの犯し易い誤りの一つである。このよ
うなプログラムミスを事前に排除しておくことはプログ
ラム実行段階忙おける誤動作の原因を限定化するうえで
極めて有効である。
ない変数であるにも拘らずこれを参照する文を設定する
ことはプログツムの犯し易い誤りの一つである。このよ
うなプログラムミスを事前に排除しておくことはプログ
ラム実行段階忙おける誤動作の原因を限定化するうえで
極めて有効である。
従来のこの種の不定値参照の検出は、コンパイラによっ
てプログラム単位ごとに行なわれる。たとえば、フォー
トラン(PORT几AN)の場合にはプログラム単位中
の代入文、リード(READ)文。
てプログラム単位ごとに行なわれる。たとえば、フォー
トラン(PORT几AN)の場合にはプログラム単位中
の代入文、リード(READ)文。
データ(DATA)文等で定義されているが否かを調ベ
プログラム単位中で定義が無いにも拘らず参照されてい
る場合には不定値参照としてエラー表示するようになっ
ている。
プログラム単位中で定義が無いにも拘らず参照されてい
る場合には不定値参照としてエラー表示するようになっ
ている。
(発明が解決しようとする問題点)
このような従来方式はプログラム単位に閉じた変数に対
してのみ有効であるため、プログラム単位間で使用する
共通な変数やプログラム単位間で受は渡しされる変数に
対して不定値参照の検出ができず、また、不定値参照の
調査は、プログラム単位によって静的に行なわれるため
、変数定義と変数参照の先後関係を考慮に入れての不定
値参照の検出ができないことになり、プログラム単位に
閉じた変数であっても定義前に参照されているような場
合に対しては無効になるという問題点がある。
してのみ有効であるため、プログラム単位間で使用する
共通な変数やプログラム単位間で受は渡しされる変数に
対して不定値参照の検出ができず、また、不定値参照の
調査は、プログラム単位によって静的に行なわれるため
、変数定義と変数参照の先後関係を考慮に入れての不定
値参照の検出ができないことになり、プログラム単位に
閉じた変数であっても定義前に参照されているような場
合に対しては無効になるという問題点がある。
(問題点を解決するための手段)
本発明の方式は、入力された原始プログラムを解析して
未初期化変数を抜き出す解析部と、この抜き出された未
初期化変数に疑似不定値を初期値として設定しておく文
を原始プログラム内に挿入しまた未初期化変数が疑似不
定値と同値か否かを検定し同値の場合にはエラー処理ル
ーチンに制御を渡す文を原始プログラム中の未初期化変
数を参照している文の直前に挿入しまた不定値参照情報
を出力した後で分岐元に復帰する工2−処理ルーチンを
原始プログラムに追加する原始プログラム再生部 とを設け、このようにして再生された原始プログラムを
実行することにより不定値を有する変数の参照を検出す
るようにしたことを特徴とする。
未初期化変数を抜き出す解析部と、この抜き出された未
初期化変数に疑似不定値を初期値として設定しておく文
を原始プログラム内に挿入しまた未初期化変数が疑似不
定値と同値か否かを検定し同値の場合にはエラー処理ル
ーチンに制御を渡す文を原始プログラム中の未初期化変
数を参照している文の直前に挿入しまた不定値参照情報
を出力した後で分岐元に復帰する工2−処理ルーチンを
原始プログラムに追加する原始プログラム再生部 とを設け、このようにして再生された原始プログラムを
実行することにより不定値を有する変数の参照を検出す
るようにしたことを特徴とする。
(実施例)
次に本発明の実施例について図面を参照して説明する。
第1図は本発明の一実施例を説明するだめの図を示す。
第1図を参照すると、当初はプログラム単位10と初期
値設定則プログラム100とから成りFOlも1′−R
AN言語で書かれた原始プログラム1に、疑似不定値設
定文11および101と、不定変数判定処理プログラム
12と、不定値参照情報出力プログラム1000とが追
加され再生されていることがわかる。
値設定則プログラム100とから成りFOlも1′−R
AN言語で書かれた原始プログラム1に、疑似不定値設
定文11および101と、不定変数判定処理プログラム
12と、不定値参照情報出力プログラム1000とが追
加され再生されていることがわかる。
原始プログラム1のメインルーチンであるプログラム単
位101Cおいては、図示した文M=Hのように、変数
が参照される文がある。このような原始プログラムを、
翻訳システムに先ず入力すると、解析部がプログラム単
位10を解析して未初期化変数、すなわち、初期値が設
定されていない変数を抜き出して、たとえば、主記憶の
所定エリアに格納する。
位101Cおいては、図示した文M=Hのように、変数
が参照される文がある。このような原始プログラムを、
翻訳システムに先ず入力すると、解析部がプログラム単
位10を解析して未初期化変数、すなわち、初期値が設
定されていない変数を抜き出して、たとえば、主記憶の
所定エリアに格納する。
次いで原始プログラム再生部が機能して以下に述べるよ
うに原始プログラム1を再生する。
うに原始プログラム1を再生する。
第1に、上述のようにして抜き出された未初期化変数に
疑似不定値を初期値としておく疑似不定値設定文11と
101をそれぞれプログラム単位10と初期値設定副プ
ログラム100の各データ(DATA)部に挿入する。
疑似不定値を初期値としておく疑似不定値設定文11と
101をそれぞれプログラム単位10と初期値設定副プ
ログラム100の各データ(DATA)部に挿入する。
疑似不定値設定文11はプログラム単位10に閉じた(
ローカルな)未初期化変数に対して挿入され、疑似不定
値設定文101は、複数のプログラム単位間で参照でき
る(グローバルな)未初期化変数に対して初期値設定副
プログラム100に挿入される。
ローカルな)未初期化変数に対して挿入され、疑似不定
値設定文101は、複数のプログラム単位間で参照でき
る(グローバルな)未初期化変数に対して初期値設定副
プログラム100に挿入される。
第1図においては、説明を簡単化するために、プログラ
ム単位が1つしか示されていないが、複数個ある場合に
は各プログラム単位にローカルな未初期化変数に対する
各疑似不定値設定文は対応するプログラム単位に挿入さ
れる。また、初期値設定副プログラム100が存在しな
い場合には新たに作成し原始プログラム1に追加する。
ム単位が1つしか示されていないが、複数個ある場合に
は各プログラム単位にローカルな未初期化変数に対する
各疑似不定値設定文は対応するプログラム単位に挿入さ
れる。また、初期値設定副プログラム100が存在しな
い場合には新たに作成し原始プログラム1に追加する。
疑似不定値設定文11と101においては、それぞれ未
初期化変数NとAK疑似不定値が初期値として設定され
ていることがわかる。なお、疑似不定値とは不定変数を
認識するために変数がとり得ないように、定められた値
のことであり、参照時にこの値を有する変数は不定変数
とみなされるのである。
初期化変数NとAK疑似不定値が初期値として設定され
ていることがわかる。なお、疑似不定値とは不定変数を
認識するために変数がとり得ないように、定められた値
のことであり、参照時にこの値を有する変数は不定変数
とみなされるのである。
第2に、プログラム単位10において未初期化変数を参
照している文(第1図におけるM=N等)の直前に、不
定変数判定処理プログラム12を挿入する。不定変数判
定処理プログラム12においては未初期化変数が、先に
初期値として設定された疑似不定値のままであればその
未初期化変数は不定変数であるとみなして不定値参照情
報出力プログラム1000に分岐し、またそうでなけれ
ば未初期化変数参照文(M二N)に移る。
照している文(第1図におけるM=N等)の直前に、不
定変数判定処理プログラム12を挿入する。不定変数判
定処理プログラム12においては未初期化変数が、先に
初期値として設定された疑似不定値のままであればその
未初期化変数は不定変数であるとみなして不定値参照情
報出力プログラム1000に分岐し、またそうでなけれ
ば未初期化変数参照文(M二N)に移る。
第1図においては図面の繁雑化を回避するために1つの
未初期化変数参照文M−Nしか示していないので不定変
数判定処理プログラム12のみが挿入されるよう釦なっ
ているが、このような不定変数判定処理プログラムは未
初期化変数参照文ごとにその直前に挿入される。
未初期化変数参照文M−Nしか示していないので不定変
数判定処理プログラム12のみが挿入されるよう釦なっ
ているが、このような不定変数判定処理プログラムは未
初期化変数参照文ごとにその直前に挿入される。
第3に、不定値参照情報出力プログラム1000をプロ
グラム1に挿入する。不定値参照情報出力プログラム1
000では、不定変数を参照した事実を示すメツセージ
、プログラム名2行番号、変数名等を出力した後で不定
変数判定処理プログラム12に復帰する。
グラム1に挿入する。不定値参照情報出力プログラム1
000では、不定変数を参照した事実を示すメツセージ
、プログラム名2行番号、変数名等を出力した後で不定
変数判定処理プログラム12に復帰する。
以上のようにして再生された原始プログラムを実行する
と、参照時においても疑似不定値を有する変数は、疑似
不定値設定時点からその時までに定義されていないこと
になるので不定変数とみなされ、対応する不定値参照情
報を得ることができるようになり、プログラム名チェッ
カーはこれを見て不定値参照個所を把握できることKな
る。
と、参照時においても疑似不定値を有する変数は、疑似
不定値設定時点からその時までに定義されていないこと
になるので不定変数とみなされ、対応する不定値参照情
報を得ることができるようになり、プログラム名チェッ
カーはこれを見て不定値参照個所を把握できることKな
る。
(発明の効果)
本発明によれば、以上に説明したように、プログラム単
位に閉じた(ローカルな)変数に対する疑似不定値設定
文をそのプログラム単位に挿入し、グローバルな未初期
化変数に対する疑似不定値設定文を初期値設定副プログ
ラムに挿入しておくことにより、プログラム単位間で使
用する共通な変数やプログラム単位間で受は渡しされる
変数に対しても不定値参照の検出が可能になり、また、
未初期化変数参照文の直前に常に不定変数判定処理プロ
グラムを挿入しておくことにより、不定値参照の検出を
ダイナミックに行なえるようになるだめ、変数定義と変
数参照の先後関係に係りなくすべての不定値参照を検出
できるという効果がある。
位に閉じた(ローカルな)変数に対する疑似不定値設定
文をそのプログラム単位に挿入し、グローバルな未初期
化変数に対する疑似不定値設定文を初期値設定副プログ
ラムに挿入しておくことにより、プログラム単位間で使
用する共通な変数やプログラム単位間で受は渡しされる
変数に対しても不定値参照の検出が可能になり、また、
未初期化変数参照文の直前に常に不定変数判定処理プロ
グラムを挿入しておくことにより、不定値参照の検出を
ダイナミックに行なえるようになるだめ、変数定義と変
数参照の先後関係に係りなくすべての不定値参照を検出
できるという効果がある。
第1図は本発明の一実施例を説明するための図である。
Claims (1)
- 【特許請求の範囲】 入力された原始プログラムを解析して未初期化変数を抜
き出す解析部と、 該抜き出された未初期化変数に疑似不定値を初期値とし
て設定しておく文を前記原始プログラム内に挿入し、ま
た前記未初期化変数が前記疑似不定値と同値か否かを検
定し同値の場合にはエラー処理ルーチンに制御を渡す文
を前記原始プログラム中の前記未初期化変数を参照して
いる文の直前に挿入し、また不定値参照情報を出力した
後で前記分岐元に復帰する前記エラー処理ルーチンを前
記原始プログラムに追加する原始プログラム再生部 とを設け、該再生された原始プログラムを翻訳し実行す
ることにより不定値を有する変数の参照を検出するよう
にしたことを特徴とする不定値参照の検出方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP60258874A JPS62118448A (ja) | 1985-11-18 | 1985-11-18 | 不定値参照の検出方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP60258874A JPS62118448A (ja) | 1985-11-18 | 1985-11-18 | 不定値参照の検出方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPS62118448A true JPS62118448A (ja) | 1987-05-29 |
Family
ID=17326241
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP60258874A Pending JPS62118448A (ja) | 1985-11-18 | 1985-11-18 | 不定値参照の検出方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPS62118448A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677559A (zh) * | 2015-12-31 | 2016-06-15 | 杭州华为数字技术有限公司 | 一种检测方法及装置 |
JP6015778B2 (ja) * | 2013-01-21 | 2016-10-26 | 日産自動車株式会社 | 変数アクセス一貫性検査装置、変数アクセス一貫性検査方法、変数アクセス一貫性検査プログラム |
-
1985
- 1985-11-18 JP JP60258874A patent/JPS62118448A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6015778B2 (ja) * | 2013-01-21 | 2016-10-26 | 日産自動車株式会社 | 変数アクセス一貫性検査装置、変数アクセス一貫性検査方法、変数アクセス一貫性検査プログラム |
CN105677559A (zh) * | 2015-12-31 | 2016-06-15 | 杭州华为数字技术有限公司 | 一种检测方法及装置 |
CN105677559B (zh) * | 2015-12-31 | 2018-05-11 | 杭州华为数字技术有限公司 | 一种检测方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5987248A (en) | Debugging information display device | |
JPH0748182B2 (ja) | プログラム・エラー検出方法 | |
KR102117209B1 (ko) | 바이너리 취약점 패치 방법 및 장치 | |
JPS62118448A (ja) | 不定値参照の検出方式 | |
JPH06168111A (ja) | デバッグ文の自動作成方式 | |
JPH01177165A (ja) | 配列の定義/引用関係検査方式 | |
EP0526054A2 (en) | Monitoring execution of a computer program to provide test coverage analysis | |
JPS60179847A (ja) | 実配列および仮配列間の整合性チエツク方式 | |
GB2258063A (en) | Monitoring execution of a computer program to provide profile analysis | |
JP3165105B2 (ja) | プログラムのトレーサ、コンパイラ及びリンカー | |
JPS63174130A (ja) | 値が未設定の変数名の検出方式 | |
KR20240088450A (ko) | 보안체크코드의 유효성 점검 장치, 보안체크코드의 유효성 점검 방법 및 컴퓨터 프로그램 | |
JP2005141406A (ja) | コンパイラ検査システムおよび同プログラム | |
JPH04342037A (ja) | プログラムのオペランドチェック方式 | |
JPH05250221A (ja) | シミュレータ実行方式 | |
JPH01169641A (ja) | ソフトエラー検出方式 | |
JPH01154256A (ja) | プログラムのエラー位置検出方法 | |
US7627859B2 (en) | Method for configuring non-script language library files to be run as scripts | |
JPS621041A (ja) | 情報処理装置の診断回路 | |
JPH03235135A (ja) | プログラムの自動検査方式 | |
JPH01309125A (ja) | メモリ内容監視・比較・検出方式 | |
JPH06282442A (ja) | コンパイラ装置 | |
JPS62138932A (ja) | コンパイラ処理方式 | |
JPH04205355A (ja) | プログラム変数の使用検査装置 | |
JPH07271605A (ja) | C言語プログラムデバッグ方式 |