JP2000132424A - ソフトウェアインスツルメンテ―ション方法 - Google Patents

ソフトウェアインスツルメンテ―ション方法

Info

Publication number
JP2000132424A
JP2000132424A JP11170281A JP17028199A JP2000132424A JP 2000132424 A JP2000132424 A JP 2000132424A JP 11170281 A JP11170281 A JP 11170281A JP 17028199 A JP17028199 A JP 17028199A JP 2000132424 A JP2000132424 A JP 2000132424A
Authority
JP
Japan
Prior art keywords
target program
instrumentation
end portion
action
user
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
JP11170281A
Other languages
English (en)
Inventor
Reinhard Klemm
クレムン レインハード
Navjot Singh
シングー ナブジャット
Timothy Tsai
ツァイ ティモシー
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.)
Nokia of America Corp
Original Assignee
Lucent Technologies Inc
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 Lucent Technologies Inc filed Critical Lucent Technologies Inc
Publication of JP2000132424A publication Critical patent/JP2000132424A/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/3664Environments for testing or debugging software
    • 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/3644Software debugging by instrumenting at runtime

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)

Abstract

(57)【要約】 【課題】 ターゲットプログラムのソースコードや実行
可能コードを修正することなく、所望の任意のタイプの
インスツルメンテーションを任意のターゲットプログラ
ムに対して提供する。 【解決手段】 ターゲットプログラムの実行がコントロ
ーラによって指示される、「間接インスツルメンテーシ
ョン」という汎用のソフトウェアインスツルメンテーシ
ョン方式を提供する。コントローラは、他のプロセスあ
るいはスレッドとともに動作して、ユーザ指定のトリガ
イベントが発生すると、ユーザ指定のアクションを実行
することによって、ターゲットプログラムをインスツル
メントする。実施例では、インスツルメンテーションツ
ールは、フロントエンド部分およびバックエンド部分を
有する。このツールのフロントエンド部分およびバック
エンド部分は異なるマシン上でも同じマシン上でも動作
することが可能である。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピューティン
グシステムに関し、特に、コンピューティングシステム
において用いられるソフトウェアインスツルメンテーシ
ョンに関する。
【0002】
【従来の技術】ソフトウェアインスツルメンテーション
(software instrumentation)とは、一般に、プログラム
実行中にプログラムのパフォーマンスのさまざまなモニ
タリングおよび分析を行うように設計された追加コード
(インスツルメンテーションコードという。)を含むよ
うにプログラムを修正するプロセスをいう。また、イン
スツルメンテーションとは、フォールトトレランスのた
めの修正(例えばチェックポインティング(checkpointi
ng))や、フォールト注入のような他のアクティビティ
も含む。このように、インスツルメンテーションは一般
に、機能を変更または追加するようにターゲットプログ
ラムを修正することを含む。例えば、インスツルメンテ
ーションコードは、与えられた入力のセットでプログラ
ムが実行されるときに特定の分岐が成立するか否かに関
する指標を提供するため、あるいは、フォールト位置に
おける支援のために実行中のプロセッサに割り込むため
に用いられる。既存のソフトウェアインスツルメンテー
ション方法は、静的方法と動的方法に大別することがで
きる。
【0003】静的方法は、コード実行の開始前にプログ
ラムコードを修正し、動的方法は、プログラムがメモリ
にロードされるまで修正を遅らせる。静的ソフトウェア
インスツルメンテーションは、コードの直接修正を含
み、コード開発のさまざまな段階で実行することができ
る。1つの非常に一般的なインスツルメンテーションの
形式は、C言語プリプロセッサcppを使用するもので
ある。これは、自動ソースコードインスツルメンテーシ
ョンを実行する。他のソースコードインスツルメンテー
ションツールの例には、FAUSTフォールト注入ツー
ル(B.-H. Suh etal., "FAUST - fault injection base
d automated software testing", Proceedings of the
1991 Systems Design Synthesis Technology Workshop,
Silver Spring, Maryland, U.S.A., September 1991、
に記載)や、Mothraソフトウェア変異テストツール(B.
J. Choi et al., "The Mothra toos set", Proceeding
sof the 22nd Hawaii International Conference on Sy
stems and Software, pp.275-284, Kona, Hawaii, U.S.
A., January 1989、に記載)がある。
【0004】また、静的インスツルメンテーションは、
アセンブリコードに対しても実行可能である。コンパイ
ラバックエンドに埋め込まれたオプティマイザは、アセ
ンブリコードインスツルメンテーションの一例である。
おそらく、もっとも容易に認識可能な静的ソフトウェア
インスツルメンテーションの形式は、バイナリコードに
対して実行されるものである。pixieプロファイリ
ングツール("RISCompiler and C Programmer's Guid
e", Computer Systems, Inc., 930 Arques Ave.,Sunnyv
ale, California 94086 U.S.A., 1986、に記載)やFI
ATフォールト注入ツール(J. H. Barton et al., "Fa
ult injection expeirments using FIAT", IEEE Transa
ctions on Computers, 39(4):575-582, April 1990、に
記載)のようなツールは、ターゲットアプリケーション
の実行可能イメージを直接に修正する。libftチェ
ックポインティングツール(Y. Huang and C. Kintala,
"Software fault tolerance in the application laye
r", Software Fault Tolerance, Michael Lyu, ed., c
h.10, Wiley, 1995、に記載)のような他のツールは、
もとのコードを新たなライブラリあるいはオブジェクト
コードファイルとリンクすることによってもとのコード
に追加コードを組み込む。実際、オブジェクトファイル
をリンクするプロセスは、ソフトウェアインスツルメン
テーションの1つの形式とみなすことも可能である。オ
ブジェクトファイル自体が、単一の実行可能プログラム
を生成するように修正されるからである。
【0005】上記のように、動的ソフトウェアインスツ
ルメンテーション方法は、静的方法とは異なり、プログ
ラムがメモリにロードされるまで修正を実行しない。プ
ログラムが実行されると、インスツルメンテーションコ
ードは、別個のプロセスあるいはスレッドとして、また
は、インラインコードとして、並列に実行される。この
インスツルメンテーションコードにより、プログラムの
動的な状態が観測され修正されることが可能となる。い
くつかの動的インスツルメンテーション方法が存在す
る。プログラムの外部の環境は、3−Dファイルシステ
ム(G. S. Fowleret al., "A user-level replicated f
ile system", USENIX Conference Proceedings, pp.279
-290, Cincinnati, OH, U.S.A., Summer 1993、に記
載)の場合のように、修正可能である。オペレーティン
グシステムは、FTAPEフォールト注入ツール(T.
K. Tsai et al., "An approach towards benchmarking
of fault-tolerant commercial systems", Proceedings
of the 26th International Symposium on Fault-Tole
rant Computing, pp.314-323, Sendai, Japan, June 19
96、に記載)の場合のように、直接に修正可能であり、
また、オペレーティングシステムあるいはシステムコー
ルの状態は、UNIXのstraceユーティリティの
場合のように修正可能である。動的(ダイナミック)共
有ライブラリをリンクするプロセスは、REPLファイ
ル複製ソフトウェア(前掲のY. Huang andC. Kintalaの
文献に記載)の場合のように、別のインスツルメントさ
れたライブラリで置換するように修正可能である。最後
に、プログラムの実行は、FERRARIフォールト注
入ツール(G. A. Kanawati et al., "FERRARI: A flexi
ble software-based fault and error injection syste
m", IEEE Transactions onComputers, 44(2):248-260,
February 1995、に記載)の場合のように、プログラム
に選択的に割り込んでインスツルメンテーションコード
を実行する能力を有するソフトウェアコントローラを通
じて直接に制御可能である。
【0006】
【発明が解決しようとする課題】上記の従来の静的およ
び動的なインスツルメンテーション方式はいくつかの欠
点を有する。例えば、多くの方式は、「直接的に」、す
なわち、インスツルメントされるターゲットプログラム
のソースコードまたは実行可能コードへの変更を必要と
するような方法で、実現される。これは、インスツルメ
ンテーションプロセスの複雑さを過度に増大させ、一部
のタイプのターゲットプログラムで用いるのは不適当で
あり、多くのますます重要になっている分散コンピュー
ティングアプリケーションを十分にサポートすることが
できない。上記のFERRARIフォールト注入ツール
のような他の方式は、ハードコードされ、ある特定のタ
イプのインスツルメンテーションしか提供することがで
きない。
【0007】
【課題を解決するための手段】本発明は、ターゲットプ
ログラムの実行がコントローラによって指示される、
「間接インスツルメンテーション」という汎用のソフト
ウェアインスツルメンテーション方式を提供する。コン
トローラは、他のプロセスあるいはスレッドとともに動
作して、ユーザ指定のトリガイベントが発生すると、ユ
ーザ指定のアクションを実行することによって、ターゲ
ットプログラムをインスツルメントする。これにより、
本発明は、ターゲットプログラムのソースコードや実行
可能コードを修正することなく、所望の任意のタイプの
インスツルメンテーションを任意のターゲットプログラ
ムに対して提供することができる。本発明の実施例は、
フロントエンド部分およびバックエンド部分を有するイ
ンスツルメンテーションツールの形式のものである。こ
のツールのフロントエンド部分およびバックエンド部分
はそれぞれ異なるマシン上で動作することが可能であ
り、あるいは、両方の部分とも同一のマシンで動作する
ことも可能である。フロントエンド部分は、作成グラフ
ィカルユーザインタフェース(GUI)を有する。これ
により、ユーザは、与えられたターゲットプログラムに
あわせてカスタマイズされたインスツルメンテーション
オペレーションを有するGUIの作成をグラフィカル
(図形的)に設計することが可能となる。フロントエン
ド部分は、例えばJavaで実装され、Java対応ウ
ェブブラウザで実行することが可能である。バックエン
ド部分は、C++で実装されることが可能であり、ユー
ザ指定のアクションおよびその他のインスツルメンテー
ションファンクションに従って、ターゲットプログラム
の実行を制御する。フロントエンドとバックエンドは、
通信媒体(例えば、従来のTCP/IPメッセージング
を利用)を通じて通信する。
【0008】本発明によれば、与えられたターゲットプ
ログラムは、ターゲットプログラム実行中に発生するユ
ーザ指定のトリガイベントに応答して、実行を制御しユ
ーザ指定のアクションを実装することによってインスツ
ルメントされる。ユーザ指定のアクションおよびイベン
トは、上記のフロントエンド部分の作成GUIで指定す
ることが可能である。ターゲットプログラムの実行を指
示するコントローラは、指定されたトリガイベントが発
生すると、いくつかの他のプロセスあるいはスレッドと
ともに動作して、ユーザ指定のインスツルメンテーショ
ンアクションを実行する。コントローラおよびこれらの
他のプロセスあるいはスレッドは、上記のバックエンド
部分の要素であることが可能である。ユーザ指定のアク
ションおよびトリガに関する情報は、フロントエンド部
分のユーザインタフェースから、バックエンド部分のコ
ントローラおよび他のプロセスあるいはスレッドへ通信
され、ターゲットプログラムコードの修正することなく
所望のインスツルメンテーションを提供するために使用
される。また、プロセスあるいはスレッドは、ユーザ指
定のアクションの特性をモニタするためのカウンタを実
装するために使用することも可能である。例示的なユー
ザ指定アクションには、 (i)ターゲットプログラムの実行の変更 (ii)ターゲットプログラム変数の値の変更 (iii)ターゲットプログラムの出力をフロントエン
ド部分へ送信すること (iv)少なくとも1つの追加プログラムの起動 (v)ターゲットプログラムに関する与えられたイベン
トの発生のレートを計算すること (vi)ターゲットプログラムに関する与えられたイベ
ントが発生したときにメッセージをフロントエンド部分
へ送信すること (vii)オペレーティングシステムリソースのセット
の利用率に基づいてターゲットプログラム変数を修正す
ることがある。例示的なユーザ指定トリガイベントに
は、 (i)ターゲットプログラム変数の更新 (ii)ターゲットプログラム命令の実行 (iii)タイマの満了 がある。
【0009】本発明による間接インスツルメンテーショ
ンは、ターゲットプログラムのソースコードあるいは実
行可能コードの修正なしに、ターゲットプログラムの実
行時にインスツルメンテーション自体が容易に変更、追
加、あるいは削除されることを可能にすることによっ
て、フレキシビリティおよびパフォーマンスを大幅に改
善している。これにより、ユーザの利便性は大幅に増大
し、ユーザがインスツルメンテーションを実行するのに
要する時間は大幅に短縮される。また、本発明のインス
ツルメンテーションの間接性により、従来のソフトウェ
アインスツルメンテーション技法を用いては一般にイン
スツルメントすることができない一部のタイプのターゲ
ットプログラムのインスツルメンテーションが可能とな
る。このようなターゲットプログラムには、例えば、利
用可能なソースコードが存在しないか、理解が非常に困
難な「レガシー」(旧式の)ソフトウェアや、既に実行
中であったり、終了、インスツルメント、およびリスタ
ートをすることができないプログラムがある。また、本
発明によれば、アプリケーションプログラムの修正およ
び管理、フォールトトレランス、リアルタイムコラボレ
ーション(共同作業)、プロセスモニタリング、ソフト
ウェアレジュヴェネーション(rejuvenation)ならびにグ
ラフィカルインタフェース生成を含む、さまざまな分散
コンピューティングアプリケーションが可能となる
【0010】
【発明の実施の形態】以下で、本発明について、例示的
な分散コンピューティングシステムとともに説明する。
しかし、理解されるべき点であるが、本発明は、特定の
タイプのコンピューティングシステムでの使用に限定さ
れるものではなく、むしろ、従来のアプローチを用いて
可能なよりも簡便かつ効率的にソフトウェアインスツル
メンテーションを実行することが望まれる任意のコンピ
ューティング環境あるいはアプリケーションに一般に適
用可能である。ここで開示する技術は、LAN(local a
rea network)、WAN(wide area network)、MAN(me
tropolitan area network)、イントラネット、エクスト
ラネット、および、インターネットのようなグローバル
ネットワークに接続されたコンピュータなどのマシンで
利用可能である。本明細書で「プログラム」という用語
は、コンピューティングシステムないのコンピュータな
どのマシン上で実行されるいかなる種類の命令、コー
ド、プロセス、スレッドなどをも含むものとする。「分
散システム」という用語は、複数のコンピュータなどの
マシンを含む任意のシステムを含むものとする。本明細
書で「マシン」という用語は、コンピュータ、ワークス
テーションあるいはその他のタイプのデータ処理装置
と、そのような装置のさまざまなコンポーネントとを含
むものと理解すべきである。本明細書で「リモートマシ
ン」という用語は一般に、別のマシンの代わりにプロセ
スを実行するコンピュータ、ワークステーションなどの
データ処理装置を指す。従って、本発明によるリモート
マシンは、ホストマシンから地理的に離れている必要は
ない。「間接インスツルメンテーション」という用語
は、インスツルメントされるターゲットプログラムのソ
ースコードあるいは実行可能コードを直接に変更するこ
となく実装可能なインスツルメンテーションを指す。
「インスツルメンテーションツール」とは一般に、イン
スツルメンテーションプロセスの少なくとも一部を実装
するソフトウェアプログラムのことである。「コントロ
ーラ」という用語は一般に、インスツルメンテーション
ツールのバックエンドに関連して本明細書で説明する機
能を提供するソフトウェアプログラムなどのメカニズム
を指し、バックエンド全体を指すためにも、バックエン
ドの要素を指すためにも用いられる。
【0011】図1に、本発明の可能な一実施例による間
接インスツルメンテーションソフトウェアツールの全体
的アーキテクチャを示す。この実施例は、ユーザマシン
12およびリモートマシン14を含む分散システム10
において実装される。ユーザマシン12とリモートマシ
ン14は通信媒体15を通じて通信する。通信媒体15
は、本実施例では、ウェブ埋込みアプリケーション層1
6および従来のTCP/IP(Transmission Control Pr
otocol/Internet Protocol)層18を含む。ウェブ埋込
みアプリケーション層16は、TCP/IP層18とと
もに動作するように設定された適当なメッセージパッシ
ングメカニズムとすることが可能である。層16および
18の動作について詳細には図8に関して後述する。代
替実施例では他のタイプの通信媒体も使用可能である。
さらに、本発明の他の実施例は、単一のマシン、あるい
は、3個以上のマシンを用いて実装することも可能であ
る。
【0012】間接インスツルメンテーションソフトウェ
アツールは、「フロントエンド」部分と「バックエン
ド」部分を有する。フロントエンドはユーザマシン12
上に実装され、特に、「作成」グラフィカルユーザイン
タフェース(GUI)20を有する。フロントエンド
は、例えば、Java対応コンピュータなどの適当なマ
シン上で実行可能なJavaアプレットとすることが可
能である。バックエンドはリモートマシン14上に実装
され、ターゲットプログラム22(すなわち、インスツ
ルメントされるべきプログラム)と、ターゲットプログ
ラム22に対してインスツルメンテーションを実行する
バックエンドソフトウェア24という2つのソフトウェ
アプロセスを有する。以下で詳細に説明するように、バ
ックエンドソフトウェア24は、複数のプロセスおよび
スレッドからなることが可能である。ターゲットプログ
ラム22内で、要素25は、ターゲットプログラムの制
御フロー実行を表し、要素26は、ターゲットプログラ
ムのデータ空間を表す。バックエンドソフトウェア24
はコントローラ27を有する。フロントエンドは、ユー
ザと、ターゲットプログラム22を制御するバックエン
ドソフトウェア24との間のインタフェースを提供す
る。フロントエンドのGUI20は、詳細には図3およ
び図4に関して後述するように、好ましくは、ポイント
してクリックすること(ポイント・アンド・クリック)
により駆動され、プルダウンメニュー、ウィンドウ、リ
スト、ボタン、およびテキストフィールドを有する。
【0013】リモートマシン14上で実行されるコント
ローラ27は、ターゲットプログラム22の制御フロー
を指示し、プログラム22が実行されるときのプログラ
ム22の内部状態への観測可能性を提供する。コントロ
ーラ27は、ターゲットプログラムに対して、任意の時
点における実行の開始、中断、および終了を指示する能
力を有する。また、コントローラ27は、静的および動
的なデータならびにプロセッサレジスタを含む、ターゲ
ットプログラムの全データ空間を観察し操作することも
可能である。コントローラ27は、デバッガ(例えば、
従来のgdbあるいはdbxデバッガ)や、オペレーテ
ィングシステムによって提供される低レベルファシリテ
ィ(例えば、UNIXにおける従来のptraceファ
シリティや/procファイルシステム)を有すること
が可能である。これは、直接にターゲットプログラム2
2を制御しターゲットプログラム22と通信するバック
エンドの一部として作用する。実施例では、コントロー
ラ27は、gdbデバッガ(R. M. Stallman, "Debuggi
ng with GDB: the GNU Source-Level Debugger", 4.12
edition, January 1994、に記載)を有すると仮定す
る。コントローラ27で使用するための代替物も存在す
るが、gdbは、所望の機能を提供し、広くテストさ
れ、多くのプラットフォームに移植されている。
【0014】コントローラ27によれば、間接インスツ
ルメンテーションの自動化が可能となり、ハンドコーデ
ィングされるインスツルメンテーションコードの量が最
大限可能な限り削減される。インスツルメンテーション
ツールのユーザは、主にフロントエンドのGUI20と
対話し、一方、インスツルメンテーションはバックエン
ドのコントローラ27によって実行される。間接インス
ツルメンテーションソフトウェアツールのこの分散構成
により、従来のソフトウェアインスツルメンテーション
よりも有用性が拡大し、分散ソフトウェアフォールトト
レランス、リアルタイムコラボレーション、分散グラフ
ィカルインタフェース、およびその他の多くのアプリケ
ーションの実装が可能となる。
【0015】注意すべき点であるが、本実施例のインス
ツルメンテーションツールは、デバッガをその構成要素
の1つとして有するコントローラを含むが、ツール自体
は、一般にデバッガにはない追加機能を提供する。デバ
ッガは一般に、ブレークポイントの管理、ブレークポイ
ントに遭遇したときのデバッガコマンドの実行、およ
び、変数の値の印字および修正のような、多くの低レベ
ルタスクを実行することが可能である。これに対して、
本実施例のインスツルメンテーションツールは、自動化
され、透過的で、しかも分散方式で必要なすべてのタス
クを実行するようにコントローラ27内のデバッガを設
定する。さらに、このインスツルメンテーションツール
は、デバッガのみでは実行不可能なタスクを実行するた
めに、ターゲットプログラム22にユーザ指定コードを
組み込んで実行する能力を追加する。また、このインス
ツルメンテーションソフトウェアツールは、例えば、指
定されたイベントが発生したときに前述のユーザ指定コ
ードをトリガする自動化フィードバックメカニズムのよ
うな、他の独自の機能も提供する。
【0016】図2に、図1のインスツルメンテーション
ツールの2つの動作モードを示す。前述のように、イン
スツルメンテーションツールは、作成GUI20を提供
することによってターゲットプログラム22のインスツ
ルメンテーションをサポートする。インタラクティブ
(対話)動作モードにおいて、作成GUI20は、ユー
ザが、カスタマイズされた「作成対象」GUI(作成さ
れるGUI)30を作成することを可能にし、作成対象
GUI30は、図示のようにバックエンド28に接続す
る。作成GUI20および作成対象GUI30はいずれ
も、インスツルメンテーションツールのフロントエンド
部分に関連づけられ、実施例のユーザマシン12上で動
作する。バックエンド28は、コントローラ27を含む
バックエンドソフトウェア24を有し、リモートマシン
14上に実装される。ユーザが作成GUI20と対話す
る間、作成対象GUI30は、必要に応じて直ちに調べ
て修正することができる別のウィンドウ内に形成され
る。作成GUI20は、バックエンド28に対してター
ゲットプログラム情報を要求し(破線で示す)、バック
エンド28はこれに応答して、作成対象GUI30へ、
要求された情報を送る(実線で示す)。ユーザが、イン
スツルメンテーションおよび作成対象GUI30に満足
すると、作成対象GUI30の最終バージョンを、スタ
ンドアロン動作モード用に生成することができる。スタ
ンドアロン動作モードでは、このバージョンを、作成G
UI20とは独立に実行することができる。このスタン
ドアロン動作モードでは、作成対象GUI30は、ター
ゲットプログラム実行中にバックエンド28に対して直
接にターゲットプログラム情報を要求し(破線で示
す)、バックエンド28はこれに応答して、作成対象G
UI30へ、要求された情報を送る(実線で示す)。ユ
ーザは、一般に、まずインタラクティブモードに入って
作成対象GUI30を調整した後、結果として得られる
作成対象GUI30をスタンドアロンモードで実行す
る。
【0017】図3および図4と、図5に、それぞれ、本
発明による作成GUI20および作成対象GUI30の
例を示す。図3および図4の作成GUI20は、ソース
リスティング(source listing)ウィンドウ40、関数リ
スト(function list)42、グローバル変数リスト(glob
al variable list)44およびローカル変数リスト(loca
l variable list)46を含む。関数リスト42から選択
された関数は、リスト42において強調表示され、図示
のようにテキストフィールド52に表示される。選択さ
れた関数の対応するグローバル変数およびローカル変数
は、それぞれのグローバル変数リスト44およびローカ
ル変数リスト46に表示され、一方、その関数のソース
コードがソースリスティングウィンドウ40に表示され
る。メーター(Meter)ウィジェットボタン54、テキス
トフィールド(TextField)ウィジェットボタン56およ
びテキストエリア(TextArea)ウィジェットボタン58の
ようないくつかのボタンが設けられる。これらのボタン
により、ユーザは、作成対象GUI30に現れることに
なる個々のウィジェットを指定することができる。例え
ば、メーターウィジェットボタン54を用いて、作成対
象GUI30内に視覚的に認識されるフォーマットでモ
ニタされる特定の変数を指定することが可能である。こ
のようなフォーマットの1つは水平バーであり、その長
さが、対応する変数の値に比例する。他のタイプのウィ
ジェットには、例えば、パイチャート(円グラフ)ウィ
ジェット、タイムラインウィジェットなどがある。これ
らおよびその他のウィジェットクラスは、ユーザが拡張
可能な基本グラフィカルウィジェットライブラリに含め
ることができる。
【0018】図3および図4には図示しないが、作成G
UI20に、いくつかのプルダウンメニューを設けるこ
とが可能である。例えば、作成GUI20は、ターゲッ
トプログラムのロード、実行、割込み、定期的割込み、
あるいは終了のコマンドのような、ターゲットプログラ
ムに全体的に関係するコマンドのメニューを含むことが
可能である。別のメニューには、ソースコード行に対応
するブレークポイントを設定するためのコマンドや、ユ
ーザ定義関数に対するトリガメカニズムを指定するコマ
ンドのような、インスツルメンテーションコマンドを提
供することが可能である。こうして、作成GUI20に
より、ユーザは、インスツルメンテーションツールによ
って提供されるインスツルメンテーション動作を選択し
設定することができる。例えば、プルダウンメニューか
ら選択された特定のインスツルメンテーションコマンド
がユーザ指定パラメータを要求する場合、ユーザは、キ
ーボードによりそのパラメータを対応するテキストフィ
ールドに入力することができる。作成GUI20のウィ
ンドウおよびリストに表示されるターゲットプログラム
情報は、前述のように、作成GUI20からバックエン
ドに対して要求されることが可能である。
【0019】図5の作成対象GUI30は、作成GUI
20においてユーザによって指定されたブレークポイン
トアクション(breakpoint action)をリストするウィン
ドウ60と、ブレークポイントアクションあるいは他の
ユーザ指定インスツルメンテーションに応答してバック
エンドから受け取った通知(notification)をリストする
ウィンドウ62を有する。作成対象GUI30はさら
に、選択された変数i、lenおよびtime_ptr
の現在の状態をそれぞれ指定する変数ウォッチ(variabl
e watch)ウィンドウ64、66および68のセットを有
する。注意すべき点であるが、これらの選択された変数
は、選択されたターゲットプログラムの場合の例示的な
ものであり、他の型の変数もモニタすることが可能であ
る。変数ウォッチウィンドウは、図3および図4の作成
GUI20内のメーターウィジェットボタン54を用い
て指定することが可能なメーターウィジェットの例であ
る。こうして、作成対象GUI30は、作成GUI20
から生成されたユーザ指定インスツルメンテーションの
表示を行う。前述のように、作成対象GUI30はスタ
ンドアロンモードで実行することが可能である。このモ
ードで、作成対象GUI30は、バックエンドと対話し
て、ターゲットプログラムの実行時に、ターゲットプロ
グラムに関する必要な情報を取得する。このように、ユ
ーザは、作成GUI20のインスツルメンテーション生
成機能を用いて、カスタマイズされた作成対象GUI3
0を生成し、作成対象GUI30がバックエンドと対話
してインスツルメンテーションに必要なターゲットプロ
グラム情報を提供するようにする。
【0020】図6に、インスツルメンテーションツール
の例示的なフロントエンド100を詳細に示す。フロン
トエンド100は、前述の作成GUI20および作成対
象GUI30を有する。作成対象GUI30は、テキス
トエリアコード30A、メーターウィジェットコード3
0Bおよびテキストフィールドコード30Cを有する。
コード30A、30Bおよび30Cのセットは、図5に
示した作成対象GUI30のグラフィカル表示の対応部
分を生成するためのものである。コード30A、30B
および30Cのセットのグラフィカル出力は、ユーザが
GUI30の一部として特定のウィジェットを使用する
と決めたかどうかに応じて、作成対象GUI30の一部
として表示される。フロントエンド100はさらに、フ
ロントエンド100とバックエンドの間の通信を実装す
るPCP(Prism CommunicationsProtocol)要素102
と、通信媒体15を通じてバックエンドからの通信を受
け取るバックエンドリスナ104とを有する。
【0021】図7に、例示的なバックエンド28を詳細
に示す。要求されるさまざまな作業を処理するために、
バックエンドはいくつかのコンポーネントに分割され
る。これらのコンポーネントは一般に並列に実行され、
フォーク(fork)されたプロセスとして実行されるもの
も、スレッドとして実行されるものもある。コンポーネ
ント自体が追加プロセスをフォークしなければならない
場合を除いては、可能な限りスレッドが用いられる。複
数のスレッドが、同じメモリ空間を共有し、単一のプロ
セスを形成することも可能である。図7で、太実線矢印
は、与えられたプロセスのフォークを示し、細実線矢印
は、与えられたプロセスのスレッドを示し、破線矢印は
通信を示す。本実施例におけるバックエンド28は、動
作を制御するmainプロセス110を有する。デバッ
ガプロセスgdbおよび別のプロセスsurrogat
eは、mainプロセスからのフォークとして開始さ
れ、readgdb、readweaslおよびrea
dsurrogateはmainプロセスのスレッドで
ある。readgdbスレッドは、gdbプロセスから
情報を読み出すことを担当し、readweaslスレ
ッドは、通信媒体15から情報を読み出すことを担当
し、readsurrogateスレッドは、surr
ogateプロセスから情報を読み出すことを担当す
る。gdbプロセスは、gdbプロセスからのフォーク
として開始されるtargetプロセスによって図示さ
れるように、バックエンド28によって行われるデバッ
ガ動作を制御する。surrogateプロセスは、s
urrogateプロセスからのフォークとして開始さ
れるactionプロセスによって図示されるように、
バックエンド28によって行われるアクションを制御す
る。このようなバックエンドのアクションについて詳細
は以下で説明する。
【0022】前述のように、バックエンド28は、ター
ゲットプログラムに対するコントローラとして作用す
る。フロントエンド100からのすべての要求はバック
エンドによって処理され、ターゲットプログラム22か
らフロントエンドへのすべての出力はバックエンドによ
って転送される。このように、本実施例におけるバック
エンドは、フロントエンドとターゲットプログラムの間
の唯一のインタフェースである。バックエンドがターゲ
ットプログラムに対して実行する動作は、間接インスツ
ルメンテーションの基礎を構成する。ターゲットプログ
ラムとフロントエンドの間のインタフェースとして作用
することに加えて、バックエンドは、他の重要な機能も
実行する。第1に、バックエンドのアクションは、所望
のトリガ条件に遭遇したときに実行されるようにユーザ
が指定することが可能である。このアクションは、計算
を実行すること、ターゲットプログラム変数値を含むタ
ーゲットプログラムの実行を変更すること、出力をフロ
ントエンドに送ること、別のプログラムを起動するこ
と、あるいは他の機能を実行することを行う。アクショ
ンを実装することに加えて、バックエンドは、固有の内
部カウンタを含み、ターゲットプログラム変数以外の変
数として使用することが可能である。これらのバックエ
ンドのアクションおよびカウンタは非常に強力であり、
ターゲットプログラムの実行を変更する能力を提供す
る。
【0023】次に、バックエンド28によってサポート
されるいくつかのアクションについて説明する。明示的
なコントローラコマンド(例えばgdbコマンド)を通
じてターゲットプログラムを制御することに加えて、バ
ックエンドは他のいくつかの機能を実行する。本明細書
で「アクション」という用語は、バックエンドによって
実行されるユーザ指定タスクを指す。可能なアクション
の例は以下の通りである。 (1)ターゲットプログラム変数が更新されたときなど
に、与えられたイベントの発生レートを計算する。 (2)ターゲットプログラム変数の値があるしきい値レ
ベルに達したときにその値をリセットする。 (3)別のイベントの発生レート(上記(1)参照)が
あるしきい値レベルを超えたときなどに、あるイベント
が生じた場合にユーザにメールを送る。 (4)オペレーティングシステムリソース(例えば、C
PU利用率、メモリ使用率、およびネットワークトラフ
ィック)のセットの使用量をモニタし、モニタされたデ
ータに基づいてターゲットプログラム変数を修正する。 アクションは一般に、別個のプロセスとして実行され、
解釈されたスクリプト(例えば、シェル、PERL、a
wk、あるいはJavaスクリプト)として、または、
ネイティブの実行可能プログラムとして実装される。フ
ロントエンドは、ユーザがフロントエンド作成GUI2
0を通じて明示的にアクションを書いて、そのアクショ
ンファイルをバックエンドへ送ることができるように構
成される。あるいは、アクションファイルは、バックエ
ンドが存在するリモートマシン上に手動で置くことも可
能である。
【0024】フロントエンドからのコマンドに基づい
て、バックエンドは、いつアクションをトリガすべきか
(すなわち、いつアクションが実行を開始すべきか)を
決定する。例示的なアクショントリガには以下のものが
ある。 (1)ターゲットプログラム変数の更新。 (2)ターゲットプログラム命令の実行(このトリガ
は、ターゲットプログラム変数を含む条件式によってさ
らに制限されることがある)。 (3)タイマの満了。 各アクションは、固有のトリガのリストを有することが
可能である。アクションに対するトリガが発生すると、
そのアクションはバックエンドによって開始される。ア
クションは、開始された後、不要であると判断するまで
実行される。従って、アクションは、短時間で実行され
て消滅するように書かれることも可能である。また、起
動されると、バックエンドが終了するまで実行を継続す
るアクションもある。アクションが既に実行中に再びト
リガされた場合、後のアクションは開始する必要がな
い。しかし、バックエンドは一般に、アクションが開始
されているかあるいは既に過去に開始されたかにかかわ
らず、各トリガに対してアクションへ新たな入力を送
る。
【0025】最も有用であるために、アクションは、バ
ックエンドおよびターゲットプログラムとなんらかの相
互作用を有するべきである。バックエンドは、アクショ
ンがトリガされると、そのアクションに入力を送ること
ができる。この入力は、例えば、ターゲットプログラム
変数値、定数ストリング、およびバックエンドカウンタ
の値を含むことが可能である。アクションは一般に、バ
ックエンドに送られる少なくとも以下のいくつかのタイ
プの出力を生成する。 (1)バックエンドからフロントエンドへ転送されるス
トリング(このストリングは、フロントエンドによって
グラフィカルウィジェットに表示されることが可能であ
る)。 (2)バックエンドカウンタの値を更新するコマンド。 (3)ターゲットプログラムの実行あるいは状態を変え
るコマンド。 もちろん、アクションは他のタイプの出力も行うことが
可能である。
【0026】アクションは、バックエンドおよびターゲ
ットプログラムと密接に相互作用するため、アクション
の実行に関して、バックエンドに対して同期または非同
期であることが可能である。同期アクションは、アクシ
ョンがトリガされた後、そのアクションがsync(同
期)シグナルをバックエンドに送るまで、バックエンド
およびターゲットプログラムを休止(ポーズ)する。同
期アクションは、アクションがバックエンドカウンタを
修正する場合や、ターゲットプログラムの実行あるいは
状態を変える場合などに必要となることがある。例え
ば、ターゲットプログラム変数の値があるしきい値に達
したときにアクションがその値をリセットする場合、タ
ーゲットプログラムは、その変数がリセットされるまで
実行の継続を許されてはならない。これに対して、非同
期アクションは、バックエンドあるいはターゲットプロ
グラムを休止させることはない。非同期アクションは一
般に、アクションがターゲットプログラムの将来の実行
に影響を及ぼさないとき(例えば、アクションが単に、
フロントエンドへ転送される出力ストリングを送ると
き)に使用される。
【0027】上記のバックエンドカウンタは、バックエ
ンドによって管理される整数変数として実装されること
が可能である。このカウンタは一般に、ターゲットプロ
グラム変数やアクション内の変数とは別である。バック
エンドカウンタは、相異なるアクション間の通信に有用
である。例えば、2つのアクションが、2つの異なるイ
ベントが発生するレートを計算し、第3のアクション
が、これらの2つのレートを比較して、2つのレートが
あるしきい値よりも大きく異なる場合にターゲットプロ
グラムをリセットするとする。最初の2つのアクション
が、それぞれのレートをそれぞれのバックエンドカウン
タに書き込み、その後これらの値は、バックエンドから
第3のアクションに入力として送られる。バックエンド
カウンタは、アクションがトリガされた後に直ちに実行
を終了するように設計される場合に、同じアクションの
相異なる呼出し間の状態情報を格納するためにも用いる
ことができる。
【0028】図8に、ウェブ埋込みアプリケーション層
16およびTCP/IP層18を含む上記の通信媒体の
実施例を示す。前述のように、ウェブ埋込みアプリケー
ション層は、例えば、ウェブ埋込みアプリケーションの
複数のJavaフロントエンドと1個のC++バックエ
ンドの間の通信の実装を容易にするように設計されたJ
ava/C++クラスライブラリであることが可能であ
る。媒体は、JavaプログラムとC++バックエンド
がデータおよびファイルを交換しフロントエンドからバ
ックエンド上のディレクトリにアクセスすることを可能
にする、TCP/IPストリームソケットと、このソケ
ットのための高レベルクラスラッパとを使用することが
可能である。図8は、通信媒体の例示的な層構造を示
し、JavaフロントエンドとC++バックエンド内の
さまざまな層どうしの間の通信を例示する。
【0029】図9に、図6のようなフロントエンド10
0のPCP要素で用いられる例示的なPCPコマンド構
造を示す。PCPの使用により、フロントエンドとバッ
クエンドの間の通信が単純化され、複数のフロントエン
ドとバックエンドの使用が容易になる。この例における
すべてのPCPコマンドはASCIIストリングとして
エンコードされる。ストリング内の最初のスペースで区
切られたワードは常に、メッセージの目的を表す整数コ
マンドコードである。将来におけるコマンドの追加を可
能にするため、コマンドコードはカテゴリに分けられ、
各カテゴリは、図示のような特定のコード範囲に割り当
てられる。コマンドコード100〜299は、ブレーク
ポイントコマンドの指定に割り当てられ、この範囲はさ
らに、ブレークポイントの位置および特性(例えば、ブ
レークポイントは一時的かどうか)をセットするコマン
ドと、ブレークポイントに遭遇したときにとるべきアク
ションを指定するコマンドに細分される。通知コマンド
は、あるイベントが発生したこと、あるいは、ある条件
が満たされたことを示すためにバックエンドからフロン
トエンドに送られる。確認コマンドは、動作モードの信
頼性を高めるためにバックエンドからフロントエンドに
送られる。フォールトトレランスコマンドは、特定のア
プリケーション(すなわち、フォールトトレランスの提
供)をサポートするように設計されたコマンドのカテゴ
リの一例である。
【0030】本発明による間接インスツルメンテーショ
ンツールは、さまざまなソフトウェアインスツルメンテ
ーションタスクを実行することが可能である。このよう
なタスクのいくつか(それぞれ、本発明の特定の効果を
作用効果を例示する)について以下で説明する。第1の
タスクは、インタラクティブGUIを作成し、実際のタ
ーゲットプログラムのアプリケーション管理を行うため
のウェブサーバのインスツルメンテーションである。第
2のタスクは、固有のフォールトトレランスを有しない
ターゲットプログラムにフォールトトレランスを追加す
ることである。第3のタスクは、ターゲットプログラム
機能の修正であり、これは、グラフィカルクロックプロ
グラムの表示フォーマットの変更が含まれる。この最後
のタスクは、全くソースコードを使用せずに実行され
る。
【0031】第1の例において、既知のターゲットプロ
グラムを用いて、本発明が、プロセスのデータ空間への
観測可能性を得るためにどのように用いられるかを示
す。この例におけるターゲットプログラムはApach
eウェブサーバ(URL http://www.apache.org/のA
pache HTTPサーバプロジェクトから入手可
能)である。Apacheサーバが収集する統計をモニ
タしたいと仮定する。Apacheは、特権クライアン
ト(例えばブラウザ)がURL http://<host>:<port>
/server_statusに対する要求をサーバへ発行すると、H
TMLフォーマットでそのような統計を返すことができ
る。しかし、この方法では、この例で求めているサーバ
統計の連続的なグラフィカル表示は不可能である。従っ
て、まず、Apacheコード内で、サーバ統計を更新
する行を識別する。Apacheウェブサーバ内のファ
イルhttp_main.cは、構造体new_score_recを有する関数
increment_countsを含む。この構造体のフィールドに
は、我々が関心のある(従って、グラフィカルに表示し
たい値を含む)現在の統計値が代入される。シンボリッ
ク情報を有するApache実行可能コードがあると仮
定すれば、Apacheのインスツルメンテーションを
行い、所望のグラフィカルユーザインタフェースを得る
ことができる。
【0032】インスツルメンテーション手続きは、上記
のインスツルメンテーションツールのバックエンドを起
動することから開始する。バックエンドは、フロントエ
ンドと通信するために使用するポートの番号を出力す
る。次に、ブラウザプログラムにおいて、フロントエン
ドアプレット(これは作成GUI20を提供する)を起
動する。フロントエンドは、バックエンドのホストであ
るマシンの名前と、バックエンドポート番号を要求して
くる。フロントエンド作成GUIのプルダウンメニュー
において、"Load Target Program"(ターゲットプログ
ラムをロードする)を選択すると、Apache実行可
能ファイルの名前を入力するよう要求してくる。これに
より、バックエンドはApacheウェブサーバに接続
される。
【0033】次のステップは、"Request Function Lis
t"(関数リストを要求する)コマンドを選択することに
よってサーバコード内のすべての関数のリストを要求す
ることである。このリストは、作成GUIの指定された
領域にすべての関数を、パラメータおよび戻り値型を含
めて表示する。このリストから、関数increment_counts
を選び、適当なメニュー選択により、その関数のソース
コードと、ローカル変数のリストを要求する。すると、
ソースコードおよびローカル変数リストが、作成GUI
の別の領域に表示される。関数ソースコード表示におい
て、モニタしたい変数が更新される各行を1行ずつ選択
する。各行選択において、ローカル変数のリスト内のモ
ニタされる変数の名前をクリックし、ウィジェット(こ
の場合はメーターウィジェット)をそれに関連づけるこ
とによってこの行のインスツルメンテーションを終了す
る。図5に関して説明したように、メーターウィジェッ
トは、例えば、関連づけられた変数の値に長さが比例す
る水平バーである。ウィジェットは、選択されるとすぐ
に、適当なラベルとともに、作成対象GUIに表示され
る。最終的に、モニタしたい変数ごとに1つずつのメー
ターウィジェットを設定する。
【0034】最後に、作成GUIメニューで"Run"(実
行)コマンドを選択することによって、Apacheサ
ーバの実行を開始する。すると、作成対象GUI内の各
ウィジェットが、関心のある統計変数の値をグラフィカ
ルに表示する。Apacheサーバの実行は、作成対象
GUI内のメニュー項目をクリックすることによってあ
る程度制御される。例えば、ユーザがサーバを一度ある
いは定期的に中断すること、実行を再開すること、およ
び、終了またはリスタートすることを可能にするような
制御動作を提供することが可能である。
【0035】統計変数をグラフィカルにモニタするだけ
でなく、さらに能動的にそれらの変数を使用したいと仮
定する。例えば、ウェブサーバへの1万クライアント要
求の後にバックエンドが自動的に電子メールメッセージ
をリモートサーバアドミニストレータに送るようにした
いとする。これを行うには、所定の電子メールをサーバ
アドミニストレータのアドレスへ送るシェルスクリプト
を書くことができる。関数increment_counts内のnew_sc
ore_rec.access_countを更新するソースコード行をメー
ターウィジェットに関連づけるだけではなく、この行を
このシェルスクリプトにも関連づけることができる。さ
らに、このシェルスクリプトが呼び出される前にこの行
が繰り返し実行される回数を指定することも可能であ
る。Apacheサーバがバックエンドの監督下で実行
されると、指定されたソースコード行が1万回実行され
るごとにこのシェルスクリプトの実行がバックエンドに
よってトリガされる。
【0036】前の例で、シェルスクリプトは、所望のア
クションを実行しなければならないときに必ず呼び出さ
れる。代わりに、シェルスクリプトは、タスクを完了し
た後も生き続け、バックエンドがそのシェルスクリプト
にデータを供給し続けることも可能である。この機能を
用いて、さらに複雑な方法でターゲットプログラムの機
能を拡張することができる。例えば、Apacheサー
バへの接続試行の現在の平均を計算することができる。
このためには、バックエンドは、ある時間間隔で、new_
score_rec.access_countの値をシェルスクリプトに送
る。すると、スクリプトは、new_score_rec.access_cou
ntの以前に格納されたバージョンと更新された値との差
を計算し、その差を時間で正規化し、この値をバックエ
ンドに送る。バックエンドはそれをフロントエンドへ転
送する。すると、接続試行の現在の平均をメーターウィ
ジェットに表示することができる。
【0037】本発明のもう1つのアプリケーションは、
フォールトトレランスの領域のものである。この例で
は、上記の間接インスツルメンテーションツールは、固
有のフォールトトレランスを有しないターゲットプログ
ラムにフォールトトレランス機能を追加することをサポ
ートするように拡張される。フォールトトレランスの最
も重要な点は、一般に、エラー検出およびエラー回復で
ある。エラー検出は、複数のマシン上にターゲットプロ
グラムを複製し、ターゲットプログラムの各コピーが別
個のバックエンドによって制御されるようにすることに
より行われる。これらのバックエンドは単一のフロント
エンドと通信する。このフロントエンドは、バックエン
ドのコーディネータ(調整者)として、および、実行す
るターゲットプログラム間の不一致を判定する投票者と
して作用する。検出されたエラーからの回復は、修正さ
れたチェックポインティングおよびリスタートメカニズ
ムによって行われる。フォールトトレランスのための間
接インスツルメンテーションの使用の詳細な説明は、本
出願と同日に出願される同一出願人の特許出願(発明の
名称:「コンピューティングシステムにおいてフォール
トトレランスを提供する方法」)に記載されている。
【0038】本発明による間接インスツルメンテーショ
ンツールは、ソースコードへの変更を必要とせずにター
ゲットプログラム修正を行うためにも使用可能である。
以下の例は、ソースコード変更を使用しないターゲット
プログラムの機能の修正を例示する。この例の目標は、
xclockプログラムの時刻出力フォーマットを修正
することである。xclockプログラムは、X Wi
ndowグラフィカル環境とともに配付されているグラ
フィカルクロックプログラムである。標準のxcloc
kプログラムは、時刻をただ1つのデフォルトフォーマ
ット(例えば、Sat Apr 11 20:28:03 EDT 1998)で表示
する。別のフォーマット(例えば、SatApr 11 8:28:03
PM)が必要な場合、従来技術では、ソースコードを修正
して再コンパイルすることが要求される。しかし、本発
明の間接インスツルメンテーションでは、xclock
プログラムに、任意の実行時選択可能な時刻フォーマッ
トを追加することができる。以下のステップを用いてこ
のインスツルメンテーションを実行することが可能であ
る。まず、時刻変数の仮想アドレスを見つける。これ
は、多少の調査努力を要することがある。次に、xcl
ockプログラムを実行し、グラフィカル出力が最初に
現れる時間を待機した後、内部状態のコアダンプを生成
させるシグナルをxclockプログラムへ送る。デバ
ッガの助けを借りて、コアダンプのメモリ空間を調べ
る。xclockグラフィカル表示によって表示された
最終時刻を表すストリングに対するストリング検索を行
う。このストリングが見つかったら、コアダンプ内のデ
ータセグメントの最初からのそのストリングのオフセッ
トを計算することによって、対応する仮想アドレスを求
める。この仮想アドレスは、xclockプログラムの
次の実行に対しても同一である。
【0039】時刻変数に対する仮想アドレスが求められ
たら、ユーザは、この仮想アドレスをフロントエンドに
入力する。すると、フロントエンドは、バックエンドに
対して、その仮想アドレスにウォッチポイントを挿入す
るよう命令する。さらに、そのウォッチポイントに対し
て、時刻フォーマットをユーザが希望する代替フォーマ
ットに変更する特定のバックエンドアクションを指定す
る。xclockプログラムが間接インスツルメンテー
ションツールの制御下で実行されると、時刻変数がxc
lockプログラムによって更新されるときにバックエ
ンドアクションが実行され、従って、時刻が更新される
ときには必ずグラフィカル時刻出力が変えられる。これ
が、ソースコードを使用せず、また、xclockプロ
グラムを再コンパイルすることを必要とせずに実現され
ていることに注意すべきである。
【0040】本発明による間接インスツルメンテーショ
ンツールは、さらに多くのアプリケーションに対する基
礎を提供することが可能である。そのような追加アプリ
ケーションには、リアルタイムコラボレーション、プロ
セスモニタリング、ソフトウェアレジュヴェネーショ
ン、2000年問題などの問題の解決、ならびにグラフ
ィカルインタフェース生成がある。これらの追加アプリ
ケーションのそれぞれについて以下で順に説明する。
【0041】上記の作成対象GUIは、リアルタイムコ
ラボレーションを提供するために使用可能である。リア
ルタイムコラボレーションの例としては、分散ソフトウ
ェア開発および分散リアルタイムゲームがある。これら
のアプリケーションでは、何人かのユーザが存在する。
各ユーザが同じターゲットプログラムにアクセスするた
めに、別々の作成GUIを使用することが可能である。
分散ソフトウェア開発の場合、複数の開発者が同じプロ
ジェクトについて相異なる物理的位置で共同作業したい
場合がある。ある開発者が、他の開発者に対して、コー
ドの動作をグラフィカルにかつ対話的に示すことができ
ればよい。このような能力は、ソフトウェア開発、デバ
ッグ、およびデモンストレーションを容易にする。
【0042】プロセスモニタリングアプリケーションで
は、本発明による間接インスツルメンテーションツール
は、実行の命令レベルおよび関数レベルの制御による、
ターゲットプログラムデータ空間内への観測可能性を提
供する。この能力は、指定された実行のポイントでトリ
ガされるユーザ指定アクションを実行する能力と組み合
わせると、強力なプロセスモニタリングアプリケーショ
ンの基礎となる。以下に、プロセスモニタリングに基づ
くいくつかのアプリケーションを例示する。 (1)従来のGUI、すなわち、便利なポイント・アン
ド・クリックでのグラフィカルユーザインタフェースの
作成。 (2)従来のデバッグ(バックエンドはデバッガの上に
構成されることが可能なため、作成GUIをデバッガへ
のフロントエンドとして使用することは自然な応用であ
る)。 (3)リアルタイムプロファイリング(従来のプロファ
イリング方法は、プログラムのディスクイメージを直接
に変更することによってオブジェクトコードのインスツ
ルメンテーションを行うが、本発明は、再コンパイルな
しにターゲットプログラムの間接インスツルメンテーシ
ョンが可能である)。 (4)ロギング。例えば、ターゲットプログラムの状態
を記録する機能ウィジェットのみを含むような、グラフ
ィカルウィジェットのないGUIを作成することも可能
である。 (5)ロギング以外の時間トリガアクション。例えば、
ターゲットプログラムやオペレーティングシステムを変
更することなしに、ソフトウェアレジュヴェネーション
を実行する時刻を決定するためにデータを収集すること
や、ディスクトラフィックの量をモニタし、追加ディス
クキャッシュのフラッシュを開始すること。
【0043】ソフトウェアレジュヴェネーションとは、
プログラム実行を中断し、プログラムデータ空間をチェ
ックポイントし、チェックポイントされた状態からプロ
グラムをリスタートすることによって、プログラム故障
を回避するプロセスのことである。難しい問題は、い
つ、どのくらいの頻度で、プログラム故障を回避するた
めに、しかも、できるだけ少ないオーバーヘッドで、レ
ジュヴェネーション(若返り)を行うべきかを決定する
ことである。これを行うためには、実行中のプロセスに
関するデータを収集し、そのプロセスがあるしきい値を
超えて「老化」(時間経過)したことによりプログラム
動作不良の確率があるしきい値を超えているかどうかを
調べる。従来のレジュヴェネーション方法は一般に、プ
ロセスの内部状態に関する情報を考慮せず、その代わり
に、プロセスによって要求されるオペレーティングシス
テムリソースをモニタする。間接インスツルメンテーシ
ョンを用いると、従来のソフトウェアレジュヴェネーシ
ョン方法を容易に実現することができる。しかし、間接
インスツルメンテーションによれば、実行中のプロセス
の内部状態を見ることも可能となる。従って、本発明を
用いれば、レジュヴェネーションを行うべき時点と、プ
ログラムデータ空間のどの部分をチェックポイントしな
ければならないかとを決定するための技法をさらに提供
することができる。
【0044】また、間接インスツルメンテーションを用
いれば、2000年問題に対するデータ中心の動的解決
法を提供することができる。例えば、欠陥のあるコード
文を識別する代わりに、問題となる可能性のあるデータ
変数を識別する。その後、インスツルメンテーションツ
ールを用いて、選択された変数がアクセスされるとター
ゲットプログラムが中断するように、これらの変数に対
するウォッチポイントを有効にする。ウォッチポイント
が活性化されると、ユーザ指定アクションが実行され、
プログラム実行を修正するようにターゲットプログラム
の状態が操作される。
【0045】また、間接インスツルメンテーションは、
グラフィカルインタフェース作成の技術を改善すること
ができる。従来、グラフィカルインタフェースは、
(1)MotifやTcl/Tk(John K. Ousterhou
t, "Tcl and the Tk Toolkit", Addison-Wesley Profes
sional Computing Series, Addison-Wesley, 1994、に
記載)のようなグラフィカルライブラリや言語に基づい
てコードを書くことによって、または、(2)xfor
msパッケージ(T. C. Zhao and Mark Overmars, "For
ms Library: A Graphical User Interface Toolkit for
X", 0.86 edition, March 1997、に記載)で用いられ
るように、ポイント・アンド・クリック方式を用いてグ
ラフィカルコードを生成することによって、作成され
る。グラフィカルコードの多くを自動的に生成しようと
するxformsのようなパッケージでも、グラフィカ
ルコードを機能コードとインタフェースするために追加
のコードを書かなければならない。本発明の間接インス
ツルメンテーションにより、このインタフェース(「グ
ルー」コード)を書く必要はなくなる。
【0046】
【発明の効果】以上述べたごとく、本発明によれば、タ
ーゲットプログラムのソースコードや実行可能コードを
修正することなく、所望の任意のタイプのインスツルメ
ンテーションを任意のターゲットプログラムに対して提
供することが可能となる。
【図面の簡単な説明】
【図1】本発明の実施例のブロック図である。
【図2】図1の実施例によってサポートされる複数の動
作モードの図である。
【図3】作成グラフィカルユーザインタフェース(GU
I)の図である。
【図4】作成グラフィカルユーザインタフェース(GU
I)の図である。
【図5】作成対象GUIの図である。
【図6】図1の実施例のフロントエンド部分の詳細図で
ある。
【図7】図1の実施例のバックエンド部分の詳細図であ
る。
【図8】本発明とともに使用するのに適した例示的な通
信媒体の構造の図である。
【図9】本発明によるインスツルメンテーションを提供
する例示的なコマンドコードカテゴリの図である。
【符号の説明】
10 分散システム 12 ユーザマシン 14 リモートマシン 15 通信媒体 16 ウェブ埋込みアプリケーション層 18 TCP/IP層 20 作成GUI 22 ターゲットプログラム 24 バックエンドソフトウェア 27 コントローラ 28 バックエンド 30 作成対象GUI 30A テキストエリアコード 30B メーターウィジェットコード 30C テキストフィールドコード 40 ソースリスティングウィンドウ 42 関数リスト 44 グローバル変数リスト 46 ローカル変数リスト 52 テキストフィールド 54 メーターウィジェットボタン 56 テキストフィールドウィジェットボタン 58 テキストエリアウィジェットボタン 64 ウォッチウィンドウ 66 ウォッチウィンドウ 68 ウォッチウィンドウ 100 フロントエンド 102 PCP要素 104 バックエンドリスナ 110 mainプロセス
───────────────────────────────────────────────────── フロントページの続き (71)出願人 596077259 600 Mountain Avenue, Murray Hill, New Je rsey 07974−0636U.S.A. (72)発明者 レインハード クレムン アメリカ合衆国,07060 ニュージャージ ー,ノース プレインフィールド,ロック アベニュー 1275,アパートメント エ ヌ2 (72)発明者 ナブジャット シングー アメリカ合衆国,07960 ニュージャージ ー,モーリスタウン,ドレイド ドライブ 1ビー (72)発明者 ティモシー ツァイ アメリカ合衆国,07974 ニュージャージ ー,ニュープロビデンス,サウスゲイト ロード 14,アパートメント 1エー

Claims (30)

    【特許請求の範囲】
  1. 【請求項1】 ターゲットプログラムの実行を制御する
    制御ステップと、 ターゲットプログラムの実行中にユーザ指定イベントが
    発生した場合にユーザ指定インスツルメンテーションア
    クションを実行する実行ステップとからなる、コンピュ
    ータシステムでソフトウェアインスツルメンテーション
    を提供する方法において、 前記インスツルメンテーションアクションは、ターゲッ
    トプログラムコードの修正なしに実装されることを特徴
    とするソフトウェアインスツルメンテーション方法。
  2. 【請求項2】 前記制御ステップおよび前記実行ステッ
    プは、インスツルメンテーションツールのバックエンド
    部分に実装され、 前記インスツルメンテーションツールは、ユーザがイン
    スツルメンテーションアクションおよびイベントの少な
    くとも1つを指定するユーザインタフェースを提供する
    フロントエンド部分をさらに有することを特徴とする請
    求項1に記載の方法。
  3. 【請求項3】 第1のマシン上で前記フロントエンド部
    分を実行するステップと、 前記第1のマシンとは異なる第2のマシン上で前記バッ
    クエンド部分を実行するステップとをさらに有すること
    を特徴とする請求項2に記載の方法。
  4. 【請求項4】 同じマシン上で前記フロントエンド部分
    および前記バックエンド部分を実行するステップをさら
    に有することを特徴とする請求項2に記載の方法。
  5. 【請求項5】 前記フロントエンド部分は、インスツル
    メンテーションをターゲットプログラムに提供するユー
    ザ選択可能なインスツルメンテーション機能を有する作
    成グラフィカルユーザインタフェースを有することを特
    徴とする請求項2に記載の方法。
  6. 【請求項6】 前記フロントエンド部分は、選択された
    インスツルメンテーションをターゲットプログラムに提
    供するためにユーザによって作成される作成対象グラフ
    ィカルユーザインタフェースを有することを特徴とする
    請求項2に記載の方法。
  7. 【請求項7】 前記作成グラフィカルユーザインタフェ
    ースは、ターゲットプログラムの少なくとも一部の少な
    くとも1つのソースリストと、ターゲットプログラム内
    の関数のリストと、ターゲットプログラム内のグローバ
    ル変数のリストと、ターゲットプログラム内のローカル
    変数のリストとを有することを特徴とする請求項5に記
    載の方法。
  8. 【請求項8】 前記作成グラフィカルユーザインタフェ
    ースは、前記フロントエンド部分の作成対象グラフィカ
    ルインタフェースに表示するためにターゲットプログラ
    ム内の変数をユーザが選択することを可能にし、該変数
    は、ターゲットプログラムの実行に関して前記バックエ
    ンド部分から供給される情報を用いて更新されることを
    特徴とする請求項6に記載の方法。
  9. 【請求項9】 前記バックエンド部分でデバッガプログ
    ラムを実行するステップをさらに有することを特徴とす
    る請求項2に記載の方法。
  10. 【請求項10】 前記バックエンド部分によって実行さ
    れるユーザ指定アクションの特性をモニタするための少
    なくとも1つのカウンタを前記バックエンド部分に提供
    するステップをさらに有することを特徴とする請求項2
    に記載の方法。
  11. 【請求項11】 前記実行ステップは、 (i)ターゲットプログラムの実行を変更するアクショ
    ン、 (ii)ターゲットプログラム変数の値を変更するアク
    ション、 (iii)前記フロントエンド部分へターゲットプログ
    ラムの出力を送るアクション、 (iv)少なくとも1つの追加プログラムを開始するア
    クション、 (v)ターゲットプログラムに関する与えられたイベン
    トの発生レートを計算するアクション、 (vi)ターゲットプログラムに関する与えられたイベ
    ントが発生したときに前記フロントエンド部分へメッセ
    ージを送るアクション、および、 (vii)前記第2のマシン上のオペレーティングシス
    テムリソースのセットの利用率に基づいてターゲットプ
    ログラム変数を修正するアクション、 のうちの少なくとも1つのアクションを実行するステッ
    プを有することを特徴とする請求項2に記載の方法。
  12. 【請求項12】 前記実行ステップは、 (i)あるターゲットプログラム変数の更新というトリ
    ガ、 (ii)あるターゲットプログラム命令の実行というト
    リガ、および、 (iii)あるタイマの満了というトリガ、のうちの少
    なくとも1つのトリガが発生したときにアクションを実
    行するステップを有することを特徴とする請求項1に記
    載の方法。
  13. 【請求項13】 前記実行ステップは、 (i)前記バックエンド部分から前記フロントエンド部
    分へ転送されるべきストリング、 (ii)バックエンドカウンタの値を更新するコマン
    ド、および、 (iii)ターゲットプログラムの実行を変更するコマ
    ンド、というアクション出力のうちの少なくとも1つを
    出力するステップを有することを特徴とする請求項2に
    記載の方法。
  14. 【請求項14】 前記フロントエンド部分の作成グラフ
    ィカルユーザインタフェースが前記バックエンド部分に
    対してターゲットプログラムに関する情報を要求し、前
    記バックエンド部分が、要求された情報を、前記フロン
    トエンド部分の作成対象グラフィカルユーザインタフェ
    ースに供給するインタラクティブモードで前記インスツ
    ルメンテーションツールを動作させるステップをさらに
    有することを特徴とする請求項2に記載の方法。
  15. 【請求項15】 前記フロントエンド部分の作成グラフ
    ィカルユーザインタフェースを用いて生成された、前記
    フロントエンド部分の作成対象グラフィカルユーザイン
    タフェースが、前記バックエンド部分に対してターゲッ
    トプログラムに関する情報を要求し、要求した情報を前
    記バックエンド部分から受信するスタンドアロンモード
    で前記インスツルメンテーションツールを動作させるス
    テップをさらに有することを特徴とする請求項2に記載
    の方法。
  16. 【請求項16】 ソフトウェアインスツルメンテーショ
    ンツールの少なくとも一部を実行するマシンを有する、
    コンピュータシステムでソフトウェアインスツルメンテ
    ーションを提供する装置において、 前記インスツルメンテーションツールは、ターゲットプ
    ログラムの実行を制御すること、および、ターゲットプ
    ログラムの実行中にユーザ指定イベントが発生した場合
    にユーザ指定インスツルメンテーションアクションを実
    行することが可能であり、 前記インスツルメンテーションアクションは、ターゲッ
    トプログラムコードの修正なしに実装されることを特徴
    とするソフトウェアインスツルメンテーション装置。
  17. 【請求項17】 前記ソフトウェアインスツルメンテー
    ションツールは、 動作の制御および実行を実装するバックエンド部分と、 ユーザがインスツルメンテーションアクションおよびイ
    ベントの少なくとも1つを指定するユーザインタフェー
    スを提供するフロントエンド部分とを有することを特徴
    とする請求項16に記載の装置。
  18. 【請求項18】 前記ソフトウェアインスツルメンテー
    ションツールのフロントエンド部分は第1のマシン上で
    実行され、 前記バックエンド部分は、前記第1のマシンとは異なる
    第2のマシン上で実行されることを特徴とする請求項1
    7に記載の装置。
  19. 【請求項19】 前記ソフトウェアインスツルメンテー
    ションツールのフロントエンド部分およびバックエンド
    部分は両方とも同じマシン上で実行されることを特徴と
    する請求項17に記載の装置。
  20. 【請求項20】 前記フロントエンド部分は、インスツ
    ルメンテーションをターゲットプログラムに提供するユ
    ーザ選択可能なインスツルメンテーション機能を有する
    作成グラフィカルユーザインタフェースを有することを
    特徴とする請求項17に記載の装置。
  21. 【請求項21】 前記フロントエンド部分は、選択され
    たインスツルメンテーションをターゲットプログラムに
    提供するためにユーザによって作成される作成対象グラ
    フィカルユーザインタフェースを有することを特徴とす
    る請求項17に記載の装置。
  22. 【請求項22】 前記作成グラフィカルユーザインタフ
    ェースは、ターゲットプログラムの少なくとも一部の少
    なくとも1つのソースリストと、ターゲットプログラム
    内の関数のリストと、ターゲットプログラム内のグロー
    バル変数のリストと、ターゲットプログラム内のローカ
    ル変数のリストとを有することを特徴とする請求項20
    に記載の装置。
  23. 【請求項23】 前記作成グラフィカルユーザインタフ
    ェースは、前記フロントエンド部分の作成対象グラフィ
    カルインタフェースに表示するためにターゲットプログ
    ラム内の変数をユーザが選択することを可能にし、該変
    数は、ターゲットプログラムの実行に関して前記バック
    エンド部分から供給される情報を用いて更新されること
    を特徴とする請求項21に記載の装置。
  24. 【請求項24】 前記バックエンド部分はデバッガプロ
    グラムを有することを特徴とする請求項17に記載の装
    置。
  25. 【請求項25】 前記バックエンド部分は、前記バック
    エンド部分によって実行されるユーザ指定アクションの
    特性をモニタするための少なくとも1つのカウンタを提
    供することが可能であることを特徴とする請求項17に
    記載の装置。
  26. 【請求項26】 ソフトウェアインスツルメンテーショ
    ンツールのフロントエンド部分を実行して該インスツル
    メンテーションツールに対するユーザインタフェースを
    提供するステップと、 前記フロントエンド部分によって生成される情報を用い
    て前記インスツルメンテーションツールのバックエンド
    部分を実行するステップとからなる、コンピュータシス
    テムでソフトウェアインスツルメンテーションを提供す
    る方法において、 前記バックエンド部分は、ターゲットプログラムがター
    ゲットプログラムコードの修正なしにインスツルメント
    されるようにターゲットプログラムの動作を制御するコ
    ントローラを有することを特徴とするソフトウェアイン
    スツルメンテーション方法。
  27. 【請求項27】 ソフトウェアインスツルメンテーショ
    ンツールの少なくともフロントエンド部分を実行して該
    インスツルメンテーションツールに対するユーザインタ
    フェースを提供するマシンを有する、コンピュータシス
    テムでソフトウェアインスツルメンテーションを提供す
    る装置において、 前記インスツルメンテーションツールはバックエンド部
    分をさらに有し、 前記バックエンド部分は、ターゲットプログラムがター
    ゲットプログラムコードの修正なしにインスツルメント
    されるようにターゲットプログラムの動作を制御するコ
    ントローラを有することを特徴とするソフトウェアイン
    スツルメンテーション装置。
  28. 【請求項28】 ソフトウェアインスツルメンテーショ
    ンツールの少なくともバックエンド部分を実行するマシ
    ンを有する、コンピュータシステムでソフトウェアイン
    スツルメンテーションを提供する装置において、 前記インスツルメンテーションツールのフロントエンド
    部分は、前記インスツルメンテーションツールに対する
    ユーザインタフェースを提供し、 前記バックエンド部分は、ターゲットプログラムがター
    ゲットプログラムコードの修正なしにインスツルメント
    されるようにターゲットプログラムの動作を制御するコ
    ントローラを有することを特徴とするソフトウェアイン
    スツルメンテーション装置。
  29. 【請求項29】 ターゲットプログラムの実行を制御す
    る手段と、 ターゲットプログラムの実行中にユーザ指定イベントが
    発生した場合にユーザ指定インスツルメンテーションア
    クションを実行する手段とからなる、コンピュータシス
    テムでソフトウェアインスツルメンテーションを提供す
    る装置において、 前記インスツルメンテーションアクションは、ターゲッ
    トプログラムコードの修正なしに実装されることを特徴
    とするソフトウェアインスツルメンテーション装置。
  30. 【請求項30】 マシン上で実行された場合に、 ターゲットプログラムの実行を制御するステップと、 ターゲットプログラムの実行中にユーザ指定イベントが
    発生した場合にユーザ指定インスツルメンテーションア
    クションを実行するステップと、を実行するプログラム
    を格納した、マシンが読み取り可能な媒体。
JP11170281A 1998-06-19 1999-06-16 ソフトウェアインスツルメンテ―ション方法 Pending JP2000132424A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/100,827 US6216237B1 (en) 1998-06-19 1998-06-19 Distributed indirect software instrumentation
US09/100827 1998-06-19

Publications (1)

Publication Number Publication Date
JP2000132424A true JP2000132424A (ja) 2000-05-12

Family

ID=22281734

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11170281A Pending JP2000132424A (ja) 1998-06-19 1999-06-16 ソフトウェアインスツルメンテ―ション方法

Country Status (3)

Country Link
US (1) US6216237B1 (ja)
EP (1) EP0965921A3 (ja)
JP (1) JP2000132424A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7024657B2 (en) 2000-02-21 2006-04-04 Matsushita Electric Industrial Co., Ltd. Program generation apparatus for program execution system, replaces variable name in each class file by assigned offset number so that same offset numbers are assigned to non-dependent variables with same variable name
JP2007511817A (ja) * 2003-11-05 2007-05-10 ローベルト ボッシュ ゲゼルシャフト ミット ベシュレンクテル ハフツング 駆動シーケンスを制御するための機能を適合させる方法および装置
JP2008293138A (ja) * 2007-05-22 2008-12-04 Fuji Electric Assets Management Co Ltd ソフトウェア開発支援プログラム、ソフトウェア開発支援方法
CN102646068A (zh) * 2010-04-13 2012-08-22 常州云博软件工程技术有限公司 一种软件探测器的软件探测方法
CN102662827A (zh) * 2010-04-13 2012-09-12 常州云博软件工程技术有限公司 一种软件探测方法

Families Citing this family (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030133592A1 (en) * 1996-05-07 2003-07-17 Rhoads Geoffrey B. Content objects with computer instructions steganographically encoded therein, and associated methods
US7076784B1 (en) * 1997-10-28 2006-07-11 Microsoft Corporation Software component execution management using context objects for tracking externally-defined intrinsic properties of executing software components within an execution environment
US6378124B1 (en) 1999-02-22 2002-04-23 International Business Machines Corporation Debugger thread synchronization control points
US6587967B1 (en) 1999-02-22 2003-07-01 International Business Machines Corporation Debugger thread monitor
US6434738B1 (en) * 1999-04-22 2002-08-13 David Arnow System and method for testing computer software
US6754664B1 (en) * 1999-07-02 2004-06-22 Microsoft Corporation Schema-based computer system health monitoring
US7359915B1 (en) * 1999-07-02 2008-04-15 Microsoft Corporation Dynamic multi-object collection and comparison and action
JP2001060161A (ja) * 1999-08-24 2001-03-06 Nec Ic Microcomput Syst Ltd デバッグ装置、方法及び記録媒体
US6748555B1 (en) * 1999-09-09 2004-06-08 Microsoft Corporation Object-based software management
US6839894B1 (en) 1999-11-19 2005-01-04 Oracle International Corporation Method and apparatus for debugging a software program using dynamic debug patches and copy on write views
US6671825B1 (en) * 1999-11-19 2003-12-30 Oracle International Corporation Method and apparatus for debugging a software program
US6745383B1 (en) * 1999-12-29 2004-06-01 Veritas Operating Corporation Early warning mechanism for enhancing enterprise availability
US6587125B1 (en) * 2000-04-03 2003-07-01 Appswing Ltd Remote control system
US6546359B1 (en) 2000-04-24 2003-04-08 Sun Microsystems, Inc. Method and apparatus for multiplexing hardware performance indicators
US6802057B1 (en) 2000-05-03 2004-10-05 Sun Microsystems, Inc. Automatic generation of fortran 90 interfaces to fortran 77 code
US6647546B1 (en) 2000-05-03 2003-11-11 Sun Microsystems, Inc. Avoiding gather and scatter when calling Fortran 77 code from Fortran 90 code
US7747486B1 (en) * 2000-05-08 2010-06-29 James Kemp Smith Financial analysis system interface
US6598181B1 (en) * 2000-07-11 2003-07-22 Microsoft Corporation Method and system for debugging multiple function calls
US20030120979A1 (en) * 2000-09-19 2003-06-26 Kuo-Chun Lee Method and apparatus for remotely debugging an application program
US20050144507A1 (en) * 2000-09-19 2005-06-30 Kuo-Chun Lee Method and apparatus for remotely debugging an application program over the internet
US20020156881A1 (en) * 2000-10-03 2002-10-24 Klopp Lemon Ana H. Von HTTP transaction monitor with replay capacity
AU2001296671A1 (en) * 2000-10-06 2002-04-15 Sun Microsystems, Inc. Breakpointing a process based on a defined parameter
US6968540B2 (en) * 2000-10-25 2005-11-22 Opnet Technologies Inc. Software instrumentation method and apparatus
US20020059377A1 (en) * 2000-11-14 2002-05-16 Jagadish Bandhole Collaborative computing systems using dynamic computing environments
JP2002202899A (ja) * 2000-12-28 2002-07-19 Toshiba Corp デバッガの機能拡張方法、デバッグシステム及びデバッガプログラムを記録した記録媒体
US6820215B2 (en) * 2000-12-28 2004-11-16 International Business Machines Corporation System and method for performing automatic rejuvenation at the optimal time based on work load history in a distributed data processing environment
US7904358B2 (en) * 2001-02-28 2011-03-08 Goldman Sachs & Co. Computerized interface for monitoring financial information and executing financial transactions
US6918110B2 (en) * 2001-04-11 2005-07-12 Hewlett-Packard Development Company, L.P. Dynamic instrumentation of an executable program by means of causing a breakpoint at the entry point of a function and providing instrumentation code
US20040205720A1 (en) * 2001-04-30 2004-10-14 Robert Hundt Augmenting debuggers
DE10142511B4 (de) * 2001-08-30 2004-04-29 Daimlerchrysler Ag Fehlerbehandlung von Softwaremodulen
US20030055593A1 (en) * 2001-09-18 2003-03-20 Schlotzhauer Ed O. Method for user variation of a measurement process
US6876996B2 (en) * 2001-11-14 2005-04-05 Sun Microsystems, Inc. Method and apparatus for using a shared library mechanism to facilitate sharing of metadata
US7055140B2 (en) * 2002-05-01 2006-05-30 Seiko Epson Corporation Software breakpoints implementation via specially named function
US6986076B1 (en) * 2002-05-28 2006-01-10 Unisys Corporation Proactive method for ensuring availability in a clustered system
US7689680B1 (en) 2002-06-19 2010-03-30 Red Hat, Inc. Method of modifying a checksuite
EP1378835B1 (en) * 2002-07-04 2015-12-30 Sap Se Process and system for comfortable debugging of computer programs
EP1378832A1 (en) * 2002-07-04 2004-01-07 Sap Ag Process and system for comfortable debugging of computer programs
US6792460B2 (en) * 2002-10-02 2004-09-14 Mercury Interactive Corporation System and methods for monitoring application server performance
US8190780B2 (en) * 2003-12-30 2012-05-29 Sap Ag Cluster architecture having a star topology with centralized services
US8196044B2 (en) * 2004-01-05 2012-06-05 Microsoft Corporation Configuration of user interfaces
US7216257B2 (en) 2004-01-21 2007-05-08 Sap Ag Remote debugging
US7398433B2 (en) 2004-03-31 2008-07-08 Microsoft Corporation System and method of preventing a web browser plug-in module from generating a failure
US7379947B2 (en) 2004-07-30 2008-05-27 Microsoft Corporation Efficiently ranking web pages via matrix index manipulation and improved caching
US7779302B2 (en) * 2004-08-10 2010-08-17 International Business Machines Corporation Automated testing framework for event-driven systems
US7593944B2 (en) * 2004-08-17 2009-09-22 National Instruments Corporation Variable abstraction
US8055952B2 (en) * 2004-11-16 2011-11-08 Siemens Medical Solutions Usa, Inc. Dynamic tuning of a software rejuvenation method using a customer affecting performance metric
US7484128B2 (en) * 2005-01-11 2009-01-27 Siemens Corporate Research, Inc. Inducing diversity in replicated systems with software rejuvenation
US7634687B2 (en) * 2005-01-13 2009-12-15 Microsoft Corporation Checkpoint restart system and method
FR2890199B1 (fr) * 2005-08-26 2007-11-09 Thales Sa Procede et dispositif de test et de mise au point de calculateur numerique embarque
US7324922B2 (en) * 2005-10-26 2008-01-29 International Business Machines Corporation Run-time performance verification system
US7657793B2 (en) * 2006-04-21 2010-02-02 Siemens Corporation Accelerating software rejuvenation by communicating rejuvenation events
US20070261032A1 (en) * 2006-05-05 2007-11-08 Chen Wen-Tzer T Method and apparatus for hardware assisted profiling of code
US20070260849A1 (en) * 2006-05-05 2007-11-08 Chen Wen-Tzer T Method and apparatus for executing instrumentation code using a target processor
US8245199B2 (en) * 2006-05-05 2012-08-14 International Business Machines Corporation Selectively marking and executing instrumentation code
US7814466B2 (en) * 2006-05-05 2010-10-12 International Business Machines Corporation Method and apparatus for graphically marking instructions for instrumentation with hardware assistance
US7865703B2 (en) * 2006-05-05 2011-01-04 International Business Machines Corporation Method and apparatus for executing instrumentation code within alternative processor resources
US7783866B2 (en) * 2006-05-05 2010-08-24 International Business Machines Corporation Method and apparatus for executing instrumentation code using processor instructions
US8555257B2 (en) * 2006-11-20 2013-10-08 Wind River Systems, Inc. System and method for networked software development
US7739551B2 (en) 2007-06-20 2010-06-15 Microsoft Corporation Web page error reporting
US8745597B2 (en) * 2009-11-25 2014-06-03 International Business Machines Corporation Providing programming support to debuggers
US8978018B2 (en) 2010-12-02 2015-03-10 International Business Machines Corporation Reversibly instrumenting a computer software application
US9654607B2 (en) * 2011-03-04 2017-05-16 Lenovo (Beijing) Co., Ltd. Method and apparatus for generating application icon
US9471315B2 (en) 2012-03-16 2016-10-18 International Business Machines Corporation Run-time instrumentation reporting
US9442824B2 (en) 2012-03-16 2016-09-13 International Business Machines Corporation Transformation of a program-event-recording event into a run-time instrumentation event
US9405541B2 (en) 2012-03-16 2016-08-02 International Business Machines Corporation Run-time instrumentation indirect sampling by address
US9250902B2 (en) 2012-03-16 2016-02-02 International Business Machines Corporation Determining the status of run-time-instrumentation controls
US9411591B2 (en) 2012-03-16 2016-08-09 International Business Machines Corporation Run-time instrumentation sampling in transactional-execution mode
US9483268B2 (en) 2012-03-16 2016-11-01 International Business Machines Corporation Hardware based run-time instrumentation facility for managed run-times
US9280447B2 (en) 2012-03-16 2016-03-08 International Business Machines Corporation Modifying run-time-instrumentation controls from a lesser-privileged state
US9465716B2 (en) 2012-03-16 2016-10-11 International Business Machines Corporation Run-time instrumentation directed sampling
US9158660B2 (en) 2012-03-16 2015-10-13 International Business Machines Corporation Controlling operation of a run-time instrumentation facility
US9367316B2 (en) 2012-03-16 2016-06-14 International Business Machines Corporation Run-time instrumentation indirect sampling by instruction operation code
US9430238B2 (en) 2012-03-16 2016-08-30 International Business Machines Corporation Run-time-instrumentation controls emit instruction
US9454462B2 (en) 2012-03-16 2016-09-27 International Business Machines Corporation Run-time instrumentation monitoring for processor characteristic changes
US8881125B2 (en) 2012-06-11 2014-11-04 International Business Machines Corporation Indirect software performance analysis
KR101438979B1 (ko) * 2012-12-31 2014-09-11 현대자동차주식회사 소프트웨어 검사 방법 및 시스템
US10269029B1 (en) 2013-06-25 2019-04-23 Amazon Technologies, Inc. Application monetization based on application and lifestyle fingerprinting
US20150082286A1 (en) * 2013-09-18 2015-03-19 Microsoft Corporation Real-time code instrumentation
KR101548228B1 (ko) * 2013-12-27 2015-08-28 주식회사 케이티 사용자 상태에 기반하여 사용자 인터페이스를 동기화하는 동기화 기기 및 동기화 방법
JP2015141539A (ja) * 2014-01-28 2015-08-03 株式会社東芝 故障注入プログラム
KR20160000758A (ko) * 2014-06-25 2016-01-05 주식회사 알티베이스 품질테스트장치 및 방법
CN107977307B (zh) * 2016-10-25 2021-02-09 腾讯科技(深圳)有限公司 一种应用的调试方法及装置
CN108829591B (zh) * 2018-05-31 2021-05-04 北京理工大学 一种基于Web的协同调试系统及方法
US10986013B1 (en) 2019-09-26 2021-04-20 Amazon Technologies, Inc. Fault injection service
US11698829B2 (en) * 2021-08-13 2023-07-11 Kyndryl Inc. Identifying root causes of software defects

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57155651A (en) * 1981-03-19 1982-09-25 Mitsubishi Electric Corp Program debug device
JPS60252965A (ja) * 1984-05-29 1985-12-13 Nec Corp 事象累積装置
JPS61211746A (ja) * 1985-03-18 1986-09-19 Fujitsu Ltd プログラム実行制御方式
JPS63177231A (ja) * 1987-01-17 1988-07-21 Nippon Telegr & Teleph Corp <Ntt> 並列プログラムデバグ方式
JPH01211136A (ja) * 1988-02-19 1989-08-24 Mitsubishi Electric Corp プログラムデバッグ方式
JPH02272645A (ja) * 1989-04-14 1990-11-07 Hitachi Ltd プログラム・デバツグ支援方法
JPH0520122A (ja) * 1991-07-12 1993-01-29 Nippon Telegr & Teleph Corp <Ntt> リモートデバツグ方法
JPH05313941A (ja) * 1992-05-11 1993-11-26 Meidensha Corp コンピュータプログラムのデバッグ方法
JPH0635749A (ja) * 1992-07-15 1994-02-10 Nec Eng Ltd データ処理システム
JPH06149623A (ja) * 1992-11-11 1994-05-31 Nec Corp 情報処理装置の運用管理システム
JPH07191881A (ja) * 1993-12-27 1995-07-28 Nec Corp 実時間メモリ監視方式
JPH0830485A (ja) * 1994-07-20 1996-02-02 Chugoku Nippon Denki Software Kk デバッグ装置
JPH08171498A (ja) * 1994-12-16 1996-07-02 Nec Corp マルチコンピュータデバッガ方式及びそれを適用したマルチコンピュータシステム
JPH08185340A (ja) * 1994-12-27 1996-07-16 Toshiba Corp 並列プログラムデバッグ方法および並列プログラム可視化装置
JPH08241201A (ja) * 1994-11-14 1996-09-17 Sun Microsyst Inc 制御可能オブジェクトを使用するターゲット・アプリケーションの関数制御のためのシステム
JPH10501907A (ja) * 1994-04-05 1998-02-17 インテル・コーポレーション ネットワーク内でプログラムを監視し、制御する方法および装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5465258A (en) * 1989-11-13 1995-11-07 Integrity Systems, Inc. Binary image performance evaluation tool
JPH07113912B2 (ja) * 1991-05-31 1995-12-06 富士ゼロックス株式会社 分散型情報処理システムのデバッグ方式
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
US5539907A (en) * 1994-03-01 1996-07-23 Digital Equipment Corporation System for monitoring computer system performance
CA2143145C (en) * 1994-04-18 1999-12-28 Premkumar Thomas Devanbu Determining dynamic properties of programs
US5790858A (en) * 1994-06-30 1998-08-04 Microsoft Corporation Method and system for selecting instrumentation points in a computer program
US5872913A (en) * 1997-03-07 1999-02-16 International Business Machines Corporation System and method for low overhead, high precision performance measurements using state transistions
US5960198A (en) * 1997-03-19 1999-09-28 International Business Machines Corporation Software profiler with runtime control to enable and disable instrumented executable
US6079032A (en) * 1998-05-19 2000-06-20 Lucent Technologies, Inc. Performance analysis of computer systems

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57155651A (en) * 1981-03-19 1982-09-25 Mitsubishi Electric Corp Program debug device
JPS60252965A (ja) * 1984-05-29 1985-12-13 Nec Corp 事象累積装置
JPS61211746A (ja) * 1985-03-18 1986-09-19 Fujitsu Ltd プログラム実行制御方式
JPS63177231A (ja) * 1987-01-17 1988-07-21 Nippon Telegr & Teleph Corp <Ntt> 並列プログラムデバグ方式
JPH01211136A (ja) * 1988-02-19 1989-08-24 Mitsubishi Electric Corp プログラムデバッグ方式
JPH02272645A (ja) * 1989-04-14 1990-11-07 Hitachi Ltd プログラム・デバツグ支援方法
JPH0520122A (ja) * 1991-07-12 1993-01-29 Nippon Telegr & Teleph Corp <Ntt> リモートデバツグ方法
JPH05313941A (ja) * 1992-05-11 1993-11-26 Meidensha Corp コンピュータプログラムのデバッグ方法
JPH0635749A (ja) * 1992-07-15 1994-02-10 Nec Eng Ltd データ処理システム
JPH06149623A (ja) * 1992-11-11 1994-05-31 Nec Corp 情報処理装置の運用管理システム
JPH07191881A (ja) * 1993-12-27 1995-07-28 Nec Corp 実時間メモリ監視方式
JPH10501907A (ja) * 1994-04-05 1998-02-17 インテル・コーポレーション ネットワーク内でプログラムを監視し、制御する方法および装置
JPH0830485A (ja) * 1994-07-20 1996-02-02 Chugoku Nippon Denki Software Kk デバッグ装置
JPH08241201A (ja) * 1994-11-14 1996-09-17 Sun Microsyst Inc 制御可能オブジェクトを使用するターゲット・アプリケーションの関数制御のためのシステム
JPH08171498A (ja) * 1994-12-16 1996-07-02 Nec Corp マルチコンピュータデバッガ方式及びそれを適用したマルチコンピュータシステム
JPH08185340A (ja) * 1994-12-27 1996-07-16 Toshiba Corp 並列プログラムデバッグ方法および並列プログラム可視化装置

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7024657B2 (en) 2000-02-21 2006-04-04 Matsushita Electric Industrial Co., Ltd. Program generation apparatus for program execution system, replaces variable name in each class file by assigned offset number so that same offset numbers are assigned to non-dependent variables with same variable name
JP2007511817A (ja) * 2003-11-05 2007-05-10 ローベルト ボッシュ ゲゼルシャフト ミット ベシュレンクテル ハフツング 駆動シーケンスを制御するための機能を適合させる方法および装置
JP2008293138A (ja) * 2007-05-22 2008-12-04 Fuji Electric Assets Management Co Ltd ソフトウェア開発支援プログラム、ソフトウェア開発支援方法
CN102646068A (zh) * 2010-04-13 2012-08-22 常州云博软件工程技术有限公司 一种软件探测器的软件探测方法
CN102662827A (zh) * 2010-04-13 2012-09-12 常州云博软件工程技术有限公司 一种软件探测方法
CN102646068B (zh) * 2010-04-13 2015-01-07 江苏理工学院 一种软件探测器的软件探测方法
CN102662827B (zh) * 2010-04-13 2015-02-04 张溟 一种软件探测方法

Also Published As

Publication number Publication date
EP0965921A3 (en) 2002-03-06
EP0965921A2 (en) 1999-12-22
US6216237B1 (en) 2001-04-10

Similar Documents

Publication Publication Date Title
JP2000132424A (ja) ソフトウェアインスツルメンテ―ション方法
US8572577B2 (en) Monitoring changes to data within a critical section of a threaded program
EP0965922B1 (en) Fault tolerance via N-modular software redundancy using indirect instrumentation
US7721265B1 (en) Source code debugging method and apparatus for use in script testing environment
JP2749528B2 (ja) エラー解析用のトレーサシステム
US5680542A (en) Method and apparatus for synchronizing data in a host memory with data in target MCU memory
US7415699B2 (en) Method and apparatus for controlling execution of a child process generated by a modified parent process
US6634001B2 (en) Remote monitoring of computer programs
US7926042B2 (en) System and method for dynamic instrumentation
US9146831B2 (en) Sampling based runtime optimizer for efficient debugging of applications
US20050289396A1 (en) Conditional breakpoint using breakpoint function and breakpoint command
US8336032B2 (en) Implementing enhanced template debug
US7900198B2 (en) Method and system for parameter profile compiling
US20080295114A1 (en) Method and apparatus for execution control of computer programs
US20070074168A1 (en) Automated step type determination
US7178135B2 (en) Scope-based breakpoint selection and operation
CA2420479A1 (en) Flow debugging software and method
US20060253840A1 (en) Program verification and visualization using a dynamic abstracted conceptual model
JP2004505333A (ja) 通信サービスのプロビジョニング方法及び装置、及びプロビジョニング・モデルを開発するためのオブジェクト・プログラミング言語
US20040006760A1 (en) Generating and using profile information automatically in an integrated development environment
US20080127119A1 (en) Method and system for dynamic debugging of software
US20080127061A1 (en) Method and system for editing code
JP2003501743A (ja) 同種のシステム間におけるプロトコル応答
Pazandak et al. Distributed runtime software instrumentation
Huselius et al. Starting conditions for post-mortem debugging using deterministic replay of real-time systems

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040405

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20041104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050513

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20050518

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20050819

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090518

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090525