JPH10269105A - トレースシステム、リソース解放漏れ検出システム及び記録媒体 - Google Patents

トレースシステム、リソース解放漏れ検出システム及び記録媒体

Info

Publication number
JPH10269105A
JPH10269105A JP10013654A JP1365498A JPH10269105A JP H10269105 A JPH10269105 A JP H10269105A JP 10013654 A JP10013654 A JP 10013654A JP 1365498 A JP1365498 A JP 1365498A JP H10269105 A JPH10269105 A JP H10269105A
Authority
JP
Japan
Prior art keywords
dll
application
hook
call
information
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
JP10013654A
Other languages
English (en)
Inventor
Morimasa Tanimura
守正 谷村
Takeshi Nishisaka
毅 西坂
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.)
N T T DATA TSUSHIN KK
NTT Data Group Corp
Original Assignee
N T T DATA TSUSHIN KK
NTT Data Communications Systems 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 N T T DATA TSUSHIN KK, NTT Data Communications Systems Corp filed Critical N T T DATA TSUSHIN KK
Priority to JP10013654A priority Critical patent/JPH10269105A/ja
Publication of JPH10269105A publication Critical patent/JPH10269105A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 バイナリで提供されたコンポーネントを組み
合わせて作成されたシステムにおいても、リコンパイル
せずにOSのグローバルなトレース及びそれによるメモ
リリークの効果的な検出を可能とする。 【解決手段】 フック用DLL2は、アプリケーション
部1のAPI呼び出しをフックする。フック用DLL2
は、API呼び出しに対応する本来のDLLの代わりに
挿入される。処理用DLL3は、該当するAPI呼び出
しに対応する処理を実行する。フック用DLL2は、ア
プリケーション部1の呼び出しをフックし、該呼び出し
の情報をログファイル部4に送信するとともに、該呼び
出しを処理用DLL3に転送する。ログファイル部4
は、フック用DLL2でフックされた呼び出し情報をロ
ギングする。ビューワ5は、ログファイル部4のログ内
容を読み込み表示する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、アプリケーショ
ンプログラムの開発或いはチェック等に際し、システム
全体のグローバルなトレースを行うためのトレースシス
テム及びリソースの解放漏れを検出するためのシステム
に係り、特にシステム全体のパフォーマンスチューニン
グやメモリリークの効果的な検出に好適なトレースシス
テム及びリソース解放漏れ検出システムに関する。
【0002】
【従来の技術】オペレーティングシステム(OS: Operat
ing System〜以下、「OS」と称する)において動作す
るアプリケーションプログラム及びシステムプログラム
等のプログラムにおいては、OSのアプリケーションイ
ンタフェース(API: Application Program Interface:
以下、「API」と称する)を使用して、メモリ割り当
てを行う。
【0003】プログラムに対して割り当てられたメモリ
は、メモリが不要となった時点で、解放される。一般に
メモリ等のリソース(資源)には、限りがあるため、利
用済みのメモリが解放されなければ、利用できるメモリ
の量が低減し、プログラムを正常に実行できなくなる。
ところが、プログラムの不備により、一旦割り当てられ
たメモリが不要になった時点でも解放しないことがあ
る。このように、不要となったメモリを解放せずに割り
当てられたままにしておくことを、メモリリーク(メモ
リ解放漏れ)と称する。このメモリリークを放置する
と、前述のように、利用できるメモリの量が低減し、プ
ログラムを正常に実行できなくなる。
【0004】
【発明が解決しようとする課題】システムが、大きくな
ればなるほど、上述のメモリリークが発生してしまう可
能性が高くなる。一方、メモリリーク自体は、小さなメ
モリリークほど、開発における各種チェック工程で見落
とす可能性が高い。このように、開発工程でメモリリー
クが見落とされた場合、システムの最終確認フェーズ、
すなわち連続運転試験において、やっと発見されること
になる。しかも、メモリリークが、プログラムのどの部
分で発生しているかを見分けるためには、ソースレビュ
ーなどの地道な方法で行うしかなかった。
【0005】特に、ウィンドウズNT(Windows NT)及
びウィンドウズ95(Windows 95)(「Windows」は登
録商標)等のOSは、複数のプロセスからなり、個々の
プロセスは、オブジェクトリンク及び埋め込み(以下、
「OLE」)機能を利用するOLEサーバオブジェクト
であるOLEコントロール(以下、「OCX」)、並び
にダイナミックリンクライブラリ(以下、「DLL」)
等を1つ以上含んでいる。なお、OCXは、最近では、
Active Xコントロールと称されるコンポーネントとして
位置付けられている。
【0006】このようなOSでは、プロセス単位でしか
リソースを管理していないため、プロセスに属している
DLLやOCX等に問題があったとしても、それらを切
り分けることは不可能である。このため、場合によって
は、システムの全域にわたってメモリリークの原因を調
査する必要がある。
【0007】このように、アプリケーションプログラム
及びシステムプログラムの開発に際して、メモリリーク
が、一旦、発生してしまうと、その解決に膨大な時間を
費やすことが少なくない。
【0008】通常、メモリリークの検出等を目的とし
て、プログラムのトレースを行う場合には、特別なオブ
ジェクト(ここで、オブジェクトとは、OBJファイル
又はC++におけるオブジェクトを指している)をリン
クするなどの手法を用いる。このため、プログラムのト
レースのために、ソースコードからのコンパイル及びリ
ンクを再度やり直す必要がある。しかしながら、この方
法では、最近、広く用いられているOCX及びActiveX
コントロール等のように、バイナリで提供されているコ
ンポーネントを組み合わせて作成したソフトウェアにお
いては、不完全な情報しか与えられず、有効に利用する
ことができない。
【0009】この発明は、上述した事情に鑑みてなされ
たもので、メモリリークの効果的な検出を可能とするこ
とを目的とする。
【0010】
【課題を解決するための手段】上記目的を達成するた
め、この発明の第1の観点によるトレースシステムは、
アプリケーションプログラムとのインタフェースを取る
ためのアプリケーションインタフェースを備えるオペレ
ーティングシステムと、前記オペレーティングシステム
上でアプリケーションプログラムを実行するアプリケー
ション手段と、前記アプリケーション手段による前記ア
プリケーションプログラムの実行に際し、前記アプリケ
ーションプログラムによる前記アプリケーションインタ
フェースの呼び出しを中継するとともに、該呼び出しの
情報を取り込むフック手段と、前記フック手段で取り込
まれた前記情報を蓄積記録するログ記録手段と、を具備
することを特徴とする。
【0011】このシステムによれば、アプリケーション
プログラム(AP)がオペレーティングシステム(O
S)のアプリケーションインタフェース(API)を呼
び出した際に、フック手段がこの呼び出しの情報を取り
込み、ログ記録手段がその内容を記録する。従って、例
えば、アプリケーションインタフェースの呼び出しが、
リソース、例えば、メモリの割り当てや解放に関するも
のである場合には、割り当て及び解放の履歴がログ記録
手段により自動的に生成される。従って、リソースの割
り当てと解放の対を判別し、割り当てたが解放されてい
ないものをログから判別することにより、リソースの解
放忘れを判別することができる。また、このような構成
によれば、アプリケーションプログラムとオペレーティ
ングシステムには、実質的な変更を加えることなく、呼
び出し情報の取得が可能となる。
【0012】リソースのリークとしては、例えば、ファ
イル資源、セマフォ、Mutex等の排他資源、ペン、ブラ
シ、デバイスコンテキストなどのGDIオブジェクトの
リーク等がある。
【0013】前記フック手段は、例えば、前記アプリケ
ーションインタフェースに対するアプリケーションプロ
グラムの呼び出しを前記アプリケーションインタフェー
スの代わりに受ける手段と、前記呼び出しの情報を前記
ログ記録手段に提供する手段と、前記呼び出しを前記ア
プリケーションインタフェースに転送する手段とから構
成される。
【0014】前記ログ記録手段で記録された前記呼び出
しの情報を出力する手段を配置してもよい。
【0015】前記フック手段から前記ログ記録手段へ転
送された情報の記録のオンとオフを制御するロギング制
御手段を配置してもよい。このロギング制御手段は、前
記フック手段による前記アプリケーションインタフェー
スに対する前記呼び出しの転送の停止と実行を、例え
ば、外部操作に応答して制御する。
【0016】前記ロギング制御手段は、前記ログ記録手
段に記録される前記情報の内容を制御する手段を含んで
もよい。
【0017】前記フック手段は、例えば、前記アプリケ
ーションプログラムによる前記アプリケーションインタ
フェースの呼び出しのうち、前記オペレーティングシス
テムのリソース割り当てに関するリソース割り当て情報
を取り込む。さらに、前記ログ記録手段により、記録さ
れたリソースの割り当てと解放の対を検出し、割り当て
と解放の一方のみを検出し、他方を検出できない時に、
その旨を報知する対検出手段を配置し、リソースの解放
漏れを報知できるようにしてもよい。
【0018】上記目的を達成するため、この発明の第2
の観点によるリソース解放漏れ検出システムは、オペレ
ーティングシステム上でアプリケーションプログラムを
実行するアプリケーション手段と、前記アプリケーショ
ンプログラムの実行に際し、前記アプリケーションプロ
グラムから前記オペレーティングシステムのアプリケー
ションインタフェースに送られるリソースの割り当てと
解放の要求に関するリソース割当情報を取り込むフック
手段と、前記フック手段で取り込まれた前記リソース割
り当て情報を蓄積記録するログ記録手段と、を具備する
ことを特徴とする。
【0019】前記ログ記録手段により記録されたリソー
スの割り当てと解放の対を検出し、割り当てと解放の一
方のみを検出し、他方を検出できない時に、その旨を報
知する対検出手段を配置しても良い。
【0020】このようなシステムによれば、オペレーテ
ィングシステムとアプリケーションプログラムには、実
質的な影響を与えること無く、アプリケーションインタ
フェースの呼び出しを検出し、この呼び出し情報に基づ
いてリソースの割り当てと解放の履歴をログに取ること
ができる。従って、このログをチェックすることによ
り、リソースの解放忘れを判別することができる。リソ
ースとしては、例えば、ファイル資源、セマフォ、Mute
x等の排他資源、ペン、ブラシ、デバイスコンテキスト
などのGDIオブジェクト等がある。
【0021】前記ログ記録手段により記録されたリソー
スの割り当てと解放の対を検出し、割り当てと解放の一
方のみを検出し、他方を検出できない時に、その旨を報
知する対検出手段を配置して、リソースの解放漏れを自
動的に検出するようにしてもよい。リソースとしてメモ
リ等が好適である。
【0022】また、この発明の第3の観点にかかるコン
ピュータで読み取り可能な記録媒体には、コンピュータ
を、アプリケーションプログラムとのインタフェースを
取るためのアプリケーションインタフェースを備えるオ
ペレーティングシステム上でアプリケーションプログラ
ムを実行するアプリケーション手段、前記アプリケーシ
ョン手段による前記アプリケーションプログラムの実行
に際し、前記アプリケーションプログラムによる前記ア
プリケーションインタフェースの呼び出しを中継すると
ともに、該呼び出しの情報を取り込むフック手段と、前
記フック手段で取り込まれた前記呼び出しの情報を蓄積
記録するログ記録手段、として機能させるためのプログ
ラム(固定データを含む)が記録されている。
【0023】また、この発明の第4の観点にかかるコン
ピュータで読み取り可能な記録媒体には、コンピュータ
を、オペレーティングシステム上でアプリケーションプ
ログラムを実行するアプリケーション手段、前記アプリ
ケーションプログラムの実行に際し、前記アプリケーシ
ョンプログラムから前記オペレーティングシステムのア
プリケーションインタフェースに送られるリソースの割
り当てと解放の要求に関するリソース割当情報を取り込
むフック手段、前記フック手段で取り込まれた前記リソ
ース割当情報を蓄積記録するログ記録手段、として機能
させるためのプログラムが記録されている。
【0024】
【発明の実施の形態】図1〜図6を参照して、この発明
の第1の実施の形態に係るトレースシステムについて説
明する。
【0025】この実施の形態は、オペレーティングシス
テム(OS)として、ウィンドウズNT及びウィンドウ
ズ95等を使用し、これらのOSにおけるシステムコー
ルがダイナミックリンクライブラリ(Dynamic Link Lib
rary:DLL〜以下、「DLL」と称する)によってア
プリケーションプログラムとインタフェースしているこ
とに着目し、該DLLをフック用の特殊なDLLと置き
換える。このフック用のDLLによって、全てのアプリ
ケーションインタフェース(Application Program Inte
rface:API〜以下、「API」と称する)の呼び出
しを横取り、すなわちフックして、APIの呼び出し元
及び時刻等をロギングする。
【0026】ロギングにより作成されるログファイル
を、必要なときに読み込み、これをビューワによってビ
ジュアルに表示する。このようにすることによって、O
Sのグローバルなトレースを実現し、システムの最適化
に必要な、プロセス別及びモジュール別などの情報を得
ることができる。さらに、メモリ割り当て及びハンドル
割り当て等のOSのリソースの割り当てに関する割り当
て状況を追跡することによって、メモリリークが発生し
ている箇所を効果的に解析及び表示することが可能とな
る。このシステムにより、メモリリークの自動的な解析
及び表示も実現可能となる。
【0027】また、メモリに限らず、ファイル資源、セ
マフォ、Mutex等の排他資源、ペン、ブラシ、デバイス
コンテキスト等のGDIオブジェクト等のリークもトレ
ース可能である。
【0028】図1は、この発明の第1の実施の形態に係
るトレースシステムの構成を示している。
【0029】図1に示すトレースシステムは、アプリケ
ーション部1、第1のフック用DLL2、第1の処理用
DLL3、ログファイル部4、ビューワ5、第2のフッ
ク用DLL6、第2の処理用DLL7、及びコントロー
ルマネージャ8を具備している。アプリケーション部
1、第1のフック用DLL2、第1の処理用DLL3、
ビューワ5、第2のフック用DLL6、第2の処理用D
LL7、及びコントロールマネージャ8の各部は、コン
ポーネントとしてのプログラムモジュールにより構成さ
れる。また、ログファイル部4は、記憶装置に記憶され
るファイルにより構成される。
【0030】アプリケーション部1は、OS(オペレー
ティングシステム)上で、アプリケーションプログラム
(AP)を実行する。このアプリケーション部1とOS
とのインタフェースがアプリケーションインターフェー
ス(API)である。OSのシステムコールは、DLL
によりアプリケーション部1とインタフェースしてい
る。
【0031】第1のフック用DLL2は、アプリケーシ
ョン部1のAPI呼び出しをフック(横取り)するため
のDLLであり、API呼び出しに対応する本来のDL
Lの代わりに挿入される。
【0032】第1の処理用DLL3は、アプリケーショ
ン部1のAPI呼び出しに対応する本来のDLLであ
り、OSの一部を構成し、該当するAPI呼び出しに対
応する処理を実行する。
【0033】第1のフック用DLL2は、アプリケーシ
ョン部1の本来のDLL(第1の処理用DLL3)に対
する呼び出しをフックし、該呼び出しの情報をログファ
イル部4に送信するとともに、該呼び出しを第1の処理
用DLL3に転送する。ログファイル部4は、第1のフ
ック用DLL2等でフックされた呼び出し情報をロギン
グ、すなわち記録・蓄積する。
【0034】ビューワ5は、ログファイル部4のログ内
容を読み込み表示する。このビューワ5自体も一種のア
プリケーションであるので、APIを使用する場合に
は、第2のフック用DLL6を介して、第2の処理用D
LL7を呼び出す。第2のフック用DLL6は、この呼
び出しをフックして、その呼び出しの情報をログファイ
ル部4に送る。
【0035】コントロールマネージャ8は、フック用D
LL2及び6の動作を制御・管理する。このコントロー
ルマネージャ8を外部操作することにより、呼び出し情
報のフックのオン/オフ、フックする呼び出し情報の設
定選択、並びに処理用DLL3及び7への呼び出しの転
送動作のストップ(停止)/ゴー(続行)を制御するこ
とができる。
【0036】図2のフローチャートを参照して、トレー
スシステムのインストール時の処理の流れを説明する。
【0037】インストールを開始すると、まず、トレー
スシステムを適用しようとする処理用DLL、例えば処
理用DLL3及び7を検索する(ステップS1)。処理
用DLL3及び7が検索されると、検索された処理用D
LL3及び7の原ファイル名が他のダミーファイル名に
リネームされる(ステップS2)。
【0038】次に、フック用DLL2及び6が先にリネ
ームした処理用DLLの原ファイル名でシステムに導入
される(ステップS3)。そして、ログファイルを参照
するためのログファイルビューワがシステムに組み込ま
れ(ステップS4)、さらにフック用DLL2及び6を
制御するためのコントロールマネージャ8がシステムに
組み込まれる(ステップS5)。
【0039】上述の処理について、ここでは、OSとし
て、マイクロソフト社のウィンドウズNTシステムを使
用するものとし、該トレースシステムのDLLのフック
システムをバイルスシステム(VIRUSシステム)と
称することにする。
【0040】この場合、バイルスシステムがフックする
DLLは、32ビットグラフィックデバイスインタフェ
ース(Graphic Device Interface:GDI〜以下、「G
DI」と称する)用DLLであるGDI32.DLL、
32ビットユーザ用DLLであるUSER32.DL
L、ウィンドウズNT用DLL処理のためのDLLであ
るNTDLL.DLL及び32ビットOLE用のDLL
であるOLE32.DLLの4種類からなるデフォルト
の32ビットウィンドウズ用DLL(以下、「WIN3
2DLL」と称する)のうちのGDI32.DLL、U
SER32.DLL及びNTDLL.DLLである。
【0041】これらGDI32.DLL、USER3
2.DLL及びNTDLL.DLLは、メモリリークの
検出に使用することができる。ちなみに、これらのGD
I32.DLL、USER32.DLL及びNTDL
L.DLLは、基本的な32ビットウィンドウズシステ
ムにおけるグローバルトレースにも使用することがで
き、OLE32.DLLは、グローバルトレース用にの
み使用することができる。
【0042】図3は、バイルスシステムを導入する前の
GDI32.DLLに関するモジュール構成を示し、図
4は、バイルスシステム導入後のGDI32.DLLに
関するモジュール構成を示している。
【0043】導入に際して、バイルスシステムは、デフ
ォルトのWIN32.DLLであるGDI32.DLL
等の上述した3つのDLLファイルを、まず、別のダミ
ーのファイル名、例えばGDI32.DLLをVIRU
SGDI.DLLにリネームする。
【0044】次に、フックによるロギング機構を持つバ
イルスシステム用のDLL、すなわちフック用DLL
を、GDI32.DLLとしてシステムに導入し、先に
リネームしたもとのGDI32.DLLと置換する。こ
のフック用DLLは、GDI32.DLLと同じ外部イ
ンタフェース及びパラメータ構成を有しているが、予め
設定した特定のAPIに対しては、API呼び出しに関
する情報をログファイル部4にロギングするように作成
されている。つまり、アプリケーションプログラムは、
もとの処理用DLLであるGDI32.DLLとリンク
しているものとして動作するが、実際には、バイルスシ
ステムのフック用DLLとリンクしていることになる。
バイルスシステムのフック用DLLは、ロギング後、V
IRUSGDI.DLLとして、本来のGDI32.D
LLを呼び出し、必要な情報を提供する。このようにし
て、GDI呼び出し情報をフックする。
【0045】上述したGDI32.DLL、USER3
2.DLL及びNTDLL.DLLのような通常のDL
Lは、処理実体である実体オブジェクトがDLLそのも
のに存在する。従って、これらのDLLは、アプリケー
ションプログラムから呼び出されると、エントリポイン
トだけをフックすれば、容易にロギングを行うログ機構
を構築することができる。
【0046】次に、図5に示すフローチャートを参照し
て、アプリケーションプログラムの実行時における動作
を説明する。アプリケーション部1でアプリケーション
が実行されると、アプリケーションは必要に応じて、A
PI呼び出しを行う(ステップS11)。このAPI呼
び出しは、第1のフック用DLL2でフックされる(ス
テップS12)。第1のフック用DLL2は、フックし
た呼び出しの情報をログファイルにロギングする(ステ
ップS13)。第1のフック用DLL2は、アプリケー
ション部1からの呼び出しに応じて、本来の第1の処理
用DLL3を呼び出す(ステップS14)。第1の処理
用DLL3は、該当するAPI処理を行う(ステップS
15)。
【0047】アプリケーションプログラムの実行が終了
したか否かが判定され(ステップS16)、アプリケー
ションプログラムの実行中は、API呼び出し毎に、上
述したステップS11〜S15の処理が繰り返される。
このようにして、API呼び出し情報がロギングされ、
ログファイル部4にAPI呼び出し情報の履歴すなわち
ログが記録される。
【0048】すなわち、バイルスシステムでは、API
の呼び出し時及び処理後のリターン時に、ロギング処理
を行い、呼び出したモジュール名、アドレス、時刻、及
びパフォーマンスカウント値等をログファイル部4に記
録する。このようにすることにより、あるポイントか
ら、あるポイントまでの処理時間を計測することができ
る。この場合、通常の局所的な計測とは異なり、OSの
ライブラリを置き換えているため、測定対象となるモジ
ュールには、一切、変更を加える必要がない。このよう
にすることによって、処理時間のボトルネックを容易に
調べることができる。
【0049】さらに、メモリリーク等の、リソースの解
放漏れの検出は、このようなトレースシステムと、図6
に示すように、解析部9とを組み合わせて実現する。解
析部9は、例えば、在来のフューザに機能追加すること
によりソフトウエアで実現することができ、ログファイ
ル部4に記録されたログの内容をトレースし、メモリの
割り当てと解放を行ったモジュール名の対を検出し、割
り当てと解放が対になっていないモジュールをリストア
ップし、表示すると共に警告を発する。
【0050】即ち、メモリリークは、メモリ割り当ての
呼び出しがあるにもかかわらず、メモリが解放されない
場合に発生する。従って、モジュール名に着目してログ
をトレースし、割り当てと解放が対になっていないモジ
ュールをリストアップすることにより判別することがで
きる。まれに、メモリを割り当てるモジュールと解放を
行うモジュールが別々の場合もあるが、解放アドレス及
びハンドル値もトレースし、これらも表示することによ
り、正しいリーク情報を表示することができる。解放と
割り当てが別々の場合は、まれにプログラムのバグであ
ることも考えられるため、警告情報として出力する。
【0051】このようにして、ウィンドウズNT及びウ
ィンドウズ95等のOSのAPIの呼び出しをフック用
DLL2及び6等によってフックして、APIの呼び出
し元及び時刻等をロギングすることができる。ログファ
イル部4をビューワによってビジュアルに表示すること
によって、OSのグローバルなトレースを実現して、シ
ステムの最適化に必要な、プロセス別及びモジュール別
などの情報を得ることができる。これらの情報に基づい
て、システムのパフォーマンスチューニングを実現する
ことができる。また、メモリ割り当て及びハンドル割り
当て等のOSのリソースの割り当て状況を追跡すること
によって、メモリリークが発生している箇所を効果的に
解析及び表示することが可能となる。このシステムを用
いることにより、メモリリークの自動的な解析及び表示
を実現することもできる。
【0052】図7は、この発明の第2の実施の形態に係
るトレースシステムの構成を示している。図7は、OL
Eインタフェースのように、処理用DLL自体に処理用
のオブジェクトが埋め込まれておらず、別の実体モジュ
ールにリンクしていて、該実体モジュールを呼び出して
処理を行うものを含んでいる場合のトレースシステムを
示している。
【0053】図7のトレースシステムは、アプリケーシ
ョン部11、第1のフック用DLL12、第1の処理用
DLL13、実体モジュール14、ログファイル部4、
ビューワ5、第2のフック用DLL6、第2の処理用D
LL7、及びコントロールマネージャ8を具備してい
る。
【0054】アプリケーション部11、第1のフック用
DLL12及び第1の処理用DLL13は、図1のアプ
リケーション部1、第1のフック用DLL2及び第1の
処理用DLL3とほぼ同様であるが、第1の処理用DL
L13が実体モジュール14を呼び出して処理を実行さ
せる。すなわち、第1の処理用DLL13は、その一部
又は全部のインタフェースに関して、第1の処理用DL
L13自体で処理を実行せず、実体モジュール14に処
理を実行させる。
【0055】第1のフック用DLL12が挿入されない
場合、第1の処理用DLL13が、最初の呼び出し時
に、アプリケーション部11に実体モジュール14のエ
ントリポイントを返し、以後は、アプリケーション部1
1から、実体モジュール14が直接呼び出される。そこ
で、第1のフック用DLL12は、実体モジュール14
のエントリポイントに代えてダミーのエントリポイント
として、第1のフック用DLL12のエントリポイント
を返す。このようにして、当該インタフェースを、アプ
リケーション部11が呼び出すたびに、第1のフック用
DLL12を通って実体モジュール14が呼び出され
る。したがって、実体モジュール14の呼び出しの直前
にロギングすることが可能になる。
【0056】ログファイル部4、ビューワ5、第2のフ
ック用DLL6、第2の処理用DLL7、及びコントロ
ールマネージャ8については、図1の場合と同一であ
る。アプリケーション部11、第1のフック用DLL1
2、第1の処理用DLL13、実体モジュール14、ビ
ューワ5、第2のフック用DLL6、第2の処理用DL
L7、及びコントロールマネージャ8の各部は、コンポ
ーネントとしてのプログラムモジュールにより構成され
る。また、ログファイル部4は、記憶装置に記憶される
ファイルにより構成される。
【0057】第1の処理用DLL13が処理を実体モジ
ュール14に依存せずに、それ自体で処理を実行する場
合の、第1のフック用DLL12及び第1の処理用DL
L13の機能及び動作は、図1における第1のフック用
DLL2及び第1の処理用DLL3と全く同様となる。
【0058】次に、図7のトレースシステムのアプリケ
ーションの実行動作について具体的に説明する。図7の
トレースシステムのインストールは、図1のシステムと
同様に図2に示した流れに従って行われる。
【0059】前述のように、例えば、OLEのモジュー
ルであるOLE23.DLLの場合には、通常のDLL
と比して若干特殊な動作をする。すなわち、OLEはD
LLで実現されているものの、通常のDLLとは、イン
タフェースが異なっている。OLE32.DLLは、ア
プリケーションプログラムから呼び出されると、処理実
体である実体モジュール14を呼び出して、実体モジュ
ール14により処理を実行させる。したがって、ロギン
グのためのログ機構の構築に工夫が必要である。
【0060】先に述べたように、通常のDLLは、アプ
リケーション部11で実行されるアプリケーションプロ
グラムから呼び出されると、処理実体がDLLそのもの
に埋め込まれて存在し、単に、エントリポイントだけを
フックするだけで容易にロギングすることができる。
【0061】ところが、OLEのインタフェースは、最
初の呼び出しは、OLEのDLLを通るが、それが実体
モジュールのポインタを返すため、次回以降の呼び出し
は、アプリケーションプログラムからDLLを経由せず
実体モジュールが呼び出される。
【0062】そこで、OLEのインタフェースでは、単
にOLEのDLLをフックしただけでは不充分であり、
第1のフック用DLL12において、ポインタとして、
ダミーのインタフェース、つまり、バイルスシステムの
DLLである第1のフック用DLL12のエントリポイ
ントを返す。そして、第1のフック用DLL12が実体
モジュール14を呼び出すようにすることによって、実
体モジュール14を呼び出す直前にロギング等を行うこ
とが可能となる。
【0063】次に、図8に示すフローチャートを参照し
て、アプリケーションの実行時における動作を説明す
る。アプリケーション部11でアプリケーションが実行
されると、API呼び出しが行われる(ステップS2
1)。API呼び出しは、第1のフック用DLL12で
フックされ(ステップS22)、フックされた呼び出し
の情報をログファイル部4にロギングする(ステップS
23)。第1のフック用DLL12は、アプリケーショ
ン部11からの呼び出しに応じて第1の処理用DLL1
3を呼び出し(ステップS24)、呼び出しがOLEイ
ンタフェースか否かが判定される(ステップS25)。
OLEでなければ、第1の処理用DLL13において、
該当するAPI処理を行う(ステップS26)。
【0064】その後、アプリケーション部11における
アプリケーションプログラムの実行が終了したか否かが
判定される(ステップS27)。ステップS25で、O
LEインタフェースであると判定されると、第1のフッ
ク用DLL12でエントリポイントが変換されて(ステ
ップS28)、実体モジュール14が呼び出される。実
体モジュール14で該当するAPI処理が行われ(ステ
ップS29)、ステップS27に移行する。なお、一
旦、ステップS28でエントリ変換が行われた後は、ス
テップS23のロギング後、第1のフック用DLL12
から、第1の処理用DLL13をその都度呼び出さず
に、実体モジュール14を直接呼び出すようにしてもよ
い。
【0065】ステップS27の判定に応じ、アプリケー
ションプログラムの実行中は、API呼び出し毎に、上
述したステップS21〜S26又はS21〜S25→S
28→S29の処理が繰り返される。このようにして、
API呼び出し情報がロギングされ、ログファイル部4
にAPI呼び出し情報の履歴すなわちログが記録され
る。
【0066】なお、図8では、ステップS25におい
て、OLEか否かの判別を行っているが、個々のDLL
を置き換える際に、ダミーのDLL(OSに付属してい
るものではなく、ロギング取得用に作成したもの)のロ
ジックの中にOLEを埋め込んでおき、OLEか否かの
判断を行わないようにしてもよい。
【0067】上述したOLEのモジュールの場合につい
て、さらに詳細に説明する。前述のように、OLEはD
LLで実現されているものの、通常のDLLとは、イン
タフェースが少し異る。図9に示すように、通常のDL
Lは、アプリケーションプログラムAPから呼び出され
ると処理実体がDLLそのものに存在し、単に、エント
リポイントだけをフックするようにすれば、ログ機構な
どを挿入することが容易である。
【0068】ところが、図9のように、OLEのインタ
フェースは、最初の呼び出しは、OLEのDLLを通る
が、それが実体モジュールのエントリのポインタを返す
ため、次回以降の呼び出しは、アプリケーションプログ
ラムAPからDLLを経由せずに実体モジュールが呼び
出される。従って、OLEのインタフェースでは、フッ
ク用DLLで、単にOLEのDLLをフックしただけで
は不充分であり、図10に示すように、エントリのポイ
ンタとして、ダミーのインタフェース、つまり、バイル
スシステムのDLL(フック用DLL)のエントリポイ
ントを返すようにする。該ポインタによって実体モジュ
ールを呼び出すようにすることで、実体モジュールを呼
び出す直前にロギング等を行うことが可能となる。
【0069】即ち、OLEインタフェース(OLEのイ
ンタフェース)は、C++のインプリメントと同様に、Co
CreateInstanceにて、ポインタを取得後、このポインタ
を元にしてそれぞれのインタフェースを呼び出す。バイ
ルスシステムでは、最初のCoCreateInstanceは、通常の
DLL同様、DLLインタフェースのフックにより、本
来のOLE32.DLLを呼び出すが、このとき返すオ
ブジェクトポインタを、OLE32.DLLが返すポイ
ンタでなく、自分自身のダミーのポインタに返す。する
と、OLEを呼び出したアプリケーションは、ダミーの
ポインタを本来のポインタとして取り扱うため、次にオ
ブジェクトを呼び出す時は、このダミーのポインタを元
にオブジェクトを呼び出す。このポインタは、バイルス
システムが払い出したポインタであり、アプリケーショ
ンがオブジェクトを呼び出す度に、バイルスシステムで
フックでき、1通りのロギング動作を行ってから、本来
のOLE32.DLLが返したポインタを呼び出す。こ
れらの点が通常のDLLと動作が異なる点である。
【0070】既に述べたように、バイルスシステムは、
APIの呼び出し時及び処理終了後のリターン時に、ロ
ギング処理を行い、呼び出したモジュール名、アドレ
ス、時刻及びパフォーマンスカウント値等をログファイ
ルに記録する。このようにして、あるポイントから、あ
るポイントまでの処理時間を計測することができる。通
常の局所的な計測とは異なり、OSのライブラリを置き
換えているため、測定対象となるモジュールは一切変更
する必要がない。また、メモリリークの検出には、図6
に示したように、この仕組みと、解析部9とを組み合わ
せて使用する。
【0071】図1及び図7に示したトレースシステム
を、さらに具体的に説明する。このシステムは、主とし
て図11に示すような、コンポーネントモジュールで構
成される。
【0072】図11は、GAP.EXE、GAPUI.
DLL、GAPUI.OCX、FSENGINE.DL
L、VRSCTRL.EXE、NOSIDEIF.DL
L、VIRUSTUB.DLL及びVIRUSLOG.
DLLの各モジュールを示す。
【0073】GAP.EXEは、ビューワの実行モジュ
ールであり、ビューワ5に相当する。GAPUI.DL
Lは、GAP.EXE特有のインタフェース用DLL、
GAPUI.OCXは、GAP.EXE用のOCX(O
LEコントロール)21である。
【0074】VRSCTRL.EXEは、コントロール
マネージャの実行モジュールであり、コントロールマネ
ージャ8に相当する。VIRUSTUB.DLL及びV
IRUSLOG.DLLは、バイルスシステムのAPI
呼び出し情報をフックするためのDLLであり、これら
はフック用DLL2、6又は12に相当する。GAPU
I.DLL、FSENGINE.DLL及びNOSID
EIF.DLLは、各種処理を実行するためのDLLで
あり、処理用DLL3、7又は13に相当する。
【0075】図11に示した、コンポーネントは、主と
して、次の4つのサービス提供する。 (1) カレント情報取得サービス 現在のGDIオブジェクトの割り当ての監視情報、並び
にOLE、GDI等のAPI呼び出しの発行状況の監視
情報を、ロギングバッファ及びログファイル部4の少な
くともいずれかから取得し、ビューワ5であるGAP.
EXEにより表示する。GDIオブジェクトの割り当て
の監視情報は、リソースの割り当てと開放、及びオーナ
の表示情報を含む。
【0076】(2) ロギングサービス GDI及びOLE用のDLLの一部のインターフェース
について、VIRUSTUB.DLLによるパッチを当
てる。具体的には、上述したように、インストール時に
本来の処理用DLLをリネームして、代わりに、処理用
のDLLのファイル名としてフック用のダミーのDLL
を挿入する。
【0077】このようにすることにより、必要なインタ
フェースが呼び出されるたびに、VIRUSのDLLを
経由することになり、呼び出し、オブジェクトの割り当
て、及び開放状況がすべて把握できる。この機能では、
DLL及び実行プログラム(以下、「EXE」と称す
る)毎にロギング機構をオン/オフ設定することがで
き、ロギングレベルも例えば0=OFF、1=呼び出し
のみ、及び2=呼び出しとパラメータ等の3段階に設定
することができる。ロギングにより、ログファイル等に
取得された情報は、フューザで表示させることができ
る。
【0078】(3) ダイナミックエグゼキューションサー
ビス このサービスは、ロギングサービスを利用して実現す
る。アプリケーションプログラムがOLE及びGDIを
呼び出す時に、コントロールマネージャ8であるVRS
CTRL、EXEからの指示で、ストップ/ゴーを指示
することができる。この機能は、デバッガを経由するこ
となしに、呼び出しパラメータを確認したり、OLEの
内部情報、及びGDIのリソース割り当て状況等を表示
させるときに使用する。
【0079】(4) デバッギングライブラリサービス プログラム言語、例えばビジュアルBASIC(Visual
Basic:VB)等の開発者用には、デバッグサポートラ
イブラリが提供される。
【0080】基本的な動作は、次のようになる。ウィン
ドウズNT及びウィンドウズ95等において、標準でサ
ポートされるAPI用のDLLを、このバイルスシステ
ムのVIRUSTUB.DLLで置換する。このDLL
では、全ての標準インタフェースのエントリポイントだ
けが定義されている。一方、既存のDLLは、リネーム
する。
【0081】アプリケーションからのAPI呼び出し
は、既存のライブラリではなく、置換されたバイルスシ
ステムのDLLを経由するようになる。一方、リネーム
された既存のDLLには、本来のAPIの機能が含まれ
ているため、ロギングした後は、そのライブラリを呼び
出すようにする。本来の処理後、再びバイルスシステム
のDLLに処理が戻ってくるため、その間の時間をロギ
ングすれば、処理時間などを把握することができる。
【0082】また、リソースの割り当ては、確保と開放
の呼び出しが存在するため、それらが対になっていない
ときは、リークが発生したと判断して、ビューワで警告
を与えるようにする。リソースは、モジュール名、ハン
ドル値及びアドレスなどによって特定することができ
る。
【0083】このようにして、ウィンドウズNT及びウ
ィンドウズ95等のOSにおけるAPI呼び出しをフッ
ク用DLL12及び6等によってフックして、APIの
呼び出し元及び時刻等をロギングすることができる。ロ
グファイル部4をビューワ5によってビジュアルに表示
することによって、OSのグローバルなトレースを実現
して、システムの最適化に必要な、プロセス別及びモジ
ュール別などの情報を得ることができる。しかも、リコ
ンパイルや再リンク等の操作も不要である。
【0084】上述のトレースシステムは、専用のシステ
ムによらず、通常のコンピュータシステムを用いて実現
可能である。例えば、コンピュータに上述の動作を実行
するためのプログラムを記録した媒体(フロッピーディ
スク、CD−ROM等)から該プログラムをインストー
ルすることにより、上述の処理を実行するシステムを構
成することができる。
【0085】また、コンピュータにプログラムを供給す
るための媒体は、通信媒体(通信回線、通信ネットワー
ク、通信システムのように、一時的に流動的にプログラ
ムを保持する媒体)でも良い。例えば、通信ネットワー
クの掲示板(BBS)に該プログラムを掲示し、これを
ネットワークを介して配信してもよい。そして、このプ
ログラムを起動し、OSの制御下で、他のアプリケーシ
ョンプログラムと同様に実行することにより、上述の処
理を実行することができる。
【0086】なお、OSが上述のシステムの機能の一部
を担当する場合、或いは、OSとアプリケーションプロ
グラムが共同して上述の機能の一部又は全部を達成する
場合には、記録媒体にはOS以外のプログラム部分又は
データ部分を格納しておけばよい。
【0087】
【発明の効果】以上説明したように、この発明のトレー
スシステム及びメモリリーク検出システムでは、アプリ
ケーションプログラムのインタフェース呼び出しのたび
に、その呼び出しに係る呼び出し情報やリソース割り当
て情報をフックしてログ記録するので、オペレーティン
グシステムのグローバルなトレース及びメモリリーク等
のリソースの解放漏れの効果的な検出を行うことができ
る。すなわち、この発明では、リコンパイルが不要で、
バイナリで提供されたコンポーネントを組み合わせて作
成されたシステムにおいても、OSのグローバルなトレ
ース及びそれによるメモリリークの効果的な検出を可能
とし、メモリリークの検出及び解決を始めとするシステ
ムのパフォーマンスチューニングに効果的に利用し得る
トレースシステム及びメモリリーク検出システムを提供
することができる。
【図面の簡単な説明】
【図1】この発明の第1の実施の形態に係るトレースシ
ステムの構成を模式的に示すブロック図である。
【図2】図1のトレースシステムにおけるインストール
動作を説明するためのフローチャートである。
【図3】図1のトレースシステムのDLLの動作原理を
説明するための模式図である。
【図4】図1のトレースシステムのフックの原理を説明
するための模式図である。
【図5】図1のトレースシステムにおけるアプリケーシ
ョンプログラムの実行動作を説明するためのフローチャ
ートである。
【図6】メモリリーク等のリソースの解放漏れを検出す
るシステムの構成を示すブロック図である。
【図7】この発明の第2の実施の形態に係るトレースシ
ステムの構成を模式的に示すブロック図である。
【図8】図7のトレースシステムにおけるアプリケーシ
ョンプログラムの実行動作を説明するためのフローチャ
ートである。
【図9】図7のトレースシステムの通常のDLLと、O
LEのDLLの動作原理を説明するための模式図であ
る。
【図10】図7のトレースシステムのOLEのDLLの
フックの原理を説明するための模式図である。
【図11】図1及び図7のトレースシステムにおける具
体的なモジュール構成の一例を示す模式図である。
【符号の説明】
1,11 アプリケーション部 2,6,12 フック用ダイナミックリンクライブラリ
(DLL) 3,7,13 処理用ダイナミックリンクライブラリ
(DLL) 4 ログファイル部 5 ビューワ 8 コントロールマネージャ 14 実体モジュール

Claims (13)

    【特許請求の範囲】
  1. 【請求項1】アプリケーションプログラムとのインタフ
    ェースを取るためのアプリケーションインタフェースを
    備えるオペレーティングシステムと、 前記オペレーティングシステム上でアプリケーションプ
    ログラムを実行するアプリケーション手段と、 前記アプリケーション手段による前記アプリケーション
    プログラムの実行に際し、前記アプリケーションプログ
    ラムによる前記アプリケーションインタフェースの呼び
    出しを中継するとともに、該呼び出しの情報を取り込む
    フック手段と、 前記フック手段で取り込まれた前記呼び出しの情報を蓄
    積記録するログ記録手段と、を具備することを特徴とす
    るトレースシステム。
  2. 【請求項2】前記フック手段は、前記アプリケーション
    インタフェースに対するアプリケーションプログラムの
    呼び出しを前記アプリケーションインタフェースの代わ
    りに受ける手段と、前記呼び出しの情報を前記ログ記録
    手段に提供する手段と、前記呼び出しを前記アプリケー
    ションインタフェースに転送する手段とを含むことを特
    徴とする請求項1に記載のトレースシステム。
  3. 【請求項3】前記ログ記録手段で記録された前記呼び出
    しの情報を出力する手段をさらに含むことを特徴とする
    請求項1又は2に記載のトレースシステム。
  4. 【請求項4】前記フック手段から前記ログ記録手段へ転
    送された情報の記録のオンとオフを制御するロギング制
    御手段をさらに含むことを特徴とする請求項1乃至3の
    うちのいずれか1項に記載のトレースシステム。
  5. 【請求項5】前記ロギング制御手段は、前記フック手段
    から前記アプリケーションインタフェースへの前記情報
    の転送の停止と実行を、外部操作に応答して、制御する
    手段をさらに含むことを特徴とする請求項4に記載のト
    レースシステム。
  6. 【請求項6】前記ロギング制御手段は、前記ログ記録手
    段に記録される前記情報の内容を制御する手段をさらに
    含むことを特徴とする請求項4又は5に記載のトレース
    システム。
  7. 【請求項7】前記フック手段は、前記アプリケーション
    プログラムによる前記アプリケーションインタフェース
    の呼び出しのうち、前記オペレーティングシステムのリ
    ソース割り当てに関するリソース割り当て情報を取り込
    む手段を備えることを特徴とする請求項1乃至6のいず
    れか1項に記載のトレースシステム。
  8. 【請求項8】前記ログ記録手段により、記録されたリソ
    ースの割り当てと解放の対を検出し、割り当てと解放の
    一方のみを検出し、他方を検出できない時に、その旨を
    報知する対検出手段をさらに含むことを特徴とする請求
    項7に記載のトレースシステム。
  9. 【請求項9】オペレーティングシステム上でアプリケー
    ションプログラムを実行するアプリケーション手段と、 前記アプリケーションプログラムの実行に際し、前記ア
    プリケーションプログラムから前記オペレーティングシ
    ステムのアプリケーションインタフェースに送られるリ
    ソースの割り当てと解放の要求に関するリソース割当情
    報を取り込むフック手段と、 前記フック手段で取り込まれた前記リソース割当情報を
    蓄積記録するログ記録手段と、を具備することを特徴と
    するリソース解放漏れ検出システム。
  10. 【請求項10】前記ログ記録手段により記録されたリソ
    ースの割り当てと解放の対を検出し、割り当てと解放の
    一方のみを検出し、他方を検出できない時に、その旨を
    報知する対検出手段をさらに含むことを特徴とする請求
    項9に記載のリソース解放漏れ検出システム。
  11. 【請求項11】前記リソースはメモリである、ことを特
    徴とする請求項9又は10に記載のリソース解放漏れ検
    出システム。
  12. 【請求項12】コンピュータを、 アプリケーションプログラムとのインタフェースを取る
    ためのアプリケーションインタフェースを備えるオペレ
    ーティングシステム上でアプリケーションプログラムを
    実行するアプリケーション手段、 前記アプリケーション手段による前記アプリケーション
    プログラムの実行に際し、前記アプリケーションプログ
    ラムによる前記アプリケーションインタフェースの呼び
    出しを中継するとともに、該呼び出しの情報を取り込む
    フック手段と、 前記フック手段で取り込まれた前記呼び出しの情報を蓄
    積記録するログ記録手段、として機能させるためのプロ
    グラムを記録したコンピュータで読み取り可能な記録媒
    体。
  13. 【請求項13】コンピュータを、 オペレーティングシステム上でアプリケーションプログ
    ラムを実行するアプリケーション手段、 前記アプリケーションプログラムの実行に際し、前記ア
    プリケーションプログラムから前記オペレーティングシ
    ステムのアプリケーションインタフェースに送られるリ
    ソースの割り当てと解放の要求に関するリソース割当情
    報を取り込むフック手段、 前記フック手段で取り込まれた前記リソース割当情報を
    蓄積記録するログ記録手段、として機能させるためのプ
    ログラムを記録したコンピュータで読み取り可能な記録
    媒体。
JP10013654A 1997-01-27 1998-01-27 トレースシステム、リソース解放漏れ検出システム及び記録媒体 Pending JPH10269105A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10013654A JPH10269105A (ja) 1997-01-27 1998-01-27 トレースシステム、リソース解放漏れ検出システム及び記録媒体

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP9-13012 1997-01-27
JP1301297 1997-01-27
JP10013654A JPH10269105A (ja) 1997-01-27 1998-01-27 トレースシステム、リソース解放漏れ検出システム及び記録媒体

Publications (1)

Publication Number Publication Date
JPH10269105A true JPH10269105A (ja) 1998-10-09

Family

ID=26348728

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10013654A Pending JPH10269105A (ja) 1997-01-27 1998-01-27 トレースシステム、リソース解放漏れ検出システム及び記録媒体

Country Status (1)

Country Link
JP (1) JPH10269105A (ja)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000181749A (ja) * 1998-12-14 2000-06-30 Nec Software Kyushu Ltd ソフトウェアのエラー処理テストシステム、テスト方法及びテストプログラムの記録媒体
JP2000250783A (ja) * 1999-03-04 2000-09-14 Ntt Communicationware Corp 交換機プログラム試験項目抽出漏れチェック方法
JP2001154872A (ja) * 1999-11-25 2001-06-08 Nec Ic Microcomput Syst Ltd ソフトウェア開発支援装置、ソフトウェア開発支援方法、および、そのプログラムを記録した記録媒体
JP2005527008A (ja) * 2001-09-19 2005-09-08 ヒューレット・パッカード・カンパニー コンポーネントベースシステムのランタイム監視
US6983453B2 (en) 2001-08-30 2006-01-03 International Business Machines Corporation Method and system for obtaining performance data from software compiled with or without trace hooks
JP2006172205A (ja) * 2004-12-16 2006-06-29 Canon Inc 情報処理装置及びその制御方法、コンピュータプログラム及び記憶媒体
JP2007042007A (ja) * 2005-08-05 2007-02-15 Yafoo Japan Corp メモリリーク検出プログラム、メモリリーク検出装置およびメモリリーク検出方法
CN100347669C (zh) * 2003-12-30 2007-11-07 佳能株式会社 运行日志取得方法
JP2007329937A (ja) * 2001-02-26 2007-12-20 4Thpass Inc アプリケーションの通信に基づく請求方法およびシステム
KR100875997B1 (ko) 2006-11-13 2008-12-24 한국전자통신연구원 윈도우 소켓 응용프로그램 인터페이스 후킹을 이용한네트워크 퍼징 방법
US7665066B2 (en) 2001-04-12 2010-02-16 Siemens Aktiengesellschaft Method for determining and recording system information and function in distributed parallel component based software systems
JP2011107833A (ja) * 2009-11-13 2011-06-02 Ricoh Co Ltd 情報処理装置、apiプログラム、及びログ環境提供方法
JP2012003611A (ja) * 2010-06-18 2012-01-05 Denso Corp 時間監視装置及び方法
JP4911530B2 (ja) * 2005-05-31 2012-04-04 サイエンスパーク株式会社 監視システム、システム用のプログラム、及びプログラムを記録した記録媒体
JP2012164098A (ja) * 2011-02-06 2012-08-30 Mitsubishi Electric Corp エントリ書換装置及びエントリ書換プログラム
JP2012248166A (ja) * 2011-05-31 2012-12-13 Fuji Electric Co Ltd プログラム開発支援装置およびそのプログラム
JP2013535069A (ja) * 2010-06-28 2013-09-09 ヒョンダイ モーター カンパニー システムテスト装置
KR101375142B1 (ko) * 2012-08-31 2014-03-17 에스코어 주식회사 유저 프로그램 실행 후 미해제 리소스 검출을 위한 방법 및 장치
JP2014523022A (ja) * 2011-06-20 2014-09-08 マイクロソフト コーポレーション コンピュータにより実行される方法及びコンピュータシステム

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000181749A (ja) * 1998-12-14 2000-06-30 Nec Software Kyushu Ltd ソフトウェアのエラー処理テストシステム、テスト方法及びテストプログラムの記録媒体
JP2000250783A (ja) * 1999-03-04 2000-09-14 Ntt Communicationware Corp 交換機プログラム試験項目抽出漏れチェック方法
JP2001154872A (ja) * 1999-11-25 2001-06-08 Nec Ic Microcomput Syst Ltd ソフトウェア開発支援装置、ソフトウェア開発支援方法、および、そのプログラムを記録した記録媒体
JP2007329937A (ja) * 2001-02-26 2007-12-20 4Thpass Inc アプリケーションの通信に基づく請求方法およびシステム
US7665066B2 (en) 2001-04-12 2010-02-16 Siemens Aktiengesellschaft Method for determining and recording system information and function in distributed parallel component based software systems
US6983453B2 (en) 2001-08-30 2006-01-03 International Business Machines Corporation Method and system for obtaining performance data from software compiled with or without trace hooks
JP2005527008A (ja) * 2001-09-19 2005-09-08 ヒューレット・パッカード・カンパニー コンポーネントベースシステムのランタイム監視
CN100347669C (zh) * 2003-12-30 2007-11-07 佳能株式会社 运行日志取得方法
JP2006172205A (ja) * 2004-12-16 2006-06-29 Canon Inc 情報処理装置及びその制御方法、コンピュータプログラム及び記憶媒体
US7886279B2 (en) 2004-12-16 2011-02-08 Canon Kabushiki Kaisha Information processing apparatus, control method therefor, computer program, and storage medium
JP4911530B2 (ja) * 2005-05-31 2012-04-04 サイエンスパーク株式会社 監視システム、システム用のプログラム、及びプログラムを記録した記録媒体
JP2007042007A (ja) * 2005-08-05 2007-02-15 Yafoo Japan Corp メモリリーク検出プログラム、メモリリーク検出装置およびメモリリーク検出方法
KR100875997B1 (ko) 2006-11-13 2008-12-24 한국전자통신연구원 윈도우 소켓 응용프로그램 인터페이스 후킹을 이용한네트워크 퍼징 방법
JP2011107833A (ja) * 2009-11-13 2011-06-02 Ricoh Co Ltd 情報処理装置、apiプログラム、及びログ環境提供方法
JP2012003611A (ja) * 2010-06-18 2012-01-05 Denso Corp 時間監視装置及び方法
JP2013535069A (ja) * 2010-06-28 2013-09-09 ヒョンダイ モーター カンパニー システムテスト装置
US9354996B2 (en) 2010-06-28 2016-05-31 Hyundai Motor Company System test apparatus
JP2012164098A (ja) * 2011-02-06 2012-08-30 Mitsubishi Electric Corp エントリ書換装置及びエントリ書換プログラム
JP2012248166A (ja) * 2011-05-31 2012-12-13 Fuji Electric Co Ltd プログラム開発支援装置およびそのプログラム
JP2014523022A (ja) * 2011-06-20 2014-09-08 マイクロソフト コーポレーション コンピュータにより実行される方法及びコンピュータシステム
US9785470B2 (en) 2011-06-20 2017-10-10 Microsoft Technology Licensing, Llc Memory management model and interface for unmodified applications
KR101375142B1 (ko) * 2012-08-31 2014-03-17 에스코어 주식회사 유저 프로그램 실행 후 미해제 리소스 검출을 위한 방법 및 장치

Similar Documents

Publication Publication Date Title
JPH10269105A (ja) トレースシステム、リソース解放漏れ検出システム及び記録媒体
US7047521B2 (en) Dynamic instrumentation event trace system and methods
US7415699B2 (en) Method and apparatus for controlling execution of a child process generated by a modified parent process
US8832665B2 (en) Method and system for tracing individual transactions at the granularity level of method calls throughout distributed heterogeneous applications without source code modifications including the detection of outgoing requests
US8234631B2 (en) Method and system for tracing individual transactions at the granularity level of method calls throughout distributed heterogeneous applications without source code modifications
US8356286B2 (en) Method and system for providing on-demand profiling infrastructure for profiling at virtual machines
US7000150B1 (en) Platform for computer process monitoring
US8522209B2 (en) Method and system for integrating profiling and debugging
US8239838B2 (en) Kernel-aware debugging system, medium, and method
EP1172729B1 (en) Apparatus and method for cataloguing symbolic data for use in performance analysis of computer programs
US7185320B2 (en) System and method for processing breakpoint events in a child process generated by a parent process
US8601469B2 (en) Method and system for customizing allocation statistics
US8667471B2 (en) Method and system for customizing profiling sessions
US5630049A (en) Method and apparatus for testing software on a computer network
US6658416B1 (en) Apparatus and method for creating an indexed database of symbolic data for use with trace data of a computer program
US6678883B1 (en) Apparatus and method for creating a trace file for a trace of a computer program based on loaded module information
US7689558B2 (en) Application monitoring using profile points
US8589889B2 (en) Apparatus and method of detecting errors in embedded software
US8495430B2 (en) Generate diagnostic data for overdue thread in a data processing system
US20100095280A1 (en) Method and system for providing loitering trace in virtual machines
US7716643B2 (en) Methods and apparatus for software profiling
CA2325684A1 (en) Automation and isolation of software component testing
US8005940B2 (en) Method and system for unit testing web framework applications
US20150006961A1 (en) Capturing trace information using annotated trace output
US20100175051A1 (en) Debugging support device, debugging support method, and program thereof