JPH07295859A - プログラムの動的特性の決定 - Google Patents

プログラムの動的特性の決定

Info

Publication number
JPH07295859A
JPH07295859A JP7092036A JP9203695A JPH07295859A JP H07295859 A JPH07295859 A JP H07295859A JP 7092036 A JP7092036 A JP 7092036A JP 9203695 A JP9203695 A JP 9203695A JP H07295859 A JPH07295859 A JP H07295859A
Authority
JP
Japan
Prior art keywords
program
information
debugger
execution environment
source code
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
JP7092036A
Other languages
English (en)
Inventor
Premkumar T Devanbu
トーマス デヴァンブ プレムクマー
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.)
AT&T Corp
Original Assignee
American Telephone and Telegraph Co Inc
AT&T 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 American Telephone and Telegraph Co Inc, AT&T Corp filed Critical American Telephone and Telegraph Co Inc
Publication of JPH07295859A publication Critical patent/JPH07295859A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software 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)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【目的】 プログラムの動的特性に関する情報を得るた
めの技法を提供する。 【構成】 この技法は、プログラマブル実行環境、例え
ば、デバッガを、プログラムがその実行環境内で実行さ
れたとき、実行の副作用が動的特性に関する情報を提供
するようにプログラミングするステップを含む。実行環
境に対するプログラムは、ソースコードを静的に分析す
るソースコードアナライザによって生成される。一方、
このソースコードアナライザは、コードアナライザジェ
ネレータによって生成される。実行環境からの出力は、
グラフィック表示システムに提供される。この技法の一
つの用途においては、コードアナライザジェネレータ
は、実行環境のためのプログラムを生成するためのソー
スコードアナライザを生成するのみでなく、グラフィッ
クブラウザによって実行されたときプログラムに対する
フローグラフを作成するプログラムを生成するためのソ
ースコードアナライザも生成する。この場合は、グラフ
ィックブラウザは、実行環境からの出力に応答して、フ
ローグラフのアピアランス(外観)を修正する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は一般的にはソフトウエア
のテストと検証、より具体的には、プログラムの動的特
性の決定に関する。
【0002】
【従来の技術】大きなプログラムを開発する場合、しば
しば、動的特性、つまりプログラムの実行によってのみ
決定することができる特性に関する知識を得ることが重
要となる。通常、動的特性は、プログラムの通常の動作
の際には見ることができない情報を含む。プログラムP
とこのプログラムに対するセットの入力Iとの関係での
これら動的特性の一例は以下の通りである。 1.入力Iと共にランされた場合、Pがその全ての関数
を実行するか? 2.入力Iと共にランされた場合、Pがその全てのIF
ステートメントを両方向に実行するか? 3.入力Iと共にランされた場合、struct person*のタ
イプであることが知られているポインタ変数aPerson が
struct person のタイプでないオブジェクトをポイント
するようなことが起こらないか?
【0003】上の情報とこれに類似する他の情報を外部
から見えるようにするためには、プログラムをそれが要
求される情報を含む出力を生成するような方法にてイン
ストラメントすることがことが必要となる。このインス
トラメンテーションは、プログラムの構築のプロセスの
際に、つまり、ソースコードをオブジェクトコードにコ
ンパイルし、オブジェクトコードを実行可能なコードを
生成するためにリンクするプロセスの際に遂行すること
ができ、これは、実行可能コード自身に関して遂行する
ことができる。
【0004】プログラム構築の際にプログラムをインス
トラメントする一つの方法は、単に、ソースコードにイ
ンストラメンテーションに対するコードを加え、オブジ
ェクトコードを生成する方法である。このオブジェクト
コードは、勿論、ソースコードに加えられたインストラ
メンテーションコードに対応するコードを含む。これを
遂行するもう一つの方法は、オブジェクトコードに必要
なインストラメンテーションを加える特別なコンパイラ
を使用してソースコードをコンパイルする方法である。
第一の方法、つまり、ソースコードにインストラメンテ
ーションを加える方法は非常に汎用的であり、適用でき
るインストラメンテーションのタイプは、プログラマの
創意によってのみ制約される。短所は、勿論、インスト
ラメンテーションを適用することがソースコードを修正
することを意味し、従って、調査されているソースコー
ドはもはや元のソースコードではなくなることである。
【0005】変換されたコードを生成するために専用の
コンパイラを使用する方法は、ソースコードの変更を必
要としないが、ただし、汎用性に欠け、その特定のコン
パイラによって提供されたタイプのインストラメンテー
ションのみが適用を許される。他のタイプのインストラ
メンテーションは、他の専用のコンパイラ、さらには、
現存の専用のコンパイラの修正を必要とする。このよう
な専用のコンパイラの一例としては、良く知られている
UNIXオペレーティングシステム(UNIXはXOPENの登録商
標である)下で動作するコンピュータシステム上で利用
できるlcc 或はcc -p がある。プログラムをインストラ
メントするためのこれら技法の全ては、これが構築され
るとき、構築プロセスが非常に複雑であり、また、しば
しば、その構築プロセスによって構築されたプログラム
のインストラメントされたバージョンが機能的にその構
築プロセスが顧客に対して構築したバージョンと同等で
あることを保証することが困難であるという問題を持
つ。
【0006】さらに、プログラムが構築された後にプロ
グラムのオブジェクトコードをインストラメントするた
めのツールが存在する。このようなツールの一例として
は、Pure Software,Inc.(1309 S.Mary Ave. Sunnyval
e,CA 所在)から市販されているPURIFYが存在するが、
これは、マシンコードシーケンスの特別なパターンとコ
ンパイラコード生成技法を利用して、調査中の特性と関
係のある二進コード内の位置を見つけ出す。PURIFYに代
表されるツールの短所は、各ツールは小さな固定された
セットの特性の調査のみに使用でき、また、プロセッサ
の各異なるクラスに対してツールのある特定のバージョ
ンが必要とされ、また、携帯性にも欠けることである。
【0007】図1はすぐ上に説明されたタイプのシステ
ムの概念上の概観を示す。通常の状況においては、一つ
或はそれ以上のプログラムのシステム102は、入力1
01と共に、実行環境104内でランする。このような
条件下においては、内部特性、例えば、“このシステム
が入力101上の全ての関数を実行するか”といったこ
とは決定することができない。内部特性を決定するため
には、我々は、システムの変換されたバージョン105
を構築するが、これはシステム102の実行の際に要求
された特性と関連する何かが起こると副作用を生成する
ようにインストラメントされる。
【0008】例えば、ある人がシステム102が入力1
01と共に実行されたときその機能の全てを実行するか
知りたい場合、その人はシステム102をシステム10
2によって呼出される各関数に対するソースコードの開
始の所に印字ステートメントを挿入することによってイ
ンストラメントすることができる。このインストラメン
テーションはシステム102をシステム105に変換す
る。次に、この変換されたシステム105が入力101
に関してランする。変換されたシステム105が一つの
関数を実行するたびに、これはその関数の開始の所に挿
入された印字ステートメントを実行する。印字ステート
メントの実行の結果として副作用106が生成され、印
字ステートメントからの出力を調べることによって、そ
のプログラマは印字ステートメントのどれが実行された
かを決定することができ、こうしてこの情報をどの関数
が実行されたかを決定するために使用することができ
る。
【0009】図4は、ソースコードがどのようにある与
えられたセットのテスト入力に対するテストカバレッジ
を決定するために修正されるかの一例を示す。このケー
スにおいては、目標は、テストの結果として全てのif
ステートメントがその真のブランチと偽のブランチの両
方を実行したかを決定することである。ifステートメ
ント(それぞれライン2と5上に真と偽のブランチを持
つ)を持つ元のソースコード401が印字ステートメン
ト(402)をライン1.iと4.iの所に挿入するこ
とによって修正される。この修正されたコードが実行さ
れると、ブランチ実行に関するメッセージがログファイ
ルに出力され、テストカバレッジはログファイル内のこ
のメッセージを調べることによって決定することができ
る。
【0010】
【発明が解決しようとする課題】上で述べたように、シ
ステムの動的特性を決定するための現存の技法の全ては
幾つかの短所を持つ。ソースコードのインストラメンテ
ーションはテスト下のコードの修正を要求し、インスト
ラメントされたソースコードは、従って、インストラメ
ントされてないソースコードと完全に同等ではない。専
用コンパイラは、ある動的特性に対するインストラメン
テーションのみを生成することができる。さらに、テス
トされているシステムの再構築を要求するインストラメ
ンテーションプロセスは、プログラム構築環境が複雑に
なると、魅力が低減する。既に構築されている実行可能
二進コードをインストラメントするツールは、専用コン
パイラと同程度に柔軟性に欠け、さらに、携帯性に欠け
るという欠点を持つ。
【0011】テストされているプログラムのソースコー
ドの修正を必要とすることなく、任意のクラスの動的特
性をテストするために簡単に適応でき、また、携帯性の
高いプログラムの動的特性を調べるための方法が必要と
されるが、ここに開示される技法によってこれが満足さ
れる。
【0012】
【課題を解決するための手段】本発明の方法は従来の技
術の問題を解決するが、これは、プログラマブル実行環
境をその動的特性に関する要求される情報を提供するよ
うにプログラミングすることによって行なわれる。調査
中のプログラムに対する修正のないコードが次にこうし
てプログラムされた実行環境内で実行され、この実行環
境は、調査中のプログラムの実行の応答として、関心の
ある動的特性に関する情報を出力する。一つの好ましい
実施例においては、実行環境に対するプログラムは、調
査下のプログラムに対するソースコードを静的に分析す
ることによって生成される。この静的分析を行なう一つ
の方法として、コードアナライザを生成するツールにそ
の分析の仕様を提供する方法がある。仕様が提供される
と、ツールは、コードアナライザを生成するが、次に、
これが調査中のプログラムに対するソースコードに適用
され、この結果として、その実行環境に対するプログラ
ムが生成される。ソースコードアナライザは、多くの動
的特性に対して同様に簡単に生成することができ、こう
して多くの異なるマシンに持ち運ぶことができる実行環
境が入手できる。本発明の方法は、従って、テスト中の
ソースコードの修正を回避するばかりでなく、無限に多
様な動的特性に対する(プログラム)装置を生成するた
めに使用することができる。最後に、この方法は、プロ
グラマブル実行環境と共に使用するとこができ、また、
その実行環境自身と同様の携帯性を持つ。
【0013】本発明の前述その他の目的及び利益は、当
業者においては、以下の図面及び詳細な説明を読むこと
によって、直ちに明白になるものである。
【0014】
【実施例】好ましい実施例の詳細な説明 以下の詳細な説明においては最初に本発明の概念の概要
について説明され、その後、プログラマブルデバッガを
プログラマブル実行環境として使用する実施例が説明さ
れる。この詳細な説明においては、また、プログラマブ
ルデバッガ用のコードを生成するために静的ソースコー
ドアナライザを使用する方法と、コードアナライザを生
成するためのシステムを使用してこの静的ソースコード
アナライザを生成する方法について説明される。最後
に、プログラマブルデバッガからの副作用によってテス
トされているプログラムに対するフローグラフのグラフ
表示が駆動される一つの実施例について説明される。
【0015】発明の概要:図2 図面中の参照番号は二つの部分から構成される。下二桁
は図面内の項目の番号であり、残りの桁はその項目が最
初に現われる図面の番号である。例えば、参照番号20
1を持つ項目は、図2に最初に現われる。図2には本発
明によってプログラムの動的特性を調べるために採用さ
れる技法が概略的に示される。システム202は一つ或
はそれ以上のプログラムから構築され、これらプログラ
ムはプログラマブル実行環境203内で実行される。こ
のような実行環境の一例はプログラマブルデバッガであ
る。我々は、システム202が入力201を与えられた
とき示すある動的特性207に関心を持つ。図1に示さ
れるようにシステムを変換するのではなく、我々は、シ
ステム202を変換されないままにしておく。従って、
システム202は、システム204と同一である。つま
り、図2にはシステム204が別個に示されるが、これ
は単に便宜的なものである。我々は、システム202の
代わりに、実行環境203をもう一つの実行環境205
に変換する。この変換の方法は、分析中のシステム(2
02≡204)と動的特性207に依存する。変換され
た実行環境205がシステム204(≡202)のプロ
グラムの実行を動的特性とシステム自身によって決定さ
れるポイントにおいて中断し、副作用206を生成す
る。これらの副作用は、図1において生成される副作用
106と同様に、動的特性207を調べるために使用す
ることができる。
【0016】実施例:図3 図3は前節で説明されたように実行環境を修正すること
によって動的特性を調べる方法の一つの実施例を示す。
図3においては、実行環境203は、デバッガ306で
ある。デバッガはプログラマによってプログラム内のバ
グを見つけるために使用されるツールである。プログラ
ムがデバグされる場合、これはデバッガ内で実行され
る。デバッガの助けによって、プログラマは、プログラ
ムの実行を厳格に制御することが可能になる。デバッガ
の基本的な能力は、ブレークポイントを設定する機能で
ある。ブレークポイントは、プログラム内の一つの位置
であり、プログラムがデバッガ内で実行される場合、制
御はこのポイントからデバッガに渡される。多くのデバ
ッガはプログラマブルである。つまり、プログラマは、
デバッガにインストラクションのリストを供給すること
ができる。これらリストは、ブレークポイントの位置を
指定するのみでなく、デバッガがブレークポイントに遭
遇した時にデバッガによって取られるべき動作も含む。
これら動作には、デバッガを使用する人がそれを再開す
るまで実行を停止する動作、或はマシンレジスタ及び/
或はメモリ位置の内容をプリントアウトする動作が含ま
れる。
【0017】本発明において使用されるタイプのデバッ
ガは、プログラムに対する実行可能二進コードと共に動
作する。デバッガを使用しているプログラマはそのプロ
グラムに対するソースコードと関係するブレークポイン
トに対する位置を指定する。デバッガは、すると、実行
可能二進コード内の対応する位置を見つけ、実行可能二
進コード内のこのポイントの所のインストラクションを
違法インストラクションと置換する。デバッガは、こう
して置換されたインストラクションと、そのブレークポ
イントにおいてデバッガが取るべき動作を保持する。プ
ログラムが実行され、ブレークポイントが設定されてい
るポイントに到達すると、ハードウエアはこの違法イン
ストラクションに応答して、違法インストラクション事
象を生成する。デバッガは、この違法インストラクショ
ンに応答して、プログラマがそのブレークポイントに対
して指定した動作を実行する。これが完了すると、デバ
ッガは違法インストラクションを保持されていた実際の
インストラクションと置換し、このインストラクション
を実行し、制御をプログラムに渡し、プログラムは、実
行を次のブレークポイントに到達するまで継続する。
【0018】本発明のこの実施例においては、このよう
なデバッガ306が、入力303にて(共に)ランし
て、システム302の特定の特性308を決定するため
に使用される。最初に、静的アナライザ304がこの特
定の特性に対して生成される。静的アナライザ304が
システムに対するソースコード301に加えられ、デバ
ッガ306に対するシーケンスのコマンド305が生成
される。この状態では、システム302は、デバッガ3
06内にロードすることができる。システムがロードさ
れると、デバッガは、自身を構成し、静的アナライザ3
04によって生成されたコマンド305を実行し、最後
に、入力303を使用してシステム302を実行する。
生成されたコマンド305によって構成されると、デバ
ッガ306は、システム302の実行を指定されたポイ
ントにて中断し、副作用307を生成する(例えば、実
行の中断時におけるプログラムの状態に関する情報をロ
グファイル内に書込む)。この副作用が次に動的特性3
07に関する情報を得るために分析される。
【0019】本発明の用途の一つの特定の例が図5に示
される。ここでの用途は、ソフトウエアテストであり;
あるセットのテストが完了したか決定することが要求さ
れている。つまり、そのテストが全てのif−ステート
メントの真偽ブランチの両方の実行を完了したか否かを
決定することが要求されている。例えば、ソースコード
501内には、ライン1の所にif−ステートメントが
存在し、それぞれ、真と偽のブランチがライン2と5の
所から開始し、このテストは、両方のブランチを実行し
なければならない。この好ましい実施例においては、静
的アナライザ304は、ソースコードアナライザを生成
するためのツールであるGENOA を使用して作成される。
GENOA については、Devanbu P.によって、Proceedings,
TwelfthInternational Conference on Software Engin
eering (1992年5月開催)に掲載の論文『GENOA-
A language and front-end independent source code a
nalyzer generator』において説明されているのでこれ
を参照されたい。GENOA によって生成される静的アナラ
イザ304は、プログラムに対するソースコード501
の解析木表現に関して動作する。
【0020】解析木は、セットのラベル付けされたノー
ドであり、ラベル付けされたエッジによってこれらが接
続される。これらノードは、解析木の様々な異なるパー
ツを表わす。ノード上のラベルはそのノードによって表
現される構文構造のタイプを表わす。分析されているプ
ログラムを含む全ソースファイルは、Fileとラベル付け
されたノードによって表わされる。この木の中のこのノ
ードより下のどこかにIf−ステートメント601と対
応するIfとラベル付けされたノードが存在する。解析
木のこの部分が図6の参照番号602によって示され
る。このノードから出る二つのエッジが存在する。これ
らは、thenとelseとラベル付けされ(タイプライタ活字
にて示される)、これらはIf−ステートメント601
のthenとelseの部分に対応する。これらエッジの各々
は、Ifノード(601内のライン1)を601内のラ
イン2と5から始まるブロックを表わすBlock ノードに
接続する。
【0021】GENOA によって生成された静的アナライザ
304は、Ifステートメントを表わすノードを捜し求
めて解析木を渡り歩く。アナライザがIfステートメン
トに対するノードを見つけると、これは、解析木からそ
のソースコード内の開始位置は、真及び偽のブランチに
対して何を行なうべきかを決定し、これら位置とこれら
の位置に到達した時に取られるべき動作を指定するデバ
ッガコマンド502(図5)を生成する。これらコマン
ドがデバッガ306に提供されると、ソース501から
構築されたシステム302がこのコマンドによって構成
されたデバッガによって実行される。ここで、デバッガ
は実行によって到達された各ブレークポイントの所のブ
レークポイントに対して指定される動作を遂行する。全
てのブレークポイントに対して指定される動作が遂行さ
れたら、このセットのテストは、ifステートメントの
ブランチとの関連で完了したこととなる。注意すべき点
は、デバッガインストラクションはソース501から生
成される必要はなく、テストされているプログラムに関
する情報の任意の利用可能なソースからも生成できる点
である。
【0022】前述の議論から明かのように、本発明によ
る技法は、ソースコードの修正を必要としない。デバッ
ガによって生成された実行可能二進バイナリコードの修
正は一時的なものであって、実行可能な二進バイナリコ
ードへのインストラクションの追加を必要とするもので
はない。デバッガが多くのプラットホーム上で利用でき
る性質のものである場合は、携帯性を犠牲とすることな
く、二進インストラメンテーションを簡便に実現するこ
とができる。このようなデバッガの一例として、Stallm
an、R と、Pesch R によって、Debugging with GDBにお
いて説明されているgdb があるが、これはprep.mit.ed
u. からのInernet ファイル転送によって入手すること
ができる。
【0023】動的特性アナライザのグラフィックディス
プレイへの結合:図7 デバッガ306によって生成される副作用307は、出
力を生成する任意のタイプのデバイスに提供することが
でき、この出力はその動的特性を分析するために有益で
ある。例えば、図7においては、副作用307がフロー
グラフ705をアニメートするために使用される。フロ
ーグラフ705は、この例においては、GENOA によって
作成されたもう一つの静的アナライザを使用して生成さ
れる。フローグラフ705が視覚表示のためにグラフィ
ックブラウザ706に提供される。次に、我々は、上に
説明されたようにソースコードを分析して、デバッガ7
04に対するコマンド703を生成する。これらコマン
ドはブロックの開始の所にブレークポイントを設定し;
ブレークポイントが起動される度に、デバッガはこれら
コマンドによって指定されるように応答する。このケー
スにおいては、これらコマンドは、フローグラフの視覚
表示の修正を指定するプロセス間メッセージ708がデ
バッガ704がその中で実行中であるプロセスからグラ
フィックブラウザがその中で実行中であるプロセスに送
ることを指定する。このメッセージに応答して、グラフ
ィックブラウザ706は視覚表示を修正する。この技法
は、テストカバレッジ情報を視覚表示するために、或は
単にプログラムの把握及びデバッグのために使用するこ
とができる。
【0024】GENOA を使用しての静的アナライザの作
成:図8 GENOA を使用して静的アナライザ304を作成するため
の仕様の一部分が図8に示される。GENOA によって仕様
から作成される静的アナライザは全プログラムのブロッ
ク及びスイッチステートメントに対する探索を遂行す
る。この探索は、ライン801とライン807の所の角
括弧によって指定される。探索される対象は、ライン8
02(ブロックに対する)とライン804(スイッチス
テートメントに対する)の所に指定される。ライン80
3は、ブレークポイントがそのブロックの開始において
設定されるべきであることと、デバッガにブレークポイ
ントを削除し、継続することを指令するデバッガコマン
ドが各ブレークポイントに対して生成されるべきである
ことを指定する。スイッチステートメントの場合は、ブ
レークポイントがスイッチの各発生において(ライン8
07)で生成され、同一のコマンドが生成されるべきで
あることが指定される。各ブレークポイントは起動され
ると削除されるために、あるテストランの後に残ったブ
レークポイントは、実行されなかったコードの部分を示
す。この好ましい実施例において採用されるプログラマ
ブルデバッガは、ユーザにどのブレークポイントが実行
されなかったか、つまり、コードのどの部分が実行され
なかったかを示す。GENOA とこれによって静的コードア
ナライザを指定するために使用される言語に関しての詳
細については、Devanbu P によって、Proceedings,Twel
fth International Conference on Software Engineeri
ng(1992年5月開催)に掲載の論文『GENOA- Alang
uage and front-end independent source code analyze
r generator』を参照すること。
【0025】図8から明かのように、静的ソースコード
アナライザジェネレータ、例えば、GENAを使用すると、
静的アナライザ304の実現が大幅に簡素化される。GE
NOAのようなツールを、プログラマブルで携帯可能なデ
バッガ、例えば、gdbと共に使用することにより、広
範囲のハードウエアに関する広範囲の動的特性を決定す
るために使用できるデバッガを簡単に実現することがで
きる。
【0026】
【発明の効果】前節の詳細な説明においては、ソースコ
ードを修正することなしに、プログラムの動的特性を決
定するために本発明者の技法を適用する方法について、
当業者に理解できるような方法にて、発明者に現時点で
知られている最良のモードにて開示された。本発明にお
いては、ソースコードが修正されるのではなく、修正さ
れた実行環境が作成される。プログラムが修正された実
行環境内で実行されると、ある与えられた動的特性の調
査を可能にする副作用が生成される。本発明の具体的な
効果として、以下の特徴を挙げることができる。 ・この実行環境は簡単にプログラム可能である。 ・実行環境に対するプログラムは調査中のプログラムの
ソースコードに静的ソースコードアナライザを適用する
ことによって生成することができる。 ・実行環境は多くの異なるマシン環境内で動作できる。 ・静的ソースコードアナライザは、ソースコードアナラ
イザジェネレータを使用して生成することができる。
【0027】この好ましい実施例においては、実行環境
はデバッガであったが、ただし、本発明の原理は、任意
のプログラマブル実行環境内で採用することができる。
さらに、好ましい実施例においてはプログラマブル実行
環境に対するインストラクションを生成するためにソー
スコードの静的分析を採用するが、この代わりにこのよ
うなインストラクションを生成する任意のタイプの分析
を使用することもできる。最後に、静的アナライザの生
成には、GENOA のようなシステムを使用することが特に
適当であるが、ただし、アナライザは、人手による方法
を含む任意の方法にて生成できるものである。ここに開
示される技法の原理が理解できれば、当業者において
は、本発明の原理を採用するが、ただし、ここに開示さ
れる実施例とは他の全ての点で異なるシステムを生成す
ることが可能である。
【0028】これらのことを鑑み、詳細な説明はあらゆ
る点で単に解説を目的とし、限定を目的とするものでは
なく、本発明の範囲は、詳細な説明によってではなく、
特許請求の範囲を法律によって許される最も広い範囲に
て解釈したものによって定義されるものと理解された
い。
【図面の簡単な説明】
【図1】プログラムの動的特性を決定するための従来の
技法の概念図である。
【図2】プログラムの動的特性を決定するための本発明
による技法の概念図である。
【図3】実行環境がデバッガである実施例のダイヤグラ
ムである。
【図4】プログラムのブランチカバレッジ特性を決定す
るためにソースコードをインストラメントするための従
来の技法を示す。
【図5】本発明による方法がプログラムのブランチカバ
レッジ特性を決定するために使用するために実行環境を
修正するためにどのように採用されるかを示す。
【図6】実行環境の修正のためのコードを生成するため
にプログラムの解析木の静的分析がどのように採用され
るかを示す。
【図7】実行環境からの出力がプログラムのあるテスト
の結果の動的グラフィック表現を生成するためにグラフ
ブラウジングプログラムにどのように加えられるかを示
す。
【図8】静的アナライザを生成するために使用されるGE
NOA 仕様の一部分を示す。

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】 第一のプログラムの動的特性に関する第
    一の情報を得るための装置であって、この装置が、 第一のプログラム関する第二の情報を静的に分析し、こ
    れから第二のプログラムを生成するための手段、及び第
    二のプログラムに応答して第一のプログラムがこのプロ
    グラマブル実行環境内で実行されている最中に第一の情
    報を出力するプログラマブル実行環境手段を含むことを
    特徴とする装置。
  2. 【請求項2】 前記第二の情報が第一のプログラムに対
    するソースコードであることを特徴とする請求項1の装
    置。
  3. 【請求項3】 第二の情報と第一の情報を得るためのあ
    る技法の仕様とに応答して、第二の情報を静的に分析す
    るための手段を自動的に生成するための手段がさらに含
    まれることを特徴とする請求項1の装置。
  4. 【請求項4】 第二の情報が第一のプログラムに対する
    ソースコードであることを特徴とする請求項3の装置。
  5. 【請求項5】 プログラマブル実行環境手段がプログラ
    マブルデバッガであることを特徴とする請求項1、請求
    項2、請求項3、或は請求項4の装置。
  6. 【請求項6】 プログラマブルデバッガが複数のハード
    ウエア環境内で動作できることを特徴とする請求項5の
    装置。
  7. 【請求項7】 プログラマブル実行環境手段がプログラ
    マブルデバッガであることを特徴とする請求項1の装
    置。
  8. 【請求項8】 第一の情報に応答して第一の情報をグラ
    フィック表示するための手段が含まれることを特徴とす
    る請求項1、請求項2、請求項3、請求項4、或は請求
    項7の装置。
  9. 【請求項9】 第一の情報に応答する手段が、第一のプ
    ログラムのフローグラフのグラフィック表示を修正して
    第一の情報をグラフィック表示することを特徴とする請
    求項8の装置。
  10. 【請求項10】 第二の情報を静的に分析することによ
    って第三のプログラムを生成するための第二の手段がさ
    らに含まれ、 第一の情報に応答する手段が、第三のプログラムと協力
    して第一のプログラムのフローグラフのグラフィック表
    示を生成するようにプログラムされることを特徴とする
    請求項9の方法。
  11. 【請求項11】 第一のプログラムの動的特性に関する
    第一の情報を得るための方法であって、この方法が、 第一のプログラムに関する第二の情報を静的に分析する
    ことによって第二のプログラムを生成するステップを含
    み、この第二のプログラムの作用によってプログラム実
    行環境が第一の情報を出力し、この方法がさらにプログ
    ラマブル実行環境を第二のプログラムにてプログラムす
    るステップ、及び第一の情報を得るためにプログラマブ
    ル実行環境内の第一のプログラムを実行するステップを
    含むことを特徴とする方法。
  12. 【請求項12】 第二のプログラムを生成するステップ
    が第一のプログラムに対するソースコードを第二の情報
    として使用して遂行されることを特徴とする請求項11
    の方法。
  13. 【請求項13】 第二の情報と第一の情報を得るための
    技法の仕様に応答して第二のプログラムを生成するため
    の自動生成手段がさらに含まれ、 第二のプログラムを生成するステップが第二のプログラ
    ムを生成するための手段を使用して遂行されることを特
    徴とする請求項11の方法。
  14. 【請求項14】 第二のプログラムを生成するステップ
    が第一のプログラムに対するソースコードを第二の情報
    として使用して遂行されることを特徴とする請求項13
    の方法。
  15. 【請求項15】 プログラム実行環境手段がプログラマ
    ブルデバッガであり、 プログラマブル実行環境をプログラムするステップがデ
    バッガをプログラムすることによって遂行され、 第一のプログラムを実行するステップがデバッガ内で第
    一のプログラムを実行することによって遂行されること
    を特徴とする請求項11、請求項12、請求項13、或
    は請求項14の方法。
  16. 【請求項16】 プログラムデバッガが複数のハードウ
    エア環境内で動作でき、 この方法のステップが複数のハードウエア環境の特定の
    一つの中で遂行されることを特徴とする請求項15の装
    置。
  17. 【請求項17】 プログラマブル実行環境手段がプログ
    ラマブルデバッガであり、 プログラマブル実行環境をプログラミングするステップ
    がデバッガをプログラミングすることによって遂行さ
    れ、 第一のプログラムを実行するステップが第一のプログラ
    ムをデバッガ内で実行することによって遂行されること
    を特徴とする請求項11の方法。
  18. 【請求項18】 第一の情報をグラフィック表示するス
    テップがさらに含まれることを特徴とする請求項11、
    請求項12、請求項13、請求項14、或は請求項17
    の方法。
  19. 【請求項19】 第一の情報をグラフィック表示するス
    テップが、第一の情報に従って第一のプログラムのフロ
    ーグラフのグラフィック表示を修正するステップを含む
    ことを特徴とする請求項18の方法。
  20. 【請求項20】 グラフィックブラウザにフローグラフ
    のグラフィック表示を生成させる第三のプログラムを生
    成するために第一のプログラムを静的に分析するステッ
    プ、及びグラフィックブラウザを第一の情報をグラフィ
    ック表示するステップにおいて使用されるフローチャー
    トのグラフィック表示を生成するようにプログラムする
    ステップがさらに含まれることを特徴とする請求項19
    の方法。
JP7092036A 1994-04-18 1995-04-18 プログラムの動的特性の決定 Pending JPH07295859A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US22904394A 1994-04-18 1994-04-18
US229043 1994-04-18

Publications (1)

Publication Number Publication Date
JPH07295859A true JPH07295859A (ja) 1995-11-10

Family

ID=22859617

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7092036A Pending JPH07295859A (ja) 1994-04-18 1995-04-18 プログラムの動的特性の決定

Country Status (4)

Country Link
US (1) US5832271A (ja)
EP (1) EP0678810A1 (ja)
JP (1) JPH07295859A (ja)
CA (1) CA2143145C (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006236336A (ja) * 2005-02-22 2006-09-07 Microsoft Corp ソースコード静的分析シミュレータのためのカスタムapiモデリング
JP2008257390A (ja) * 2007-04-03 2008-10-23 Toshiba Information Systems (Japan) Corp プログラム検査装置及びプログラム検査用プログラム
JP2015130039A (ja) * 2014-01-07 2015-07-16 日本電信電話株式会社 ソフトウェア規模演算装置およびプログラム

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5909577A (en) * 1994-04-18 1999-06-01 Lucent Technologies Inc. Determining dynamic properties of programs
US6098092A (en) * 1996-11-08 2000-08-01 Silicon Graphics, Inc. Server to dynamically generate graphics for the world wide web
US5953534A (en) * 1997-12-23 1999-09-14 University Of Washington Environment manipulation for executing modified executable and dynamically-loaded library files
US6216237B1 (en) * 1998-06-19 2001-04-10 Lucent Technologies Inc. Distributed indirect software instrumentation
US6279149B1 (en) * 1998-09-24 2001-08-21 International Business Machines Corporation Aggregate structure identification and its application to program analysis
US6959431B1 (en) * 1999-05-13 2005-10-25 Compuware Corporation System and method to measure and report on effectiveness of software program testing
US6427232B1 (en) 1999-06-10 2002-07-30 International Business Machines Corporation Functional debugger for debugging software programs
US6775827B1 (en) * 1999-09-20 2004-08-10 Harkins Audit Software, Inc. Real-time program audit software
US7240336B1 (en) 2000-07-25 2007-07-03 Sci Systems, Inc. Interpretive simulation of software download process
US7055146B1 (en) 2001-03-08 2006-05-30 Microsoft Corporation Method and system for dynamically inserting modifications for identified programs
US7191436B1 (en) 2001-03-08 2007-03-13 Microsoft Corporation Computer system utility facilitating dynamically providing program modifications for identified programs
US20050081104A1 (en) * 2003-09-25 2005-04-14 Borislav Nikolik Test diversity software testing method and apparatus
US7657869B2 (en) * 2004-02-05 2010-02-02 Microsoft Corporation Integration of external tools into an existing design environment
JP4776235B2 (ja) * 2005-01-07 2011-09-21 ソニー株式会社 情報処理装置および方法、並びにプログラム
US7779399B2 (en) * 2005-05-16 2010-08-17 Armorize Technologies, Inc. System and method for securing web application code and verifying correctness of software
US8212805B1 (en) 2007-01-05 2012-07-03 Kenneth Banschick System and method for parametric display of modular aesthetic designs
EP2223213B1 (en) 2007-11-20 2019-09-11 Synopsys, Inc. Multi language software code analysis
WO2010060283A1 (zh) * 2008-11-28 2010-06-03 上海芯豪微电子有限公司 一种数据处理的方法与装置
EP2261802A1 (en) * 2009-06-10 2010-12-15 ITI Scotland Limited Automated debugging system and method
US10157049B2 (en) * 2011-10-26 2018-12-18 International Business Machines Corporation Static analysis with input reduction
US8918881B2 (en) 2012-02-24 2014-12-23 Appthority, Inc. Off-device anti-malware protection for mobile devices
US8713684B2 (en) 2012-02-24 2014-04-29 Appthority, Inc. Quantifying the risks of applications for mobile devices
US8819772B2 (en) 2012-06-25 2014-08-26 Appthority, Inc. In-line filtering of insecure or unwanted mobile device software components or communications
US9552285B2 (en) 2013-05-02 2017-01-24 Microsoft Technology Licensing, Llc Micro-execution for software testing
US10379825B2 (en) 2017-05-22 2019-08-13 Ab Initio Technology Llc Automated dependency analyzer for heterogeneously programmed data processing system

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4080650A (en) * 1976-07-28 1978-03-21 Bell Telephone Laboratories, Incorporated Facilitating return from an on-line debugging program to a target program breakpoint
US4914568A (en) * 1986-10-24 1990-04-03 National Instruments, Inc. Graphical system for modelling a process and associated method
US4819234A (en) * 1987-05-01 1989-04-04 Prime Computer, Inc. Operating system debugger
US5038348A (en) * 1988-07-01 1991-08-06 Sharp Kabushiki Kaisha Apparatus for debugging a data flow program
US5313616A (en) * 1990-09-18 1994-05-17 88Open Consortium, Ltd. Method for analyzing calls of application program by inserting monitoring routines into the executable version and redirecting calls to the monitoring routines

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006236336A (ja) * 2005-02-22 2006-09-07 Microsoft Corp ソースコード静的分析シミュレータのためのカスタムapiモデリング
JP2008257390A (ja) * 2007-04-03 2008-10-23 Toshiba Information Systems (Japan) Corp プログラム検査装置及びプログラム検査用プログラム
JP2015130039A (ja) * 2014-01-07 2015-07-16 日本電信電話株式会社 ソフトウェア規模演算装置およびプログラム

Also Published As

Publication number Publication date
US5832271A (en) 1998-11-03
CA2143145A1 (en) 1995-10-19
EP0678810A1 (en) 1995-10-25
CA2143145C (en) 1999-12-28

Similar Documents

Publication Publication Date Title
JPH07295859A (ja) プログラムの動的特性の決定
EP0753814B1 (en) Determining dynamic properties of programs
US6493868B1 (en) Integrated development tool
US6003143A (en) Tool and method for diagnosing and correcting errors in a computer program
JP4901075B2 (ja) コンピュータ読取可能な媒体、方法及びコンピューティングデバイス
US20090199163A1 (en) Debugger assistance for locating values at runtime
US8448152B2 (en) High-level language, architecture-independent probe program compiler
US6493834B1 (en) Apparatus and method for dynamically defining exception handlers in a debugger
US20030033592A1 (en) Software debugger and software development support system
JPH09198276A (ja) プログラムデバッグシステム
JP2000122886A (ja) 半導体試験装置のプログラム作成方式
JP2002532804A (ja) ハイブリッドコンピュータプログラミング環境
Lyle et al. Using the unravel program slicing tool to evaluate high integrity software
Lee et al. A review of popular reverse engineering tools from a novice perspective
Ekman et al. Dynamic patching of embedded software
Grimm Debugging SCCharts
Studio Getting Started Guide
Methfessel et al. MµSE: Supporting Exploration of Software-Hardware Interactions Through Examples
Cunha et al. A distributed debugging tool for a parallel software engineering environment
US20050015677A1 (en) Method of executing a computer program
JPH07319730A (ja) テスト・デバッグ方法
Henriques et al. ALMA versus DDD
Cruz et al. ALMA versus DDD
da Cruz et al. ALMA versus DDD.
KFKI-MSZKI et al. Visual Programming

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20030611