JP4679540B2 - プログラム検証方法とシステムおよびプログラム - Google Patents

プログラム検証方法とシステムおよびプログラム Download PDF

Info

Publication number
JP4679540B2
JP4679540B2 JP2007067911A JP2007067911A JP4679540B2 JP 4679540 B2 JP4679540 B2 JP 4679540B2 JP 2007067911 A JP2007067911 A JP 2007067911A JP 2007067911 A JP2007067911 A JP 2007067911A JP 4679540 B2 JP4679540 B2 JP 4679540B2
Authority
JP
Japan
Prior art keywords
resource
processing means
release
management table
program
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 - Fee Related
Application number
JP2007067911A
Other languages
English (en)
Other versions
JP2008226208A (ja
Inventor
伸浩 蠏江
義之 神部
Original Assignee
株式会社日立情報システムズ
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 株式会社日立情報システムズ filed Critical 株式会社日立情報システムズ
Priority to JP2007067911A priority Critical patent/JP4679540B2/ja
Publication of JP2008226208A publication Critical patent/JP2008226208A/ja
Application granted granted Critical
Publication of JP4679540B2 publication Critical patent/JP4679540B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明は、コンピュータによるプログラムにおける不具合の有無を検証する技術に係り、特に、ソースプログラムのコンパイルでは検出することのできない、動的に確保または占有したリソースに対する解放洩れの有無を検出するのに好適な技術に関するものである。
アプリケーションプログラムの開発において、ソースプログラム上の、動的に確保または占有したメモリ領域等のリソースに対する解放洩れは、コンパイルで検出することができないため、潜在的な不良を引き起こす大きな要因の一つとなっている。従来技術では、利用者の介入を必要とするため、誤操作により、検出できない可能性がある。
例えば、特許文献1のように、動的に確保または占有したリソースに対する解放洩れを静的に検出するため、リソースの確保または占有と、当該リソースに対する解放との対応を記述したルールファイルのような、解析に必要となる定義情報を、利用者側で事前に用意する必要があった。
尚、一般的には、このようなアプリケーション開発において、動的に確保または占有したリソースに対する解放洩れを検出する場合は、開発工程のうちテスト工程上で動的に行い、実行可能プログラムを実行させたり、ソースプログラムを直接加工して、他のアプリケーションと連動させたりする。
このように、リソースを動的に確保または占有する処理、およびそのリソースを解放する処理は、例えば、汎用アプリケーション等が提供するアプリケーション・プログラミング・インタフェース(API:Application Programming Interface、以下「API」と称する)を使用して行った場合、通常、APIはブラックボックスとなっているため、内部で当該処理が行われているかどうかを静的に判断するのが困難である。
上述の特許文献1に記載のように、事前にルールファイルを利用者側に定義させる技術の場合、本ルールファイル自体への定義洩れや定義誤りが生じる可能性があるため、リソースの解放洩れを正確に検出できる保障がない。
さらに、解放洩れリソースに対する解放処理をソースプログラムに挿入する場合、当該ソースプログラムの構造が複雑であればあるほど、挿入位置を検出するのに手間と時間が掛かり、またデグレート(劣化)を引き起こす可能性を高くする。
特開2004−145381号公報
解決しようとする問題点は、従来の技術では、事前にルールファイルを利用者側に定義させる必要があり、本ルールファイル自体への定義洩れや定義誤りが生じる可能性があるため、リソースの解放洩れを正確に検出できる保障がない点と、解放洩れリソースに対する解放処理を挿入するソースプログラムにおける位置を容易に検出することができない点である。
本発明の目的は、これら従来技術の課題を解決し、プログラムの開発において、ルールファイルのような解析情報を必要とすることなく、動的に確保または占有したリソースに対する解放洩れ、および、リソース解放処理の挿入位置を、コーディングの段階、つまりプログラムの製造工程上で静的に検出することを可能とすることである。
上記目的を達成するため、本発明では、ソースプログラム上の各リソースにおいて、動的に確保または占有した位置を、例えば内部で自動作成するリソース管理テーブル等で管理し、当該位置を起点として、実行可能プログラムを基にしてマシン語(機械語)で解析し、当該プログラムが終了するまでの全ての処理経路を探索することで、当該リソースの解放洩れの検出を行うことを特徴とする。
本発明によれば、検証対象のソースプログラムから、動的に確保または占有したリソースに対する解放洩れの検出、および当該リソース解放処理の挿入位置の検出を、コンパイル作業の延長線上で、すなわち開発工程のうち製造工程上で、静的に検出することが可能である。特に、解析を実行可能プログラムを基にしてマシン語で行うことにより、ソースプログラムのみを基にして静的に検出することが不可能であったAPIのようなブラックボックスとなっている処理が含まれている場合においても、静的な検出が可能となる。また、リソース管理テーブル等を用いて、当該リソースの更新または参照位置を保持・管理し、更新または参照されるたびにリソース管理テーブルにおける各当該位置を更新するで、最終当該位置を認識しておくことにより、動的に確保または占有したリソースに対する解放洩れが検出された場合、最終当該位置を解放処理挿入位置として判断し、その旨を利用者に通知することができる。
以下、図を用いて本発明を実施するための最良の形態例を説明する。図1は、本発明に係るプログラム検証システムの構成例を示すブロック図であり、図2は、図1におけるリソース確保・占有位置探索処理部の処理動作例を示すフローチャート、図3は、図1におけるリソース解放位置探索処理部の処理動作例を示すフローチャート、図4は、図1におけるリソース管理テーブル更新処理部の処理動作例を示すフローチャート、図5は、図1におけるソースプログラムとリソース管理テーブルのそれぞれのサンプル例を示す説明図、図6は、図1におけるステップ位置対応管理テーブルのサンプル例を示す説明図、図7は、図1におけるプログラム検証システムの処理動作例を示す説明図である。
図1におけるプログラム検証システムは、プログラムされたコンピュータにより、検証対象のソースプログラムにおけるリソース解放洩れを検出するものであり、CPU(Central Processing Unit)や主メモリ、表示装置、入力装置、外部記憶装置からなるコンピュータ構成からなり、光ディスク駆動装置等を介してCD−ROM等の記憶媒体に記録されたプログラムやデータを外部記憶装置内にインストールした後、この外部記憶装置から主メモリに読み込みCPUで処理することにより、各処理部の機能を実行する。
図1において、プログラム検証システム(図中「リソースの解放洩れおよび解放処理挿入位置の検出システム」と記載)は、プログラムを用いたコンピュータ処理で実現する機能として、リソース確保・占有位置探索処理部(図中「リソース確保および占有位置の探索」と記載)2と、リソース解放位置探索処理部(図中「リソース解放位置の探索」と記載)4、および、リソース管理テーブル更新処理部(図中「リソース管理テーブルの更新」と記載)5、リソース解放洩れ通知処理部(図中「リソース解放洩れの通知」と記載)7を有し、検証対象となるソースプログラム1を入力して、内部にステップ位置対応管理テーブル3およびリソース管理テーブル6を生成して、これらのテーブルの参照・更新処理を行って、リソース解放洩れと解放処理挿入位置の検出を行い、その結果を記憶装置あるいは表示装置やプリンタ(印字装置)等の出力装置(図中「リソース解放洩れ有無と解放処理挿入位置の出力」と記載)8に出力する。
すなわち、リソース確保・占有位置探索処理部2は、検証対象のソースプログラム1を変換して機械語からなる実行可能プログラムを生成し、当該実行可能プログラムの各ステップを順に読み出し、リソースを確保もしくは占有する命令語を検出する。
リソース解放位置探索処理部4は、リソース確保・占有位置探索処理部2が検出した命令語で確保もしくは占有したリソースを解放する命令語の有無を、当該実行可能プログラムにおける全ての処理経路に渡って探索する。
リソース解放洩れ通知処理部7は、リソース解放位置探索処理部4が当該リソースを解放する命令語を検出できなければ、当該ソースプログラムのリソース解放洩れを通知する情報を生成して出力装置8を介して出力する。
尚、リソース確保・占有位置探索処理部2は、ソースプログラム1から実行可能プログラムを生成する際、図6に示すように、ステップ位置対応管理テーブル3を生成して、ソースプログラム1のステップ位置と、それに対応する実行可能プログラムのステップ位置(開始位置および終了位置)とを対応付けて登録する。
また、リソース解放位置探索処理部4は、リソース確保・占有位置探索処理部2が検出した命令語を起点に、当該実行可能プログラムが終了するまでの全ての処理経路を探索し、探索した各経路毎に、リソース確保・占有位置探索処理部2が検出した命令語で確保もしくは占有したリソースを解放する命令語の有無を探索する。
また、リソース管理テーブル更新処理部5は、リソース解放位置探索処理部4が探索した各経路毎に、リソース確保・占有位置探索処理部2が検出した命令語で確保もしくは占有したリソースを更新もしくは参照する命令語を検出し、図5に例示する内容のリソース管理テーブル6を生成して、検出した命令語の当該実行可能プログラムにおける位置情報を登録する。
そして、リソース解放洩れ通知処理部7は、リソース解放位置探索処理部4の検出結果に基づく当該ソースプログラムのリソース解放洩れを通知する情報を生成する際、リソース管理テーブル更新処理部5が生成し更新したリソース管理テーブル6を参照して、最後に更新もしくは参照した当該命令語の当該実行可能プログラムにおける位置情報を生成し、それぞれを出力装置8を介して出力する。
以下、図2を用いて、このようなリソース確保および占有位置の探索に関する処理の流れ、特に、リソース確保・占有位置探索処理部2の処理に関連して説明する。
図2において、まず、入力ファイルであるソースプログラム201を読み込み(ステップ202)、コード変換(ステップ203)をすることで実行可能プログラム204を作成する。
それと同時に、ソースプログラム201と実行可能プログラム204のステップ位置を対応付けたステップ位置対応管理テーブル3を作成し(ステップ205)、解析の対象となる実行可能プログラム204をマシン語として読み込む(ステップ206)。
尚、ここで、外部ライブラリ等、他に取り込むファイルがあれば、同様にマシン語として読み込む。以下、ステップ207からステップ207’までの処理を繰り返す。
すなわち、実行可能プログラム204を1ステップ読み込んで(ステップ208)、当該ステップが動的にリソースを確保または占有する処理、つまり当該処理を行う命令語を使用している場合(ステップ209)、図3に詳細を示す、リソース解放位置探索処理部4による当該リソースに対する解放処理位置の探索処理を行う(ステップ210)。
図3に示すように、リソース解放位置探索処理部4は、解放処理の位置を探索する対象リソースを起点として、実行可能プログラム204が終了するまでの、シミュレーション探索した経路1つずつに対して、以降に説明する処理を繰り返し行う(ステップ301,301’)。
まず、解放処理の位置を探索する対象リソースに付与された識別名であるリソース名称(変数名称)を、内部で用意したリソース管理テーブル6に登録し(ステップ302)、次に、当該リソースを起点として当該経路の終了まで以下の処理を繰り返し行う(ステップ303,303’)。
すなわち、シミュレーション探索した1つの経路に従って、実行可能プログラム204を1ステップずつ読み込み(ステップ304)、当該ステップが当該リソースの更新または参照処理、つまり当該リソース名称を使用しているか(ステップ305)、または当該リソースの解放処理、つまり当該処理を行う命令語を使用しているか(ステップ307)を判別する。
ステップ305において当該ステップが当該リソースの更新または参照処理、つまり当該リソース名称を使用している場合、ステップ307においてまたは当該リソースの解放処理、つまり当該処理を行う命令語を使用している場合には、それぞれ、図4に詳細を示す、リソース管理テーブル更新処理部5によるリソース管理テーブル6の更新処理を行う(ステップ306)。
ステップ305およびステップ307での判別がいずれも否(N)で、当該ステップが実行可能プログラム204の終了処理、つまり当該処理を行う命令語を使用している場合(ステップ308)には、リソース管理テーブル204の登録情報を読み込み参照して、当該リソースの解放洩れの有無について、また解放洩れがある場合は、さらに当該リソース解放処理の挿入位置について、利用者に通知する(ステップ309)。
図4に示すようにして、図1に示すリソース管理テーブル更新処理部5は、リソース管理テーブル6の更新処理を行う。
まず、当該リソースが他関数に引き渡される等のような処理により、当該リソース名称が新規に変更された場合(ステップ401)、当該リソース名称を、図5に示すリソース管理テーブル6上にあるリソース名称テーブルに追加する(ステップ402)。
また、当該リソース名称が変更された場合には(ステップ403)、現行リソース名称を当該リソース名称に変更する(ステップ404)。尚、別処理から元の処理に戻ったことにより、当該リソース名称が既存(一つ前)の名称に変更された場合にも(ステップ403)も、同様に現行リソース名称を当該リソース名称に変更(ステップ404)する。
また、当該リソースが更新または参照された場合には(ステップ405)、当該リソースの更新または参照位置を更新する(ステップ406)。
また、当該リソースに対する解放処理が行われた場合であれば(ステップ407)、当該リソースの更新または参照位置を「0」に更新・設定する(ステップ410)。
尚、この際、すでに解放されている、つまり当該リソースの更新または参照位置が「0」になっている場合には(ステップ408)、すでに解放されたリソースに対して再度解放を行っているため、解放処理が過多である旨のエラー情報を生成して利用者に通知する(ステップ409)。
このようにして更新処理されるソース管理テーブル6の詳細を図5に示す。本図5に示すリソース管理テーブル6は、現行のリソース名称、当該リソースの更新または参照位置、リソース名称テーブルから構成されている。
リソース名称テーブルは、ソースプログラムサンプルのように、処理探索途中で対象リソースの名称が変更になった場合のための管理テーブルであり、チェーン構造となっている。
現行リソース名称は、リソース管理テーブル6に格納されているリソース名称のアドレスで管理する。
当該リソースの更新または参照位置には、解放された場合は「0」、解放されていない場合は「0」以外のステップ位置が格納される。
従って、図3に示した処理で、ステップ308において、当該ステップが実行可能プログラム204の終了処理の場合で、当該リソースの更新または参照位置が「0」の場合は当該リソースの解放洩れなし、「0」以外の場合は当該リソースの解放洩れありとそれぞれ判断して、その結果を、また後者の場合は、格納されたステップ位置も併せて、利用者に通知する(ステップ309)。
尚、本図5は、ソースプログラムサンプルにおける500ステップ目を探索したソース管理テーブル6の登録状態を示している。この後、探索位置がソースプログラムサンプルにおける「func1」関数に戻った時点で、リソース名称テーブルから「rscname_3」に関する情報は削除され、現行リソース名称は「200(rscname_2)」、更新または参照位置は「400」にそれぞれ更新される。
次に、図6を用いて、図1におけるステップ位置対応管理テーブル3の詳細について説明する。本図6において、ステップ位置対応管理テーブル3は、実行可能プログラム204のステップ位置(開始位置および終了位置)と、それに対応するソースプログラム201のステップ位置から構成される。
このステップ位置対応管理テーブル3は、図2のステップ205出力の処理で作成され、図4のステップ406の処理で、実行可能プログラム204の当該ステップ位置に対応するソースプログラム201のステップ位置に更新する際の参照に用いられる。
次に、図7を用いて、図1に示すプログラム検証システムによるリソース解放位置の探索に関する処理で行う、当該リソースに関する全処理経路の探索イメージについて説明する。
図7に示す例では、処理経路パターンは、「1→2→6→7」と「1→2→3→4→6→7」および「1→2→3→5→4→6→7」の3通り存在し、「条件A」のように、処理(6)で当該リソースが解放されている場合、3パターンの全てで当該リソースが解放されることを判断できるが、「条件B」のように、処理(4)で当該リソースが解放されている場合、「1→2→6→7」の処理経路パターンでは、当該リソースの解放洩れがあることを検出できる。
以上、図1〜図7を用いて説明したように、本例では、ソースプログラム1,201上の各リソースにおいて、動的に確保または占有した位置を、例えば内部で自動作成するリソース管理テーブル6で管理し、当該位置を起点として、実行可能プログラム204を基にしてマシン語(機械語)で解析し、当該プログラムが終了するまでの全ての処理経路を探索することで、当該リソースの解放洩れの検出を行う。
このように、解析を実行可能プログラム204を基にしてマシン語で行うため、ソースプログラム1,201のみを基にして静的に検出することが不可能であったAPIのようなブラックボックスとなっている処理が含まれている場合についても、静的に検出することが可能となる。
また、リソース管理テーブル6上において、当該リソースの更新または参照位置を保持し、更新または参照されるたびに各当該位置を更新することにより、最終当該位置を認識しておき、動的に確保または占有したリソースに対する解放洩れが検出された場合、当該位置を解放処理挿入位置として判断し、その旨を利用者に通知する。
つまり、動的に確保または占有したリソースに対する解放洩れ、および当該リソース解放処理の挿入位置を、ソースプログラム1,201を入力ファイルとした静的検出を行うことが可能となる。
このことにより、ソースプログラム1,201から、動的に確保または占有したリソースに対する解放洩れの検出、および当該リソース解放処理の挿入位置の検出を、コンパイル作業の延長線上で、すなわち開発工程のうち製造工程上で、静的に検出することが可能になる。
尚、本発明は、図1〜図7を用いて説明した例に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。例えば、本例では、リソース確保・占有位置探索処理部2において、検証対象のソースプログラム1を変換して機械語からなる実行可能プログラムを生成する構成としているが、このようなコンパイル機能、リンク機能を行う他の処理部を設けた構成とし、リソース確保・占有位置探索処理部2は、当該実行可能プログラムの各ステップを順に読み出し、リソースを確保もしくは占有する命令語を検出する機能のみを設けた構成としても良い。
また、本例でのコンピュータ構成に関しても、キーボードや光ディスクの駆動装置の無いコンピュータ構成としても良い。また、本例では、光ディスクを記録媒体として用いているが、FD(Flexible Disk)等を記録媒体として用いることでも良い。また、プログラムのインストールに関しても、通信装置を介してネットワーク経由でプログラムをダウンロードしてインストールすることでも良い。
本発明に係るプログラム検証システムの構成例を示すブロック図である。 図1におけるリソース確保・占有位置探索処理部の処理動作例を示すフローチャートである。 図1におけるリソース解放位置探索処理部の処理動作例を示すフローチャートである。 図1におけるリソース管理テーブル更新処理部の処理動作例を示すフローチャートである。 図1におけるソースプログラムとリソース管理テーブルのそれぞれのサンプル例を示す説明図である。 図1におけるステップ位置対応管理テーブルのサンプル例を示す説明図である。 図1におけるプログラム検証システムの処理動作例を示す説明図である。
符号の説明
1,201:ソースプログラム、2:リソース確保・占有位置探索処理部、3:ステップ位置対応管理テーブル、4:リソース解放位置探索処理部、5:リソース管理テーブル更新処理部、6:リソース管理テーブル、7:リソース解放洩れ通知処理部、8:出力装置、204:実行可能プログラム。

Claims (3)

  1. プログラムされたコンピュータ処理により、検証対象のソースプログラムにおけるリソース解放洩れを検出するプログラム検証システムであって、
    プログラムされたコンピュータ処理を実行する手段として、
    検証対象のソースプログラムと該ソースプログラムが取り込む外部ライブラリおよびアプリケーションプログラムインタフェースを含むファイルとをコード変換して機械語からなる実行可能プログラムを生成し、当該実行可能プログラムの各ステップを順に読み出し、リソースを確保もしくは占有する命令語を検出すると共に、
    上記ソースプログラムのステップ位置と、該ソースプログラムのステップ位置に対応する上記実行可能プログラムのステップ位置とを対応付けて登録したステップ位置対応管理テーブルを生成するリソース確保・占有位置探索処理手段と、
    該リソース確保・占有位置探索処理手段が検出した命令語を起点に、当該実行可能プログラムが終了するまでの全ての処理経路をシミュレーションして探索し、シミュレーション探索した各経路毎に、上記リソース確保・占有位置探索処理手段が検出した命令語で確保もしくは占有したリソースを解放する命令語の有無を探索するリソース解放位置探索処理手段と、
    該リソース解放位置探索処理手段がシミュレーション探索した各経路毎に、上記リソース確保・占有位置探索処理手段が検出した命令語で確保もしくは占有したリソースを更新もしくは参照する命令語を検出し、検出した命令語の当該実行可能プログラムにおける位置情報を登録したリソース管理テーブルを生成するリソース管理テーブル更新処理手段と、
    上記リソース解放位置探索処理手段の探索結果で上記リソースを解放する命令語が無い場合、当該ソースプログラムのリソース解放洩れを通知する情報を生成して出力するリソース解放洩れ通知処理手段と
    を有し、
    上記リソース管理テーブル更新処理手段は、
    上記検出した上記リソースを更新もしくは参照する命令語で当該リソースの識別名が新規に派生した場合には、
    当該リソースの識別名を当該命令語の位置情報に対応付けて登録するリソース名称テーブルに追加し、
    上記検出した命令語で当該リソースの識別名が変更された場合には、
    上記リソース名称テーブルにおける当該リソースに対してチェーン構造で、変更された識別名と当該命令語の位置情報および変更前の位置情報とを追加すると共に、上記リソース管理テーブルにおける当該リソースの識別名を上記リソース名称テーブルにおける最新の位置情報に変更し、上記リソース管理テーブルにおける位置情報を検出した命令語の当該実行可能プログラムにおける位置情報に変更し、
    上記リソース解放位置探索処理手段が上記リソースを解放する命令語を検出した場合には、上記リソース名称テーブルにおける当該リソースの識別名に対応する位置情報を0に更新し、
    上記リソース解放洩れ通知処理手段は、
    上記リソース解放位置探索処理手段の探索結果で上記リソースを解放する命令語が無い場合、上記リソース解放洩れを通知する情報を生成すると共に、上記リソース管理テーブル更新処理手段が生成し更新した上記リソース管理テーブルおよび上記リソース確保・占有位置探索処理手段は生成したステップ位置対応管理テーブルを参照して、最後に更新もしくは参照した当該命令語の位置情報を生成し、生成した位置情報とリソース解放漏れを通知する情報を出力し、
    上記リソース管理テーブル更新処理手段が上記リソース名称テーブルにおける当該リソースの識別名に対応する位置情報を0に更新する際、当該位置情報がすでに0になっている場合には、解放処理過多を示すエラー情報を生成して出力する
    ことを特徴とするプログラム検証システム。
  2. コンピュータを、請求項1に記載のプログラム検証システムにおける各手段として機能させるためのプログラム。
  3. プログラムされたコンピュータ処理により、検証対象のソースプログラムにおけるリソース解放洩れを検出するシステムのプログラム検証方法であって、
    プログラムされたコンピュータ処理を実行する手段として、リソース確保・占有位置探索処理手段とリソース解放位置探索処理手段およびリソース管理テーブル更新処理手段とリソース解放洩れ通知処理手段とを有し、
    上記リソース確保・占有位置探索処理手段は、
    検証対象のソースプログラムと該ソースプログラムが取り込む外部ライブラリおよびアプリケーションプログラムインタフェースを含むファイルとをコード変換して機械語からなる実行可能プログラムを生成し、当該実行可能プログラムの各ステップを順に読み出し、リソースを確保もしくは占有する命令語を検出すると共に、
    上記ソースプログラムのステップ位置と、該ソースプログラムのステップ位置に対応する上記実行可能プログラムのステップ位置とを対応付けて登録したステップ位置対応管理テーブルを生成し、
    上記リソース解放位置探索処理手段は、
    上記リソース確保・占有位置探索処理手段が検出した命令語を起点に、当該実行可能プログラムが終了するまでの全ての処理経路をシミュレーションして探索し、シミュレーション探索した各経路毎に、上記リソース確保・占有位置探索処理手段が検出した命令語で確保もしくは占有したリソースを解放する命令語の有無を探索し、
    上記リソース管理テーブル更新処理手段は、
    上記リソース解放位置探索処理手段がシミュレーション探索した各経路毎に、上記リソース確保・占有位置探索処理手段が検出した命令語で確保もしくは占有したリソースを更新もしくは参照する命令語を検出し、検出した命令語の当該実行可能プログラムにおける位置情報を登録したリソース管理テーブルを生成し、
    上記リソース解放洩れ通知処理手段は、
    上記リソース解放位置探索処理手段の探索結果で上記リソースを解放する命令語が無い場合、当該ソースプログラムのリソース解放洩れを通知する情報を生成して出力し、
    さらに、
    上記リソース管理テーブル更新処理手段は、
    上記検出した上記リソースを更新もしくは参照する命令語で当該リソースの識別名が新規に派生した場合には、
    当該リソースの識別名を当該命令語の位置情報に対応付けて登録するリソース名称テーブルに追加し、
    上記検出した命令語で当該リソースの識別名が変更された場合には、
    上記リソース名称テーブルにおける当該リソースに対してチェーン構造で、変更された識別名と当該命令語の位置情報および変更前の位置情報とを追加すると共に、上記リソース管理テーブルにおける当該リソースの識別名を上記リソース名称テーブルにおける最新の位置情報に変更し、上記リソース管理テーブルにおける位置情報を検出した命令語の当該実行可能プログラムにおける位置情報に変更し、
    上記リソース解放位置探索処理手段が上記リソースを解放する命令語を検出した場合には、上記リソース名称テーブルにおける当該リソースの識別名に対応する位置情報を0に更新し、
    上記リソース解放洩れ通知処理手段は、
    上記リソース解放位置探索処理手段の探索結果で上記リソースを解放する命令語が無い場合、上記リソース解放洩れを通知する情報を生成すると共に、上記リソース管理テーブル更新処理手段が生成し更新した上記リソース管理テーブルおよび上記リソース確保・占有位置探索処理手段は生成したステップ位置対応管理テーブルを参照して、最後に更新もしくは参照した当該命令語の位置情報を生成し、生成した位置情報とリソース解放漏れを通知する情報を出力し、
    上記リソース管理テーブル更新処理手段が上記リソース名称テーブルにおける当該リソースの識別名に対応する位置情報を0に更新する際、当該位置情報がすでに0になっている場合には、解放処理過多を示すエラー情報を生成して出力する
    ことを特徴とするプログラム検証方法。
JP2007067911A 2007-03-16 2007-03-16 プログラム検証方法とシステムおよびプログラム Expired - Fee Related JP4679540B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007067911A JP4679540B2 (ja) 2007-03-16 2007-03-16 プログラム検証方法とシステムおよびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007067911A JP4679540B2 (ja) 2007-03-16 2007-03-16 プログラム検証方法とシステムおよびプログラム

Publications (2)

Publication Number Publication Date
JP2008226208A JP2008226208A (ja) 2008-09-25
JP4679540B2 true JP4679540B2 (ja) 2011-04-27

Family

ID=39844683

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007067911A Expired - Fee Related JP4679540B2 (ja) 2007-03-16 2007-03-16 プログラム検証方法とシステムおよびプログラム

Country Status (1)

Country Link
JP (1) JP4679540B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08272621A (ja) * 1995-03-31 1996-10-18 Hitachi Ltd 動的メモリ領域を確保する関数呼出しの処理方法
JP2000132406A (ja) * 1998-10-21 2000-05-12 Hitachi Ltd オブジェクトメモリ最適化方法
JP2001109644A (ja) * 1999-10-07 2001-04-20 Fujitsu Ltd プログラム検証方法及び装置
JP2004145381A (ja) * 2002-10-21 2004-05-20 Hitachi Ltd ソースプログラムの静的解析装置
JP2006127496A (ja) * 2004-10-01 2006-05-18 Matsushita Electric Ind Co Ltd Api仕様検証装置及び方法、当該方法を実行させるプログラム、当該プログラムを格納する記憶媒体

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8020153B2 (en) * 2004-10-04 2011-09-13 Panasonic Corporation Source code checker, source code checking method, program for causing execution of the method, and storage medium for storing the program

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08272621A (ja) * 1995-03-31 1996-10-18 Hitachi Ltd 動的メモリ領域を確保する関数呼出しの処理方法
JP2000132406A (ja) * 1998-10-21 2000-05-12 Hitachi Ltd オブジェクトメモリ最適化方法
JP2001109644A (ja) * 1999-10-07 2001-04-20 Fujitsu Ltd プログラム検証方法及び装置
JP2004145381A (ja) * 2002-10-21 2004-05-20 Hitachi Ltd ソースプログラムの静的解析装置
JP2006127496A (ja) * 2004-10-01 2006-05-18 Matsushita Electric Ind Co Ltd Api仕様検証装置及び方法、当該方法を実行させるプログラム、当該プログラムを格納する記憶媒体

Also Published As

Publication number Publication date
JP2008226208A (ja) 2008-09-25

Similar Documents

Publication Publication Date Title
JP4148527B2 (ja) 機能テスト・スクリプト生成装置
JP4057938B2 (ja) コンパイラ、コンパイル方法、及びプログラム開発ツール
US8516442B2 (en) Graphical user interface metadata evolution tool
US8122440B1 (en) Method and apparatus for enumerating external program code dependencies
US20110126179A1 (en) Method and System for Dynamic Patching Software Using Source Code
CN112596739B (zh) 一种数据的处理方法和装置
JP2010134643A (ja) テストケースの選択方法及び選択システム
JP2015011372A (ja) デバッグ支援システム、方法、プログラム及び記録媒体
CN111679852B (zh) 一种冲突依赖库的检测方法及装置
CN117112060A (zh) 组件库构建方法、装置、电子设备及存储介质
JP5504960B2 (ja) シミュレーション装置及びシミュレーション方法
CN111552480B (zh) 跨平台编译方法、装置、设备及可读存储介质
JP2009104252A (ja) デバッグ支援装置およびデバッグ支援方法
JP4888790B2 (ja) 契約定義関数検証装置、その方法及びそのプログラム
JP6878707B2 (ja) 試験装置、試験方法および試験プログラム
JP4679540B2 (ja) プログラム検証方法とシステムおよびプログラム
JP5891976B2 (ja) コンパイル実行・管理方法、装置、及びプログラム
Sanchez-Cid et al. Serenity pattern-based software development life-cycle
JP4983027B2 (ja) チェックプログラム及びチェック方法
JP2008020972A (ja) ソフトウエア解析システム
JP2006338399A (ja) プログラム開発装置、プログラム開発ソフトウェア及び記憶媒体
CN116243971B (zh) 一种基于静态依赖自举的内核无关的模块构建方法
JPH10293683A (ja) プログラムの比較解析装置、プログラムの比較解析方法、及びプログラムの比較解析プログラムを記録した機械読み取り可能な記録媒体
JP5067705B2 (ja) 異常系テスト支援装置、異常系テスト支援方法、及びプログラム
CN102262545A (zh) 程序安装方法及装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110104

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110201

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110201

R150 Certificate of patent or registration of utility model

Ref document number: 4679540

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140210

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140210

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140210

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees