JPH0748182B2 - プログラム・エラー検出方法 - Google Patents
プログラム・エラー検出方法Info
- Publication number
- JPH0748182B2 JPH0748182B2 JP2333406A JP33340690A JPH0748182B2 JP H0748182 B2 JPH0748182 B2 JP H0748182B2 JP 2333406 A JP2333406 A JP 2333406A JP 33340690 A JP33340690 A JP 33340690A JP H0748182 B2 JPH0748182 B2 JP H0748182B2
- Authority
- JP
- Japan
- Prior art keywords
- simulated
- determination results
- whose execution
- instruction whose
- register
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Description
【発明の詳細な説明】 (技術分野) 本発明は、コンピュータのプログラミング技術に関し、
特に構文的に妥当である記述、即ち一般に誤った使い方
として類別することができるタイプの誤りを含まない記
述における論理的あるいは文脈的な不整合性を検出する
ためのアセンブリ言語のデバッグ・ツールに関する。
特に構文的に妥当である記述、即ち一般に誤った使い方
として類別することができるタイプの誤りを含まない記
述における論理的あるいは文脈的な不整合性を検出する
ためのアセンブリ言語のデバッグ・ツールに関する。
(背景技術) 当業者がよく理解するように、コンピュータ・プログラ
ミングは、マシン語において直接行われることはほとん
どない。その代わり、プログラミングは通常C、BASI
C、FORTRAN、COBOL、PASCAL等の比較的高級な言語形態
で行われる。BASICの場合は、結果として得られる「ソ
ース」プログラムは、個々のソース・コードのプログラ
ミング記述を読取りこれを記述ベースで使用中のハード
ウエアに適した機械命令に変換する機械に常駐するイン
タープリタ・プログラムを用いて実行することができ
る。これは比較的遅いプロセスである、しかし、実行可
能な即ち「オブジェクト」コードを与えられたハードウ
エア・タイプに対して最適のシーケンスで用意するよう
に特に生成されたコンパイラ・プログラムを介して最初
に処理することにより、BASICプログラムをより効率よ
く遥かに速く実行できる。コンパイル作業は、Cの如き
高級な多くのプログラムに対するプログラミングおよび
プログラム検証タスク中であっても、日常的に実施され
(実際に、要求され)ている。
ミングは、マシン語において直接行われることはほとん
どない。その代わり、プログラミングは通常C、BASI
C、FORTRAN、COBOL、PASCAL等の比較的高級な言語形態
で行われる。BASICの場合は、結果として得られる「ソ
ース」プログラムは、個々のソース・コードのプログラ
ミング記述を読取りこれを記述ベースで使用中のハード
ウエアに適した機械命令に変換する機械に常駐するイン
タープリタ・プログラムを用いて実行することができ
る。これは比較的遅いプロセスである、しかし、実行可
能な即ち「オブジェクト」コードを与えられたハードウ
エア・タイプに対して最適のシーケンスで用意するよう
に特に生成されたコンパイラ・プログラムを介して最初
に処理することにより、BASICプログラムをより効率よ
く遥かに速く実行できる。コンパイル作業は、Cの如き
高級な多くのプログラムに対するプログラミングおよび
プログラム検証タスク中であっても、日常的に実施され
(実際に、要求され)ている。
プログラマの内のある者は、コンパイルと似ているが遥
かに簡単な動作において「アセンブラ」プログラムで機
械レベルの命令に容易に移される、それほど高くないレ
ベルの、より機械に特定される「アセンブリ」と呼ばれ
る言語において作業することを好む。結果として得られ
るオブジェクト・コードは非常に効率がよい。しかし、
アセンプリが低レベルの言語である故に、アセンブラが
捕捉せず特にプログラムの検証(即ち「デバッグ」)プ
ロセスにおいて識別および対応しにくく把握しがたいプ
ログラミングの誤り(即ち「バグ」)を、コーディング
・プロセスにおいて非常に持ち込み易い。
かに簡単な動作において「アセンブラ」プログラムで機
械レベルの命令に容易に移される、それほど高くないレ
ベルの、より機械に特定される「アセンブリ」と呼ばれ
る言語において作業することを好む。結果として得られ
るオブジェクト・コードは非常に効率がよい。しかし、
アセンプリが低レベルの言語である故に、アセンブラが
捕捉せず特にプログラムの検証(即ち「デバッグ」)プ
ロセスにおいて識別および対応しにくく把握しがたいプ
ログラミングの誤り(即ち「バグ」)を、コーディング
・プロセスにおいて非常に持ち込み易い。
このようなはっきりしない種類の誤りの1つの種別は、
アセンブリ言語の記述が構文、限定、オペランドの定義
等が全て適正に包含される点で完全に合法なものである
が、それにも拘わらず正しく構成された記述が、前の動
作とは明らかに論理的に矛盾するものである。このよう
な種別の、はっきりしないプログラミングの誤りの早期
の検出が本発明の目的とするところである。
アセンブリ言語の記述が構文、限定、オペランドの定義
等が全て適正に包含される点で完全に合法なものである
が、それにも拘わらず正しく構成された記述が、前の動
作とは明らかに論理的に矛盾するものである。このよう
な種別の、はっきりしないプログラミングの誤りの早期
の検出が本発明の目的とするところである。
(発明の目的) 従って、本発明の主な目的は、アセンブリ言語で書かれ
たコンピュータ・プログラムのソースを分析するための
改善されたデバッグ・ツールの提供にある。
たコンピュータ・プログラムのソースを分析するための
改善されたデバッグ・ツールの提供にある。
本発明の更に特定の目的は、アセンブリ言語のソース・
コードにおいて、それ自体で考察すれば記述は正しい
が、前の動作の脈絡においては違法であるタイプのはっ
きりしないプログラミング・エラーを識別することがで
きるデバッグ・プログラムの提供にある。
コードにおいて、それ自体で考察すれば記述は正しい
が、前の動作の脈絡においては違法であるタイプのはっ
きりしないプログラミング・エラーを識別することがで
きるデバッグ・プログラムの提供にある。
(発明の概要) 要約すれば、本発明の上記および他の目的は、各命令の
機能、およびこれが影響を及ぼすレジスタ、フラッグ等
の如き特定の機械のアーキテクチャを完全に知悉したデ
バッグ・プログラムの提供により達成される。対応する
命令を実行しながら、コンピュータと丁度同じ方法でア
センブリ言語の記述に実質的に立ち入ることにより、デ
バッグ・プログラムは、このような検査により、問題と
なるアセンブリ言語プログラムにおいて、デバッグ・プ
ログラムが検出し、かつこのような検出と同時に適当な
警告メッセージを発するするようコード化された、前の
動作との特定の潜在的な不整合を識別することができ
る。次いで、プログラマはフラッグを付したアセンブリ
言語コードを調べて真正の誤りが存在するかどうかを判
定することができる。
機能、およびこれが影響を及ぼすレジスタ、フラッグ等
の如き特定の機械のアーキテクチャを完全に知悉したデ
バッグ・プログラムの提供により達成される。対応する
命令を実行しながら、コンピュータと丁度同じ方法でア
センブリ言語の記述に実質的に立ち入ることにより、デ
バッグ・プログラムは、このような検査により、問題と
なるアセンブリ言語プログラムにおいて、デバッグ・プ
ログラムが検出し、かつこのような検出と同時に適当な
警告メッセージを発するするようコード化された、前の
動作との特定の潜在的な不整合を識別することができ
る。次いで、プログラマはフラッグを付したアセンブリ
言語コードを調べて真正の誤りが存在するかどうかを判
定することができる。
本発明は、その構成および作動方法の双方に関して、以
降の記述を頭書の特許請求の範囲ならびに添付図面に関
して参照することにより最もよく理解することができよ
う。
降の記述を頭書の特許請求の範囲ならびに添付図面に関
して参照することにより最もよく理解することができよ
う。
(実施例) 先に述べたように、遭遇する特に発見が難しいプログラ
ムの1つの種別のバグは、構文、限定、オペランドの定
義等に関する限りアセンブリ言語のソース・コード記述
が全く正しいが、それにも拘わらず正しく構成された記
述が論理的に前の動作と矛盾するものである。このよう
な不整合は、下記のものを含む。即ち、 1.前の比較命令により設定される指標がテストあるいは
記憶されず、その時の命令がこれらの指標を変更させる
ことになる。
ムの1つの種別のバグは、構文、限定、オペランドの定
義等に関する限りアセンブリ言語のソース・コード記述
が全く正しいが、それにも拘わらず正しく構成された記
述が論理的に前の動作と矛盾するものである。このよう
な不整合は、下記のものを含む。即ち、 1.前の比較命令により設定される指標がテストあるいは
記憶されず、その時の命令がこれらの指標を変更させる
ことになる。
2.その時の命令が、前に修飾されたが修飾子として記憶
されずあるいは使用されなかったレジスタをロード(従
って、破壊)することになる。
されずあるいは使用されなかったレジスタをロード(従
って、破壊)することになる。
3.レジスタの上あるいは下の半分がある前の動作により
強制的にクリアされるが、この半分のレジスタがオペラ
ンドあるいは修飾子として使用される。強制的なクリア
は、シフト、ロードあるいは「AND」動作の結果であ
る。
強制的にクリアされるが、この半分のレジスタがオペラ
ンドあるいは修飾子として使用される。強制的なクリア
は、シフト、ロードあるいは「AND」動作の結果であ
る。
4.条件付き移転が前の動作により影響を受けなかった指
標に基いて試みられる。
標に基いて試みられる。
5.その内容がシステムのサービス機能により破壊された
ことが知られているレジスタが、この機能を惹起した後
再びロードされることなく修飾子として使用するために
この時呼出される。
ことが知られているレジスタが、この機能を惹起した後
再びロードされることなく修飾子として使用するために
この時呼出される。
6.あるタイプのアドレス修飾の脈絡において前に現れた
記号が、この時異なるタイプの文脈において使用するた
めに呼出される。
記号が、この時異なるタイプの文脈において使用するた
めに呼出される。
7.リンケージ用の所定の指標レジスタを用いるために以
前に検査されたサブルーチンが、この時異なる指標レジ
スタを用いて呼出される。
前に検査されたサブルーチンが、この時異なる指標レジ
スタを用いて呼出される。
問題の種別のデバッグ・プログラムの一般的なシーケン
スを示す高レベルのフローチャートである第1図を、最
初に参照する。デバッグのセットアップにおける最初の
ステップとして、オブジェクト・コードが生成されるべ
き機械のアーキテクチャのいくつかの実質的な特質を、
当業者には周知の方法でソフトウエアで表現する。単に
1つの事例として簡単に触れれば、あるアドレスが2つ
のソースからの情報を組合わせることにより(オブジェ
クト・コードが生成されるべき機械において)発生され
る場合を考えよう。この特徴の事実は、アセンブリ言語
の記述が一時に1つずつ調べられる時何が情報ソースお
よびアドレスに起こるかを追跡するためのコードと共
に、デバッグ・プログラムに対してコード化される。こ
こで、もしソースの1つが前の動作により破壊されて、
アドレス生成の際のその使用の前に意味のある情報で再
ロードされなかったと判定し得るならば、全ての関連す
るソース・コードが完全に正しい文脈であっても、おそ
らくはなにかの誤りがある。
スを示す高レベルのフローチャートである第1図を、最
初に参照する。デバッグのセットアップにおける最初の
ステップとして、オブジェクト・コードが生成されるべ
き機械のアーキテクチャのいくつかの実質的な特質を、
当業者には周知の方法でソフトウエアで表現する。単に
1つの事例として簡単に触れれば、あるアドレスが2つ
のソースからの情報を組合わせることにより(オブジェ
クト・コードが生成されるべき機械において)発生され
る場合を考えよう。この特徴の事実は、アセンブリ言語
の記述が一時に1つずつ調べられる時何が情報ソースお
よびアドレスに起こるかを追跡するためのコードと共
に、デバッグ・プログラムに対してコード化される。こ
こで、もしソースの1つが前の動作により破壊されて、
アドレス生成の際のその使用の前に意味のある情報で再
ロードされなかったと判定し得るならば、全ての関連す
るソース・コードが完全に正しい文脈であっても、おそ
らくはなにかの誤りがある。
テストされるアセンブリ言語のソース・コード・プログ
ラムが調べられ分析される時、種々のテストをステップ
毎に実施することができ、テストの失敗の結果としてプ
ログラマの便益となるように適当なエラー・メッセージ
の発現を生じるようにできる。しかし、本発明は、デバ
ッグ・プログラムの独立的なモジュールにおける上記の
論理的な不整合に対する一連の関連したテストに関する
ものであり、「前の動作と矛盾するか?」の照会ブロッ
クにより第1図に示される。主な一連のテストの完了
後、ソース・コード・プログラムあるいはプログラム・
モジュールのテストを終わるためデバッグ・プログラム
に残る他のテストを実行することができる。
ラムが調べられ分析される時、種々のテストをステップ
毎に実施することができ、テストの失敗の結果としてプ
ログラマの便益となるように適当なエラー・メッセージ
の発現を生じるようにできる。しかし、本発明は、デバ
ッグ・プログラムの独立的なモジュールにおける上記の
論理的な不整合に対する一連の関連したテストに関する
ものであり、「前の動作と矛盾するか?」の照会ブロッ
クにより第1図に示される。主な一連のテストの完了
後、ソース・コード・プログラムあるいはプログラム・
モジュールのテストを終わるためデバッグ・プログラム
に残る他のテストを実行することができる。
次に、他の点では正しい属性であるにも拘わらず、テス
ト中のソース・コード・プログラムあるいはプログラム
・モジュールにより呼出される以前の動作と与えられた
記述との不整合が調べられる、本アセンブリ言語のソー
ス・コード・テスト・モジュールの作動を示す詳細なフ
ローチャートである第2図を(即ち、第2A図および第2B
図を一緒に)参照する。以下の論議においては、1つの
記述が1つの機械言語の命令と非常に密に関連するよう
にアセンブリ言語ソース・コードの使用を仮定する。
ト中のソース・コード・プログラムあるいはプログラム
・モジュールにより呼出される以前の動作と与えられた
記述との不整合が調べられる、本アセンブリ言語のソー
ス・コード・テスト・モジュールの作動を示す詳細なフ
ローチャートである第2図を(即ち、第2A図および第2B
図を一緒に)参照する。以下の論議においては、1つの
記述が1つの機械言語の命令と非常に密に関連するよう
にアセンブリ言語ソース・コードの使用を仮定する。
このため、検査中のソース・コード・プログラムあるい
はプログラム・モジュールの初めから始めて、次の記述
が分析のため呼出される。もしこれがファイル終りの記
述であるならば、次の一連のテストへ出、もしそうでな
ければ、これが単にコメント(分析の必要がない)であ
るかどうかの判定がなされる。もしこれがコメントであ
れば、次の記述が呼出され、もしそうでなければ、分析
は然るべく進む。
はプログラム・モジュールの初めから始めて、次の記述
が分析のため呼出される。もしこれがファイル終りの記
述であるならば、次の一連のテストへ出、もしそうでな
ければ、これが単にコメント(分析の必要がない)であ
るかどうかの判定がなされる。もしこれがコメントであ
れば、次の記述が呼出され、もしそうでなければ、分析
は然るべく進む。
最初の照会は、1つの命令が指標即ちフラッグを変更す
るかどうかである。もし変更するなら、以前の命令もま
た指標をセットしたかどうかについて判定がなされ、も
しセットしたなら、指標の状態が中間で仕様されたかど
うか判定する。もし以前の命令が命令をセットするがそ
れらについて中間で使用がなされず、しかもこの時指標
が再びセットされるならば、論理的な不整合が存在し
得、その意味の特定のエラー・メッセージが発されてプ
ログラマに対して潜在的問題を警告する。もし検査中の
記述が指標のセッティングを含まなければ、あるいは含
むが前の指標セッティングが実際に適法に使用されたな
らば、モジュール内の次のテストを行うことができる。
るかどうかである。もし変更するなら、以前の命令もま
た指標をセットしたかどうかについて判定がなされ、も
しセットしたなら、指標の状態が中間で仕様されたかど
うか判定する。もし以前の命令が命令をセットするがそ
れらについて中間で使用がなされず、しかもこの時指標
が再びセットされるならば、論理的な不整合が存在し
得、その意味の特定のエラー・メッセージが発されてプ
ログラマに対して潜在的問題を警告する。もし検査中の
記述が指標のセッティングを含まなければ、あるいは含
むが前の指標セッティングが実際に適法に使用されたな
らば、モジュール内の次のテストを行うことができる。
次に、検査中の記述が記述が与えられたレジスタをロー
ドあるいは修飾するかどうかを判定するために照会が行
われる。もしそうであれば、以前の命令も同じレジスタ
をロードあるいは修飾したかどうかについて判定が行わ
れ、もしそうであれば、レジスタ内容が中間で使用され
たかどうかの判定がなされる。もし前の命令がレジスタ
をロードあるいは修飾したがその内容が中間で使用され
ず、レジスタが再びロードあるいは修飾されるならば、
論理的な不整合が存在し得、またその旨の特定の警告メ
ッセージが発されてプログラマに潜在的な問題を警告す
る。もし検査中の記述がレジスタのローディングあるい
は修飾を生じないか、あるいは生じてもレジスタ内容が
実際に適法に使用されていたならば、モジュールにおけ
る次のテストを行うことができる。
ドあるいは修飾するかどうかを判定するために照会が行
われる。もしそうであれば、以前の命令も同じレジスタ
をロードあるいは修飾したかどうかについて判定が行わ
れ、もしそうであれば、レジスタ内容が中間で使用され
たかどうかの判定がなされる。もし前の命令がレジスタ
をロードあるいは修飾したがその内容が中間で使用され
ず、レジスタが再びロードあるいは修飾されるならば、
論理的な不整合が存在し得、またその旨の特定の警告メ
ッセージが発されてプログラマに潜在的な問題を警告す
る。もし検査中の記述がレジスタのローディングあるい
は修飾を生じないか、あるいは生じてもレジスタ内容が
実際に適法に使用されていたならば、モジュールにおけ
る次のテストを行うことができる。
次に、もし検査中の記述が半分のレジスタを構成する直
接のオペランドあるいは修飾子を使用するならば、その
使用の妥当性についての判定が行われる。例えば、もし
前の動作の結果指定された半レジスタを強制的にクリア
したならば、これはおそらくは他の半レジスタを使用す
るプログラマの意図であったものであり、適当な警告メ
ッセージが発される。強制的なクリアはシフト、直接オ
ペランド・ロードあるいは論理的AND動作の結果であり
得る。
接のオペランドあるいは修飾子を使用するならば、その
使用の妥当性についての判定が行われる。例えば、もし
前の動作の結果指定された半レジスタを強制的にクリア
したならば、これはおそらくは他の半レジスタを使用す
るプログラマの意図であったものであり、適当な警告メ
ッセージが発される。強制的なクリアはシフト、直接オ
ペランド・ロードあるいは論理的AND動作の結果であり
得る。
次に、テスト中の記述は、条件付き転送を呼出すかどう
かを判定するため調べられる。もし呼出さなければ、一
続きの次のテストが行われる。もし呼出せば、テスト中
の指標が前の比較あるいはロード命令により影響を受け
たかどうかについて判定が行われる。もし指標が影響を
受けなかったならば、正しくないテストが行われている
可能性があり、適当な警告メッセージが発される。
かを判定するため調べられる。もし呼出さなければ、一
続きの次のテストが行われる。もし呼出せば、テスト中
の指標が前の比較あるいはロード命令により影響を受け
たかどうかについて判定が行われる。もし指標が影響を
受けなかったならば、正しくないテストが行われている
可能性があり、適当な警告メッセージが発される。
次に、この時修飾子あるいはオペランドとして使用され
るよう呼出されつつあるレジスタの内容を破壊したシス
テム・サービス機能が前に行われ、その後該レジスタが
再びロードされることがなかったかどうかの判定がなさ
れる。もしそうであれば、レジスタ内容が要求に対して
不当であり、レジスタの使用は正しくなく、警告メッセ
ージが発される。
るよう呼出されつつあるレジスタの内容を破壊したシス
テム・サービス機能が前に行われ、その後該レジスタが
再びロードされることがなかったかどうかの判定がなさ
れる。もしそうであれば、レジスタ内容が要求に対して
不当であり、レジスタの使用は正しくなく、警告メッセ
ージが発される。
次に、アドレス・フィールドあるいは修飾子フィールド
において記号が使用されたかどうかの判定が行われ、も
しそうであれば、記号が前に競合する文脈において現れ
たかどうかの判定が行われる。もし記号の使用が不適性
ならば、警告メッセージが生成される。
において記号が使用されたかどうかの判定が行われ、も
しそうであれば、記号が前に競合する文脈において現れ
たかどうかの判定が行われる。もし記号の使用が不適性
ならば、警告メッセージが生成される。
もし記号の使用が適正であれば、サブルーチンが呼出さ
れつつあるかどうかについて判定が行われる。もしそう
でなければ、検査中の記述は前の動作と矛盾しないと考
えることができ、次の記述を分析のため取り上げること
ができる。しかし、もしサブルーチンが呼出されつつあ
るならば、これ以上の分析が必要である。もしサブルー
チンが前に呼出されなかったならば、検査中の記述は前
の動作と矛盾しないと考えることができ、次の記述を分
析のため取り上げることができる。しかし、もしこのサ
ブルーチンが前に呼出されたならば、同じリンク・レジ
スタが使用されたかどうかの判定が必要であり、もしそ
うであれば、次の記述を呼出すことができるが、もしそ
うでなければ、警告メッセージが発される。
れつつあるかどうかについて判定が行われる。もしそう
でなければ、検査中の記述は前の動作と矛盾しないと考
えることができ、次の記述を分析のため取り上げること
ができる。しかし、もしサブルーチンが呼出されつつあ
るならば、これ以上の分析が必要である。もしサブルー
チンが前に呼出されなかったならば、検査中の記述は前
の動作と矛盾しないと考えることができ、次の記述を分
析のため取り上げることができる。しかし、もしこのサ
ブルーチンが前に呼出されたならば、同じリンク・レジ
スタが使用されたかどうかの判定が必要であり、もしそ
うであれば、次の記述を呼出すことができるが、もしそ
うでなければ、警告メッセージが発される。
第2図に示された本発明の実施例によれば、警告メッセ
ージの発生の都度、検査中のアセンブリ言語のソース・
コード・プログラム全体またはプログラム・モジュール
により、デバッグ・プログラムは直ちにオンの状態を続
け、第2図に示されるように次の記述を分析のため呼出
すことができる。このため、警告メッセージの全グルー
プを1つのグループとして見ることができ、ソース・コ
ードを適当に訂正するため、バグあるいは可能性のある
バグ間に相互関係があることを認識する。あるいはま
た、当業者は、また本プログラムにより検出し得る種類
の「残りの最初の」バグあるいは潜在的なバグがプログ
ラマによってアドレス指定できるよう、各警告メッセー
ジが発された後終了するようにその実行ができるように
デバッグ・プログラムが容易に改訂できることを理解し
よう。しかし、経験によれば、第2図に示される作動モ
ードが選好されることが判る。
ージの発生の都度、検査中のアセンブリ言語のソース・
コード・プログラム全体またはプログラム・モジュール
により、デバッグ・プログラムは直ちにオンの状態を続
け、第2図に示されるように次の記述を分析のため呼出
すことができる。このため、警告メッセージの全グルー
プを1つのグループとして見ることができ、ソース・コ
ードを適当に訂正するため、バグあるいは可能性のある
バグ間に相互関係があることを認識する。あるいはま
た、当業者は、また本プログラムにより検出し得る種類
の「残りの最初の」バグあるいは潜在的なバグがプログ
ラマによってアドレス指定できるよう、各警告メッセー
ジが発された後終了するようにその実行ができるように
デバッグ・プログラムが容易に改訂できることを理解し
よう。しかし、経験によれば、第2図に示される作動モ
ードが選好されることが判る。
以上の如く、本発明の原理は実施例において明瞭になっ
たであろうが、当業者には、これら原理から逸脱するこ
となく、特定の環境および作動要件に特に適合する本発
明の実施に際して用いられるプログラム構造の多くの修
正は明瞭であろう。
たであろうが、当業者には、これら原理から逸脱するこ
となく、特定の環境および作動要件に特に適合する本発
明の実施に際して用いられるプログラム構造の多くの修
正は明瞭であろう。
第1図は本発明が包含されるデバッグ・プログラムの一
般的なシーケンスを示す高レベルのフローチャート、お
よび第2図は本発明が包含されるデバッグ・モジュール
の構造を開示する更に詳細なフローチャートである。
般的なシーケンスを示す高レベルのフローチャート、お
よび第2図は本発明が包含されるデバッグ・モジュール
の構造を開示する更に詳細なフローチャートである。
Claims (10)
- 【請求項1】一連のソース・コード記述からなるコンピ
ュータ・プログラムにおける潜在的なエラーの1つのク
ラスを検出する方法であって、 (A)前記コンピュータ・プログラムのコンパイルされ
たものが実行されるコンピュータのアーキテクチャのソ
フトウエア表現を確立し、 (B)前記ソース・コード記述の一つを取得し、 (C)前記記述によって指示された操作を分析して、前
記操作の実行結果が以前の操作の実行結果と矛盾するか
どうかを判定するために前記分析を前記アーキテクチャ
に適用し、もし、 1)矛盾するなら、警告メッセージを発生し、 2)矛盾しないなら、ステップ(D)へ進み、 (D)前記一連のソース・コード記述から次のソース・
コード記述を取得してステップ(C)へ戻る、 ステップを含むことを特徴とする方法。 - 【請求項2】ステップ(C)内で、前記警告メッセージ
の発生の後にステップ(D)へ進むことを特徴とする、
請求項1記載の方法。 - 【請求項3】ステップ(C)内で、前の比較命令により
セットされる指標がテストあるいは記憶されなかったか
どうかと、実行がシミュレートされる命令が指標を変更
させるかどうかを判定するサブステップと、その肯定判
定がステップ(C)1)を生じ、否定判定がステップ
(C)2)を生じることとを含むことを特徴とする請求
項2記載の方法。 - 【請求項4】ステップ(C)内で、実行がシミュレート
される命令が、前に修飾されたが修飾子として記憶ある
いは使用されなかったレジスタをロードするかどうかを
判定するサブステップと、その肯定判定がステップ
(C)1)を生じ、否定判定がステップ(C)2)を生
じることとを含むことを特徴とする請求項2記載の方
法。 - 【請求項5】ステップ(C)内で、実行がシミュレート
される命令が、強制クリアにより最後に影響を受けたレ
ジスタ・セグメントをオペランドあるいは修飾子として
用いるかどうかを判定するサブステップと、その肯定判
定がステップ(C)1)を生じ、否定判定がステップ
(C)2)を生じることとを含むことを特徴とする請求
項2記載の方法。 - 【請求項6】ステップ(C)内で、実行がシミュレート
される命令が、前の動作により影響を受けなかった指標
に基く条件付き転送を試みるかどうかを判定するサブス
テップと、その肯定判定がステップ(C)1)を生じ、
否定判定がステップ(C)2)を生じることとを含むこ
とを特徴とする請求項2記載の方法。 - 【請求項7】ステップ(C)内で、実行がシミュレート
される命令が、システム・サービス機能により前に破壊
されたレジスタを修飾子として使用しようと試みるかど
うかを判定するサブステップと、その肯定判定がステッ
プ(C)1)を生じ、否定判定がステップ(C)2)を
生じることとを含むことを特徴とする請求項2記載の方
法。 - 【請求項8】ステップ(C)内で、実行がシミュレート
される命令が、異なる文脈において前に現れた記号をア
ドレス修飾の与えられた文脈において使用しようと試み
るかどうかを判定するサブステップと、その肯定判定が
ステップ(C)1)を生じ、否定判定がステップ(C)
2)を生じることとを含むことを特徴とする請求項2記
載の方法。 - 【請求項9】ステップ(C)内で、実行がシミュレート
される命令が、リンクのため与えられた標識レジスタを
用いてサブルーチンを呼出すかどうかを判定するサブス
テップと、その肯定判定がステップ(C)1)を生じ、
否定判定がステップ(C)2)を生じることとを含むこ
とを特徴とする請求項2記載の方法。 - 【請求項10】ステップ(C)1)の実施後終了するス
テップを更に含むことを特徴とする請求項2記載の方
法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/443,680 US5132972A (en) | 1989-11-29 | 1989-11-29 | Assembly language programming potential error detection scheme sensing apparent inconsistency with a previous operation |
US443680 | 1989-11-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH03188535A JPH03188535A (ja) | 1991-08-16 |
JPH0748182B2 true JPH0748182B2 (ja) | 1995-05-24 |
Family
ID=23761776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2333406A Expired - Lifetime JPH0748182B2 (ja) | 1989-11-29 | 1990-11-29 | プログラム・エラー検出方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US5132972A (ja) |
EP (1) | EP0430182B1 (ja) |
JP (1) | JPH0748182B2 (ja) |
AU (1) | AU629707B2 (ja) |
CA (1) | CA2030227C (ja) |
DE (1) | DE69026208T2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021149113A1 (ja) * | 2020-01-20 | 2021-07-29 | 富士通株式会社 | プロセッサ、シミュレータプログラム、アセンブラプログラム、及び情報処理プログラム |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5450575A (en) * | 1991-03-07 | 1995-09-12 | Digital Equipment Corporation | Use of stack depth to identify machine code mistakes |
US5193180A (en) * | 1991-06-21 | 1993-03-09 | Pure Software Inc. | System for modifying relocatable object code files to monitor accesses to dynamically allocated memory |
FR2718868B1 (fr) * | 1994-04-18 | 1996-05-31 | Bull Sa | Procédé de détection d'interblocages dans les systèmes multiprocesseurs à mémoire partagée. |
US5613063A (en) * | 1994-07-01 | 1997-03-18 | Digital Equipment Corporation | Method and apparatus for checking validity of memory operations |
JPH08185326A (ja) * | 1994-12-28 | 1996-07-16 | Fujitsu Ltd | インタープリタ言語処理装置 |
US5699507A (en) * | 1995-01-17 | 1997-12-16 | Lucent Technologies Inc. | Method of identifying similarities in code segments |
JP2850808B2 (ja) * | 1995-10-31 | 1999-01-27 | 日本電気株式会社 | データ処理装置およびデータ処理方法 |
US5805893A (en) * | 1996-03-01 | 1998-09-08 | Electronic Data Systems Corporation | Assembly language program converter |
US5854924A (en) * | 1996-08-08 | 1998-12-29 | Globetrotter Software, Inc. | Static debugging tool and method |
DE19731733C1 (de) * | 1997-07-23 | 1998-10-01 | Siemens Nixdorf Inf Syst | Verfahren zum Testen eines Assemblerprogramms auf Portabilität |
US6314557B1 (en) * | 1998-12-14 | 2001-11-06 | Infineon Technologies Development Center Tel Aviv Ltd | Hybrid computer programming environment |
AU3889200A (en) * | 1999-03-15 | 2000-10-04 | Smartsan Systems, Inc. | System and method of event management and early fault detection |
US6675295B1 (en) * | 2000-06-19 | 2004-01-06 | Microsoft Corporation | Method and computer system for detecting and correcting a failure in a computer application program during startup |
US7284274B1 (en) * | 2001-01-18 | 2007-10-16 | Cigital, Inc. | System and method for identifying and eliminating vulnerabilities in computer software applications |
US7290174B1 (en) * | 2003-12-03 | 2007-10-30 | Altera Corporation | Methods and apparatus for generating test instruction sequences |
US8959493B2 (en) | 2011-06-27 | 2015-02-17 | International Business Machines Corporation | Using range validation in assembly language programming |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61110240A (ja) * | 1984-10-31 | 1986-05-28 | インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション | 最適化コンパイラ |
JPS63304336A (ja) * | 1987-06-04 | 1988-12-12 | Nec Corp | 計算機言語記述の矛盾摘出解消方式 |
EP0321000A3 (en) * | 1987-12-18 | 1990-08-01 | Nec Corporation | Assembler system |
JP2803090B2 (ja) * | 1988-06-06 | 1998-09-24 | 富士ゼロックス株式会社 | Mpuシミュレーション方法及びmpuシミュレータ |
-
1989
- 1989-11-29 US US07/443,680 patent/US5132972A/en not_active Expired - Fee Related
-
1990
- 1990-11-19 CA CA002030227A patent/CA2030227C/en not_active Expired - Fee Related
- 1990-11-20 AU AU66799/90A patent/AU629707B2/en not_active Ceased
- 1990-11-27 DE DE69026208T patent/DE69026208T2/de not_active Expired - Fee Related
- 1990-11-27 EP EP90122673A patent/EP0430182B1/en not_active Expired - Lifetime
- 1990-11-29 JP JP2333406A patent/JPH0748182B2/ja not_active Expired - Lifetime
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021149113A1 (ja) * | 2020-01-20 | 2021-07-29 | 富士通株式会社 | プロセッサ、シミュレータプログラム、アセンブラプログラム、及び情報処理プログラム |
JPWO2021149113A1 (ja) * | 2020-01-20 | 2021-07-29 |
Also Published As
Publication number | Publication date |
---|---|
DE69026208D1 (de) | 1996-05-02 |
EP0430182B1 (en) | 1996-03-27 |
CA2030227C (en) | 1994-07-05 |
EP0430182A2 (en) | 1991-06-05 |
JPH03188535A (ja) | 1991-08-16 |
AU6679990A (en) | 1991-06-06 |
US5132972A (en) | 1992-07-21 |
CA2030227A1 (en) | 1991-05-30 |
AU629707B2 (en) | 1992-10-08 |
EP0430182A3 (en) | 1992-03-11 |
DE69026208T2 (de) | 1996-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8266608B2 (en) | Post-compile instrumentation of object code for generating execution trace data | |
US5651111A (en) | Method and apparatus for producing a software test system using complementary code to resolve external dependencies | |
CN101286132B (zh) | 一种基于软件缺陷模式的测试方法及系统 | |
US5778230A (en) | Goal directed object-oriented debugging system | |
US9152531B2 (en) | Post-compile instrumentation of object code for generating execution trace data | |
US8572572B2 (en) | Dynamic source code analyzer | |
EP0775342B1 (en) | Computer process resource modelling method and apparatus | |
US7761855B2 (en) | Computer program product and system for altering execution flow of a computer program | |
JPH0748182B2 (ja) | プログラム・エラー検出方法 | |
JPH05257709A (ja) | 並列化判別方法およびそれを用いた並列化支援方法 | |
JP2003050715A (ja) | コンパイラおよびデバッグ装置 | |
KR20100106409A (ko) | 다중 언어 소프트웨어 코드 분석 | |
US20080127118A1 (en) | Method and system for dynamic patching of software | |
CN113836023B (zh) | 一种基于体系结构交叉检查的编译器安全性测试方法 | |
JP6357814B2 (ja) | 未完成ソフトウェアの分析 | |
EP0801348A1 (en) | Method of monitoring the operation of a computer | |
US5029170A (en) | Assembly language programming potential error detection scheme which recognizes incorrect symbolic or literal address constructs | |
JPH10293683A (ja) | プログラムの比較解析装置、プログラムの比較解析方法、及びプログラムの比較解析プログラムを記録した機械読み取り可能な記録媒体 | |
Nielsen | Static Analysis for Node. js | |
Leroy | Formally verifying a compiler: what does it mean, exactly? | |
US7627859B2 (en) | Method for configuring non-script language library files to be run as scripts | |
Kallingal Joshy | Computing change of invariants to support software evolution | |
Charlton et al. | Program monitoring and analysis: Software structures and architectural support | |
JPH01155438A (ja) | コンパイラ試験方式 | |
Joshy | Computing change of invariants to support software evolution |