(57)【要約】【課題】ソースコードが公開されていない外部ライブラリを呼び出すようなプログラムに関しても、静的検証システムを使用して、メモリリークに関する論理不正を正確かつ迅速に解析することを可能とする。【解決手段】メモリリーク解析装置５０は、１以上のブロックを包含するソフトウェアのソースコード４０をステップごとに実行することによって検証する動的検証システム２０が出力した結果に基づいて、メモリリークが発生したステップにおいて実行されていたブロックを、被疑ブロックとして検出する検出部５１と、ソースコード４０において被疑ブロックを呼び出している特定のブロックを被疑ブロックとして追加し、全ての被疑ブロックの識別子を、検証対象であるブロックを規定するソースコードを検証する静的検証システム３０に対して、検証対象ブロックの識別子として入力する入力部５２と、を備える。【選択図】      図４
2015138422.tif 000002
【特許請求の範囲】
【請求項１】
１以上のブロックを包含するソフトウェアのソースコードをステップごとに実行することによって前記ソースコードを検証する動的検証システムが出力した結果に基づいて、メモリリークが発生した前記ステップにおいて実行されていた前記ブロックを、被疑ブロックとして検出する検出手段と、
前記１以上のブロックのうち、前記ソースコードにおいて前記被疑ブロックを呼び出している特定のブロックを検出し、検出された前記特定のブロックを前記被疑ブロックとして追加し、
全ての前記被疑ブロックを識別する識別子を、前記１以上のブロックのうち、検証対象であるブロックを規定するソースコードを検証する静的検証システムに対して、前記検証対象ブロックを識別する識別子として入力する入力手段と、
を備えるメモリリーク解析装置。
【請求項２】
前記入力手段は、前記ソースコードにおいて、前記被疑ブロックを呼び出している前記特定のブロックを前記被疑ブロックとして追加する処理を、前記ブロック間の主従関係を示す複数の階層にわたって繰り返し行う
請求項１に記載のメモリリーク解析装置。
【請求項３】
前記入力手段は、前記静的検証システムが前記メモリリークの発生原因を検証することが可能である前記ブロックを識別する識別子の一覧情報に、前記被疑ブロックが登録されているか否かを確認し、登録されている場合に、前記被疑ブロックを識別する識別子を、前記検証対象であるブロックを識別する識別子として入力する、
請求項１または２に記載のメモリリーク解析装置。
【請求項４】
請求項１乃至３のいずれかに記載のメモリリーク解析装置と、前記動的検証システムと、前記静的検証システムと、を有する、
メモリリーク解析システム。
【請求項５】
情報処理装置によって、
１以上のブロックを包含するソフトウェアのソースコードをステップごとに実行することによって前記ソースコードを検証する動的検証システムが出力した結果に基づいて、メモリリークが発生した前記ステップにおいて実行されていた前記ブロックを、被疑ブロックとして検出し、
前記１以上のブロックのうち、前記ソースコードにおいて前記被疑ブロックを呼び出している特定のブロックを検出し、検出された前記特定のブロックを前記被疑ブロックとして追加し、
全ての前記被疑ブロックを識別する識別子を、前記１以上のブロックのうち、検証対象であるブロックを規定するソースコードを検証する静的検証システムに対して、前記検証対象ブロックを識別する識別子として入力する、
メモリリーク解析方法。
【請求項６】
前記ソースコードにおいて、前記被疑ブロックを呼び出している前記特定のブロックを前記被疑ブロックとして追加する処理を、前記ブロック間の主従関係を示す複数の階層にわたって繰り返し行う、
請求項５に記載のメモリリーク解析方法。
【請求項７】
前記静的検証システムが前記メモリリークの発生原因を検証することが可能である前記ブロックを識別する識別子の一覧情報に、前記被疑ブロックが登録されているか否かを確認し、登録されている場合に、前記被疑ブロックを識別する識別子を、前記検証対象であるブロックを識別する識別子として入力する、
請求項５または６に記載のメモリリーク解析方法。
【請求項８】
１以上のブロックを包含するソフトウェアのソースコードをステップごとに実行することによって前記ソースコードを検証する動的検証システムが出力した結果に基づいて、メモリリークが発生した前記ステップにおいて実行されていた前記ブロックを、被疑ブロックとして検出する検出処理と、
前記１以上のブロックのうち、前記ソースコードにおいて前記被疑ブロックを呼び出している特定のブロックを検出し、検出された前記特定のブロックを前記被疑ブロックとして追加し、
全ての前記被疑ブロックを識別する識別子を、前記１以上のブロックのうち、検証対象であるブロックを規定するソースコードを検証する静的検証システムに対して、前記検証対象ブロックを識別する識別子として入力する入力処理と、
をコンピュータに実行させる、メモリリーク解析プログラム。
【請求項９】
前記ソースコードにおいて、前記被疑ブロックを呼び出している前記特定のブロックを前記被疑ブロックとして追加する処理を、前記ブロック間の主従関係を示す複数の階層にわたって繰り返し行う前記入力処理
をコンピュータに実行させる、請求項８に記載のメモリリーク解析プログラム。
【請求項１０】
前記静的検証システムが前記メモリリークの発生原因を検証することが可能である前記ブロックを識別する識別子の一覧情報に、前記被疑ブロックが登録されているか否かを確認し、登録されている場合に、前記被疑ブロックを識別する識別子を、前記検証対象であるブロックを識別する識別子として入力する前記入力処理
をコンピュータに実行させる、請求項８または９に記載のメモリリーク解析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、情報処理装置において発生するメモリリークの発生原因を解析するメモリリーク解析装置等に関する。
【背景技術】
【０００２】
情報処理装置において実行されるプログラムは、オペレーティングシステムが有するメモリ管理機能等を利用して、必要とするメモリ領域を動的に確保し、実行が完了したのち、確保したメモリ領域を解放する。しかしながら、係るプログラムに内在する論理不正により、当該プログラムがメモリ領域を解放できない場合がある。このようなメモリ領域の解放の失敗により情報処理装置が使用可能な未使用メモリ領域が減少する不良現象は、メモリリークと呼ばれる。
【０００３】
このようなメモリリークが情報処理装置において繰り返し発生した場合、使用可能な未使用メモリ領域が次第に減少するため、システム性能が低下する虞がある。さらには、当該情報処理装置が係るプログラムの実行を継続できなくなくなる虞もある。したがって、このようなメモリリークの発生原因をより正確に解析する技術に対する期待が高まってきている。
【０００４】
上述した技術に関連する技術として、特許文献１には、プログラムの繰返し実行に伴うメモリの割当て及び解放を監視することにより、メモリが解放されるトレース結果とメモリが解放されないトレース結果との差分として得られる関数を、メモリリークを発生させた原因となる関数であると特定する技術が開示されている。
【０００５】
また、特許文献２には、メモリリークが発生する条件、例えば、メモリリークを発生させるリクエスト及びリクエストの処理順序などによってメモリリークが発生する条件などを特定する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開2009-217617号公報
【特許文献２】特開2008-134709号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
近年、プログラムのソースコードに関して、独自のソースコード解析フローを構築することにより、論理不正あるいはセキュリティの脆弱性等に関する高度な解析を行う静的検証システムが出現してきている。このような静的検証システムは、解析対象であるプログラムを実際に実行させることをせずに、係るプログラムのソースコードに内在するメモリリーク等に関する論理不正を、正確かつ迅速に解析することができる。
【０００８】
係る静的検証システムは、ソースコードが全て開示されたプログラムに関しては、解析を正確に行うことが可能である。しかしながら、プログラムによっては、ソースコードが公開されていない外部ライブラリとして提供された関数等を呼び出す場合がある。そして、係る外部ライブラリとして提供された関数等がメモリの確保あるいは解放を行っているような場合は、当該静的検証システムを使用して、メモリリークに関する論理不正を正確かつ迅速に行うことが困難となる。したがって、ソースコードが公開されていない外部ライブラリとして提供された関数等を呼び出すようなプログラムに関しても、静的検証システムを使用して、メモリリークに関する論理不正を正確かつ迅速に解析できるようにすることが課題である。特許文献１乃至２が開示した技術は、静的検証システムを利用した技術ではなく、係る課題を解決することはできない。
【０００９】
本願発明の主たる目的は、この課題を解決した、メモリリーク解析装置、メモリリーク解析システム、メモリリーク解析方法、及び、メモリリーク解析プログラムを提供することである。
【課題を解決するための手段】
【００１０】
本願発明に係るメモリリーク解析装置は、１以上のブロックを包含するソフトウェアのソースコードをステップごとに実行することによって前記ソースコードを検証する動的検証システムが出力した結果に基づいて、メモリリークが発生した前記ステップにおいて実行されていた前記ブロックを、被疑ブロックとして検出する検出手段と、前記１以上のブロックのうち、前記ソースコードにおいて前記被疑ブロックを呼び出している特定のブロックを検出し、検出された前記特定のブロックを前記被疑ブロックとして追加し、全ての前記被疑ブロックを識別する識別子を、前記１以上のブロックのうち、検証対象であるブロックを規定するソースコードを検証する静的検証システムに対して、前記検証対象ブロックを識別する識別子として入力する入力手段と、を備えることを特徴とする。
【００１１】
上記目的を達成する他の見地において、本願発明のメモリリーク解析方法は、情報処理装置によって、１以上のブロックを包含するソフトウェアのソースコードをステップごとに実行することによって前記ソースコードを検証する動的検証システムが出力した結果に基づいて、メモリリークが発生した前記ステップにおいて実行されていた前記ブロックを、被疑ブロックとして検出し、前記１以上のブロックのうち、前記ソースコードにおいて前記被疑ブロックを呼び出している特定のブロックを検出し、検出された前記特定のブロックを前記被疑ブロックとして追加し、全ての前記被疑ブロックを識別する識別子を、前記１以上のブロックのうち、検証対象であるブロックを規定するソースコードを検証する静的検証システムに対して、前記検証対象ブロックを識別する識別子として入力することを特徴とする。
【００１２】
また、上記目的を達成する更なる見地において、本願発明に係るメモリリーク解析プログラムは、１以上のブロックを包含するソフトウェアのソースコードをステップごとに実行することによって前記ソースコードを検証する動的検証システムが出力した結果に基づいて、メモリリークが発生した前記ステップにおいて実行されていた前記ブロックを、被疑ブロックとして検出する検出処理と、前記１以上のブロックのうち、前記ソースコードにおいて前記被疑ブロックを呼び出している特定のブロックを検出し、検出された前記特定のブロックを前記被疑ブロックとして追加し、全ての前記被疑ブロックを識別する識別子を、前記１以上のブロックのうち、検証対象であるブロックを規定するソースコードを検証する静的検証システムに対して、前記検証対象ブロックを識別する識別子として入力する入力処理と、をコンピュータに実行させることを特徴とする。
【００１３】
更に、本発明は、係るメモリリーク解析プログラム（コンピュータプログラム）が格納された、コンピュータ読み取り可能な、不揮発性の記憶媒体によっても実現可能である。
【発明の効果】
【００１４】
本願発明は、ソースコードが公開されていない外部ライブラリを呼び出すようなプログラムに関しても、静的検証システムを使用して、メモリリークに関する論理不正を正確かつ迅速に解析することを可能とする。
【図面の簡単な説明】
【００１５】
【図１】本願発明の第１の実施形態に係るメモリリーク解析システムの構成を示すブロック図である。
【図２】本願発明の第１の実施形態に係るメモリリーク解析システムの動作を示すフローチャートである。
【図３】本願発明の第１の実施形態に係るメモリリーク解析装置が、静的検証システムに対して解析を指示する関数を選択する動作を例示する図である。
【図４】本願発明の第２の実施形態に係るメモリリーク解析システムの構成を示すブロック図である。
【図５】本願発明の各実施形態のメモリリーク解析装置を実行可能な情報処理装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１６】
以下、本願発明の実施の形態について図面を参照して詳細に説明する。
【００１７】
＜第１の実施形態＞
図１は、第１の実施形態に係るメモリリーク解析システム１の構成を概念的に示すブロック図である。本実施形態に係るメモリリーク解析システム１は、メモリリーク解析装置１０、動的検証システム２０、及び、静的検証システム３０を有する。
【００１８】
動的検証システム２０は、入力されたプログラムのソースコード４０をステップごとに実行し、当該ステップにおけるソースコード４０の実行状態を示す情報を、メモリリーク解析装置１０へ出力する。動的検証システム２０としては、例えば、「ＩＣＥ（Ｉｎ−Ｃｉｕｃｕｉｔ  Ｅｍｕｌａｔｏｒ）」（登録商標）を使用したシステム等が知られている。
【００１９】
静的検証システム３０は、入力されたソースコード４０について、所定のソースコード解析フローを構築することにより、ソースコード４０に関する記述を基に、内在する論理不正等を解析する。静的検証システム３０としては、例えば、ＴｅｃｈＭａｔｒｉｘ社製の「Ｃ＋＋ｔｅｓｔ」（登録商標）あるいは「Ｊｔｅｓｔ」（登録商標）を使用したシステム等が知られている。
【００２０】
静的検証システム３０は、メモリリーク検証可能関数一覧情報３１を保持している。メモリリーク検証可能関数一覧情報３１は、静的検証システム３０がメモリリークについて解析することが可能な関数に関する関数名の一覧情報である。すなわち、メモリリーク検証可能関数一覧情報３１に登録されていない関数は、メモリの確保あるいは解放には関わらないようなメモリリークには関係しない関数、あるいは、メモリリークには関係するがソースコードが不明であるため解析できない関数等である。
【００２１】
静的検証システム３０は、外部から所定の関数名が入力された場合、ソースコード４０における当該関数に関する記述について、メモリリーク等の論理不正を解析する。
【００２２】
メモリリーク解析装置１０は、検出部１１、及び、入力部１２を備えている。検出部１１、及び、入力部１２は、電子回路の場合もあれば、コンピュータプログラムとそのコンピュータプログラムに従って動作するプロセッサによって実現される場合もある。
【００２３】
検出部１１は、動的検証システム２０から入力されたソースコード４０の実行状態を示す情報を基に、メモリリークが発生したステップにおいて実行されていた関数を、当該メモリリークを発生させた疑いがある被疑関数として検出する。検出部１１は、被疑関数に関する検出結果を、入力部１２へ入力する。
【００２４】
図３に、本実施形態に係るメモリリーク解析装置１０が、静的検証システム３０に対して解析を指示する関数を選択する動作を例示する。図３に示す例において、ソースコード４０は、関数を記載したソースコードである、関数Ａ４０１、関数Ｂ４０２、関数Ｃ４０３、関数Ｇ４０４、及び、関数Ｈ４０５を包含している。関数Ｘ４０６及び関数Ｙ４０７は、ソースコードが公開されていない外部ライブラリとして提供された関数を記載したソースコードであり、順に、関数Ｂ４０２、関数Ｃ４０３によって呼び出されている。また、関数Ｂ４０２は、関数Ａ４０１によって呼び出されていることとする。
【００２５】
図３に示す例の場合、動的検証システム２０がソースコード４０をステップごとに実行した際に、関数Ｘ４０６、関数Ｇ４０４、及び、関数Ｈ４０５を実行しているステップにおいてメモリリークが発生したとする。この場合、動的検証システム２０は、ソースコード４０をステップごとに実行した実行状態を示す情報を検出部１１へ入力する。係る実行状態を示す情報は、メモリリークが発生したステップにおいて実行されていた関数が、関数Ｘ４０６、関数Ｇ４０４、及び、関数Ｈ４０５であることを示す情報を包含している。検出部１１は、動的検証システム２０から入力されたソースコード４０の実行状態を示す情報から、メモリリークが発生したステップにおいて実行されていた関数が、関数Ｘ４０６、関数Ｇ４０４、及び、関数Ｈ４０５であることを抽出する。検出部１１は、関数Ｘ４０６、関数Ｇ４０４、及び、関数Ｈ４０５が被疑関数であることを、入力部１２へ入力する。
【００２６】
入力部１２は、ソースコード４０における、そのソースコードが規定している各ブロックの主従（従属）関係（例えばツリー構造）において、検出部１１から通知された被疑関数を呼び出している上位階層の関数を検索する。入力部１２は、係る検索の結果においてヒットした関数を、被疑関数として追加し、ソースコード４０において、追加した被疑関数を呼び出している関数をさらに検索する。入力部１２は、ソースコード４０において、新たに追加した被疑関数を呼び出している関数が存在しなくなるまで、係る検索を繰り返し実行する。
【００２７】
図３に示す例の場合、入力部１２は、被疑関数の１つである関数Ｘ４０６を呼び出している関数Ｂ４０２と、関数Ｂ４０２を呼び出している関数Ａ４０１とを、被疑関数として追加する。
【００２８】
入力部１２は、全ての被疑関数について、メモリリーク検証可能関数一覧情報３１に登録されているか否かを確認し、メモリリーク検証可能関数一覧情報３１に登録された被疑関数についてのみ、関数名を静的検証システム３０に入力する。
【００２９】
図３に示す例の場合、メモリリーク検証可能関数一覧情報３１には、関数を識別可能な識別子である、関数Ａ３１１、関数Ｂ３１２、関数Ｃ３１３、関数Ｄ３１４、関数Ｅ３１５、及び、関数Ｆ３１６が登録されている。そこでこの場合、入力部１２は、被疑関数であって、かつ、メモリリーク検証可能関数一覧情報３１に識別子が登録された関数である関数Ａ４０１及び関数Ｂ４０２について、メモリリークの解析を行うように、静的検証システム３０に指示する。静的検証システム３０は、係る指示に基づき、ソースコード４０における関数Ａ４０１及び関数Ｂ４０２を検証する。
【００３０】
次に図２のフローチャートを参照して、本実施形態に係るメモリリーク解析システム１の動作（処理）について詳細に説明する。
【００３１】
動的検証システム２０は、ソースコード４０をステップごとに実行することにより検証した検証結果を、検出部１１へ入力する（ステップＳ１０１）。検出部１１は、動的検証システム２０から入力された検証結果を基に、メモリリークが発生したステップにおいて実行されていた被疑関数を検出し、被疑関数の関数名を入力部１２へ入力する（ステップＳ１０２）。
【００３２】
入力部１２は、ソースコード４０において、被疑関数を呼び出している上位階層の関数を検索する（ステップＳ１０３）。被疑関数を呼び出している関数が新たに存在する場合（ステップＳ１０４でＹｅｓ）、入力部１２は、検出された関数を、被疑関数として追加し（ステップＳ１０５）、処理はステップＳ１０３へ戻る。
【００３３】
被疑関数を呼び出している関数が新たに存在しない場合（ステップＳ１０４でＮｏ）、入力部１２は、被疑関数のうち、メモリリーク検証可能関数一覧情報３１に登録されている被疑関数の関数名を、静的検証システム３０へ入力する（ステップＳ１０６）。静的検証システム３０は、入力部１２から入力された被疑関数に関するソースコードを検証し（ステップＳ１０７）、全体の処理は終了する。
【００３４】
本実施形態に係るメモリリーク解析システム１は、ソースコードが公開されていない外部ライブラリを呼び出すようなプログラムに関しても、静的検証システム３０を使用して、メモリリークに関する論理不正を正確かつ迅速に解析することができる。その理由は、検出部１１が、動的検証システム２０が出力した情報を基に、メモリリークの原因である疑いのある被疑関数を検出し、入力部１２が、ソースコード４０を検索して、被疑関数を呼びだしている関数を被疑関数として追加したのち、被疑関数の関数名を静的検証システム３０に入力するからである。
【００３５】
静的検証システム３０は、ソースコード４０に関する記述を基に、ソースコード４０に関するメモリリーク等の論理不正を検証する。したがって、例えば、図３に示す例の場合において、関数Ｘ４０９によるメモリを確保あるいは解放する処理に関係する、関数Ｂ４０２における論理が不正であるような場合は、静的検証システム３０が、係る論理不正が関数Ｂ４０２に内在していることを検出することは困難である。
【００３６】
本実施形態に係るメモリリーク解析システム１は、動的検証システム２０を利用することにより、ソースコードが公開されていない外部ライブラリを使用する場合など静的検証システム３０のみでは論理不正を検出することが困難な場合であっても、被疑関数を検出することができる。そして、メモリリーク解析装置１０が検出した被疑関数の関数名を静的検出システム３０に入力することにより、静的検証システム３０は、被疑関数について、詳細な検証を行うことができる。
【００３７】
また、本実施形態に係るメモリリーク解析装置１０において、入力部１２は、被疑関数を呼び出している関数を被疑関数として追加する処理を、被疑関数間の主従関係を示す複数の階層にわたって、被疑関数を呼び出している関数が存在しなくなるまで繰り返し行う。したがって、メモリリーク解析システム１は、被疑関数と論理的な接続関係のある関数を全て検出したのち、これら全ての関数について静的検証システム３０による検証を行うため、論理不正を漏れなく検証することができる。
【００３８】
さらに、本実施形態に係るメモリリーク解析装置１０において、入力部１２は、被疑関数のうち、メモリリーク検証可能関数一覧情報３１に登録されている被疑関数の関数名を、静的検証システム３０へ入力する。検出部１１が、動的検証システム２０から入力された検証結果を基に検出した被疑関数の中には、メモリを確保あるいは解放する処理に関係しない関数が含まれている可能性がある。静的検証システム３０が係る関数も含めて論理不正を検証したのでは、論理不正を検証する効率が悪くなる。したがって、メモリリーク解析装置１０は、静的検証システム３０が検証を行う被疑関数を、メモリリーク検証可能関数一覧情報３１に登録されている関数に絞り込むことにより、論理不正を迅速に解析することができる。
【００３９】
尚、本実施形態では、メモリリーク解析システム１が論理不正を解析する対象を関数としているが、係る対象は関数に限定されるわけではなく、ソースコード４０に包含される記述であればよい。例えば、メモリリーク解析システム１は、ソースコード４０に包含されるサブルーチンブロック等を、論理不正を解析する対象としてもよい。
【００４０】
＜第２の実施形態＞
図４は第２の実施形態のメモリリーク解析装置５０の構成を概念的に示すブロック図である。
【００４１】
本実施形態のメモリリーク解析装置５０は、検出部５１及び入力部５２を備えている。
【００４２】
検出部５１は、動的検証システム２０が出力したソースコード４０に関する検証結果を入手する。動的検証システム２０は、１以上のブロックを包含するソフトウェアのソースコード４０をステップごとに実行することによって、ソースコード４０を検証する。検出部５１は、係る結果を基に、メモリリークが発生したステップにおいて実行されていたブロックを、被疑ブロックとして検出する。
【００４３】
入力部５２は、係る１以上のブロックのうち、ソースコード４０において係る被疑ブロックを呼び出している特定のブロックを検出し、検出された係る特定のブロックを被疑ブロックとして追加する。そして、入力部５２は、全ての被疑ブロックを識別する識別子を、静的検証システム３０に対して、係る１以上のブロックのうち、検証対象であるブロックを識別する識別子として入力する。静的検証システム３０は、係る検証対象であるブロックを規定するソースコードを検証する。
【００４４】
本実施形態に係るメモリリーク解析装置５０は、ソースコードが公開されていない外部ライブラリを呼び出すようなプログラムに関しても、静的検証システムを使用して、メモリリークに関する論理不正を正確かつ迅速に解析することができる。その理由は、検出部５１が、動的検証システム２０が出力した情報を基に、メモリリークの原因である疑いのある被疑関数を検出し、入力部５２が、ソースコード４０を検索して、被疑関数を呼びだしている関数を被疑関数として追加したのち、被疑関数の関数名を静的検証システム３０に入力するからである。
【００４５】
＜ハードウェア構成例＞
上述した各実施形態において図１、及び、図４に示した各部は、専用のＨＷ（電子回路）によって実現することができる。また、少なくとも検出部１１乃至５１、及び、入力部１２乃至５２は、ソフトウェアプログラムの機能（処理）単位（ソフトウェアモジュール）と捉えることができる。但し、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。この場合のハードウェア環境の一例を、図５を参照して説明する。
【００４６】
図５は、本発明の模範的な実施形態に係るメモリリーク解析装置を実行可能な情報処理装置９００（コンピュータ）の構成を例示的に説明する図である。即ち、図５は、図１、及び、図４に示したメモリリーク解析装置を実現可能なコンピュータ（情報処理装置）の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。
【００４７】
図５に示した情報処理装置９００は、ＣＰＵ９０１（Ｃｅｎｔｒａｌ＿Ｐｒｏｃｅｓｓｉｎｇ＿Ｕｎｉｔ）、ＲＯＭ９０２（Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）、ＲＡＭ９０３（Ｒａｎｄｏｍ＿Ａｃｃｅｓｓ＿Ｍｅｍｏｒｙ）、ハードディスク９０４（記憶装置）、外部装置との通信インタフェース９０５（Ｉｎｔｅｒｆａｃｅ：以降、「Ｉ／Ｆ」と称する）、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ＿Ｄｉｓｃ＿Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）等の記憶媒体９０７に格納されたデータを読み書き可能なリーダライタ９０８、及び、入出力インタフェース９０９を備え、これらの構成がバス９０６（通信線）を介して接続された一般的なコンピュータである。
【００４８】
そして、上述した実施形態を例に説明した本発明は、図５に示した情報処理装置９００に対して、その実施形態の説明において参照したブロック構成図（図１、及び、図４）におけるメモリリーク解析装置１０及び５０、或いはフローチャート（図２）の機能を実現可能なコンピュータプログラムを供給した後、そのコンピュータプログラムを、当該ハードウェアのＣＰＵ９０１に読み出して解釈し実行することによって達成される。また、当該装置内に供給されたコンピュータプログラムは、読み書き可能な揮発性の記憶メモリ（ＲＡＭ９０３）またはハードディスク９０４等の不揮発性の記憶デバイスに格納すれば良い。
【００４９】
また、前記の場合において、当該ハードウェア内へのコンピュータプログラムの供給方法は、ＣＤ−ＲＯＭ等の各種記憶媒体９０７を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等のように、現在では一般的な手順を採用することができる。そして、このような場合において、本発明は、係るコンピュータプログラムを構成するコード或いは、そのコードが格納された記憶媒体９０７によって構成されると捉えることができる。
【００５０】
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【符号の説明】
【００５１】
１    メモリリーク解析システム
１０    メモリリーク解析装置
１１    検出部
１２    入力部
２０    動的検証システム
３０    静的検証システム
３１    メモリリーク検証可能関数一覧情報
３１１    関数Ａ
３１２    関数Ｂ
３１３    関数Ｃ
３１４    関数Ｄ
３１５    関数Ｅ
３１６    関数Ｆ
４０    ソースコード
４０１    関数Ａ
４０２    関数Ｂ
４０３    関数Ｃ
４０４    関数Ｇ
４０５    関数Ｈ
４０６    関数Ｘ
４０７    関数Ｙ
５０    メモリリーク解析装置
５１    検出部
５２    入力部
９００    情報処理装置
９０１    ＣＰＵ
９０２    ＲＯＭ
９０３    ＲＡＭ
９０４    ハードディスク
９０５    通信インタフェース
９０６    バス
９０７    記憶媒体
９０８    リーダライタ
９０９    入出力インタフェース
【図１】
2015138422.tif 000003
【図２】
2015138422.tif 000004
【図３】
2015138422.tif 000005
【図４】
2015138422.tif 000006
【図５】
2015138422.tif 000007