(57)【特許請求の範囲】
【請求項１】
処理環境のトレースのハンドルを定義する方法であって、
前記トレースの少なくとも一部を取得するステップと、
前記トレースの内容に基づいてキーを生成するステップとを有し、
前記キーは、前記トレースのハンドルであり、前記ハンドルは、前記トレースがメモリ内のどこに存在するかにかかわらず、前記トレースに関連するアプリケーションの複数実行にまたがって前記トレースを識別する、
方法。
【請求項２】
前記アプリケーションは、前記処理環境のエミュレータから成る、
請求項１に記載の方法。
【請求項３】
前記生成するステップは、前記キーを生成するべく、ハッシュ・コード機能を使用するステップを含む、
請求項１に記載の方法。
【請求項４】
前記生成するステップは、
エンコーダによって、前記トレースを定義している命令シーケンスを取得するステップと、
前記エンコーダによって、前記キーをもたらすべく、前記命令シーケンスの１つ以上の命令の少なくとも一部をエンコードするステップと、を含む、
請求項１に記載の方法。
【請求項５】
前記トレースに関連するアプリケーションの１つ以上の後続する実行において前記トレースを識別するべく、前記ハンドルを用いるステップをさらに有し、
前記用いるステップが、
前記アプリケーションを１回以上実行することによってもたらされた１つ以上のトレースに対して生成された１つ以上の生成ハンドルから、或る生成ハンドルを選択するステップと、
前記生成ハンドルと前記ハンドルとを比較するステップとを含み、
前記生成ハンドルと前記ハンドルとの一致が前記トレースを識別する、
請求項１に記載の方法。
【請求項６】
請求項１乃至５のいずれかに記載の方法のステップを全て実行するようになっている手段を備える、
システム。
【請求項７】
請求項１乃至５のいずれかに記載の方法のステップを全てコンピュータに実行させるための、
コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理環境内で実施されるトレーシングに係り、さらに詳細に説明すれば、トレーシングによって生成されるトレースのハンドル（以下「トレース・ハンドル」または単に「ハンドル」とも称する）を定義することに係る。
【背景技術】
【０００２】
処理環境内でトレーシングが実施されるとき、１つ以上のトレースが生成される。各トレースは、連続的に実行される１つ以上の命令を含む。トレースに含まれている命令は、トレーシング機能の始動時と停止時の間に実行される命令である。シンボル／モジュール・ベースの技術およびトレースベースの技術を含む、様々なタイプのトレーシング技術が存在する。トレースベースの技術は、シンボル／モジュール・ベースの技術とは異なり、プログラム・モジュールの境界と無関係（独立）に定義される。トレースベースの技術によって生成されるシーケンスは、従来のシンボル／モジュール・ベースの方法に優る重要な利点を提供する。というのは、実際のプログラム・フローが、本質的に、命令シーケンスで表されるからである。トレースベースの技術を用いると、オプティマイザの適用範囲が、よりグローバルな可能性を提供するように拡張される。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】>"z/Architecture Principles of
Operation," IBM Publication No. SA22-7832-04, September 2005
【非特許文献２】Suganama, T., et al.,
"Overview of the IBM Java Just-In-Time Compiler," IBM Systems
Journal, vol. 39, No. 1, 2000, 15 pages
(http://www.research,ibm.com/journal/sj/391/suganuma.html)
【非特許文献３】Tang, V., et al., "A Framework For
Reducing Instruction Scheduling Overhead In Dynamic Compilers,"
Proceedings of the 2006 Conference of the Center for Advanced Studies on
Collaborative Research, Article 5, 2006, pp. 1-13
【非特許文献４】Suganuma, T., et al., "A Dynamic Optimization Framework For A Java
Just-In-Time Compiler," ACM Sigplan, vol. 36,
Issue 11, Nov. 2001, pp. 180-194
【非特許文献５】Waldspurger, Carl A., "Memory Resource Management in VMware ESX
Server," In Proc. Fifth Symposium on Operant System Design and
Implementation (OSDI '02), Dec. 2002, pp. 1-14
【非特許文献６】Rivest, R., "The MD5 Message-Digest Algorithm," Apr. 1992,
http://www.ietf.org/rfc/rfc1321.txt, pp. 1-20
【発明の概要】
【発明が解決しようとする課題】
【０００４】
トレースは、処理環境の最適化をもたらすのに有用ではあるが、各トレース用の個別のハンドルを生成することは、本質的に困難である。一般に、トレースを識別するのに使用されるハンドルを生成するためには、メモリ位置に関する情報が使用されるのであるが、このことは、メモリ位置が動的である場合には問題となる。
【課題を解決するための手段】
【０００５】
前述のことから、トレースを識別するための強化された機能が必要とされている。特に、或るトレースがメモリ内のどこに存在するかにかかわらず、そのトレースを識別するハンドルを生成するための機能が必要とされている。
【０００６】
請求項１に記載される方法の提供により、従来技術の欠点が克服され、さらに追加的な利点がもたらされる。
【０００７】
本発明は、さらに、対応するシステムおよびコンピュータ・プログラムをも提供する。
【０００８】
本発明の技術により、さらなる特徴および利点が実現される。本発明のその他の実施形態および側面は、本明細書において詳細に記載され、請求項に記載される本発明の一部とみなされる。
【０００９】
本発明の１つ以上の側面は、請求項において特定され且つ明確に記載されている。本発明の前記およびその他の目的、特徴、および利点は、添付の図面を参照してなされる以下の詳細な説明から明らかになる。
【発明の効果】
【００１０】
本発明は、トレースがメモリ内のどこに存在するかにかかわらず、トレースの内容に基づいて、一意的なトレース・ハンドルを生成することができるという効果を奏する。これにより、トレースが定義される対象であるアプリケーションの複数実行にまたがって、ハンドルをうまく使用することができるようになる。
【図面の簡単な説明】
【００１１】
【図１】本発明の１つ以上の側面を実装し使用する処理環境の一実施形態を示す図である。
【図２】本発明の１つ以上の側面に従った、図１のメモリの一実施形態のさらなる詳細を示す図である。
【図３】本発明の一側面に従った、図２のエミュレータのジャスト−イン−タイム・コンパイラの一実施形態のさらなる詳細を示す図である。
【図４】本発明の一側面に従った、トレース・ハンドルを定義することに関連する論理の一実施形態を示す図である。
【図５】本発明の一側面に従った、トレース・ハンドルを使用することに関連する論理の一実施形態を示す図である。
【図６】本発明の１つ以上の側面を実装するコンピュータ・プログラム製品の一実施形態を示す図である。
【発明を実施するための形態】
【００１２】
本発明の一側面に従って、メモリと無関係なトレース・ハンドルを定義するための機能が提供される。具体的には、或るトレースについて、そのトレース・ハンドルが、当該トレースが存在するメモリ内の位置に依存することなく定義される。代わりに、ハンドルは、トレースの内容に基づいている。これにより、トレースが定義される対象であるアプリケーションの複数実行にまたがって、ハンドルをうまく使用することができるようになる。
【００１３】
一例では、アプリケーションは、エミュレータである。エミュレータは、エミュレートされている命令をトレースするトレーシング機能（例えば、記録ルーチン）を含む。当該トレーシング機能は、最初にエミュレータが始動されるとオンになり、分岐のような所定のポイントでオフになる。前述の期間中に実行された一組の命令を、トレースと称する。この分岐では、別のトレースが始動されて他の一組の命令の収集などが行われてもよい。エミュレータの実行中は、１つ以上のトレースが得られる。或るトレースの命令シーケンスには、複数のユーザ・アプリケーションおよびオペレーション・システムにまたがる命令のほか、トレースされているアプリケーションと通信するコードによる命令のような、異なるコード境界にまたがる命令が含まれる。
【００１４】
本発明の１つ以上の側面が実装され使用される処理環境の一実施形態を、図１を参照して説明する。この例では、処理環境１００は、ネイティブ・アーキテクチャとも称する１つのアーキテクチャに基づいているが、ゲスト・アーキテクチャとも称する別のアーキテクチャをエミュレートする。例えば、ネイティブ・アーキテクチャは、インターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるＰｏｗｅｒ４もしくはＰｏｗｅｒＰＣ（ＩＢＭ Corporation の登録商標）アーキテクチャ、またはインテル・コーポレーションによって提供されるＩｎｔｅｌ（登録商標）アーキテクチャである。ゲスト・アーキテクチャは、同じくインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ Corporation の登録商標）である。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅは、非特許文献１に記載されている。
【００１５】
処理環境１００には、ネイティブＣＰＵ１０２、メモリ１０４および１つ以上の入力／出力（Ｉ／Ｏ）デバイス１０６が含まれており、これらは１つ以上のバス１０８を介して、互いに接続されている。ネイティブＣＰＵ１０２は、例えば、インターナショナル・ビジネス・マシーンズ・コーポレーションが提供するｐＳｅｒｉｅｓ（ＩＢＭ Corporation の登録商標）サーバの一部である。
【００１６】
ネイティブＣＰＵ１０２は、１つ以上の汎用レジスタおよび／または１つ以上の専用レジスタのような、環境内で処理中に使用される１つ以上のネイティブ・レジスタ１１０を含む。これらのレジスタには、或る特定の時点における環境の状態を表す情報が含まれる。
【００１７】
さらに、ネイティブＣＰＵ１０２は、メモリ１０４内に格納されている命令およびコードを実行する。特定の一例では、ネイティブＣＰＵ１０２は、メモリ１０４内に格納されたエミュレータ・コード１１２を実行する。エミュレータ・コード１１２は、１つのアーキテクチャで構成された処理環境が別のアーキテクチャをエミュレートすることを可能にする。例えば、エミュレータ・コード１１２は、ｐＳｅｒｉｅｓサーバのような、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ以外のアーキテクチャに基づいているマシンが、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅをエミュレートしてｚ／Ａｒｃｈｉｔｅｃｔｕｒｅに基づいて開発されたソフトウェアおよび命令を実行することを可能にする。
【００１８】
エミュレータ・コード１１２（以下単に「エミュレータ」とも称する）に関するさらなる詳細を、図２を参照して説明する。一例では、エミュレータ・コード１１２には、メモリ１０４から１つ以上のゲスト命令を取得し、さらに必要に応じて１つ以上の取得された命令のローカル・バッファリングを提供する、命令フェッチ・ルーチン２００が含まれる。ゲスト命令２０２は、ネイティブＣＰＵ１０２のアーキテクチャとは異なるアーキテクチャで実行されるように開発されたソフトウェア命令（例えば、マシン命令）を含む。例えば、ゲスト命令２０２は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅプロセッサ上で実行されるように設計されたものとすればよいが、これらの命令は、ｐＳｅｒｉｅｓサーバのような、ネイティブＣＰＵ１０２上でエミュレートされる。
【００１９】
エミュレータ１１２には、さらに、取得されたゲスト命令のタイプを決定し、当該ゲスト命令を１つ以上の対応するネイティブ命令２０８へ変換する、命令変換ルーチン２０４が含まれる。この変換には、例えば、ゲスト命令によって実行されるべき機能を識別すること、およびその機能を実行すべきネイティブ命令を選択することが含まれる。
【００２０】
さらに、エミュレータ１１２には、ネイティブ命令を実行させる、エミュレーション制御ルーチン２０６が含まれる。エミュレーション制御ルーチン２０６は、ネイティブＣＰＵ１０２に、以前に取得された１つ以上のゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、かかる実行の終わりには、次の１つ以上のゲスト命令の取得をエミュレートするべく命令フェッチ・ルーチン２００へ制御を返させる。ネイティブ命令２０８の実行には、変換ルーチン２０４によって指定されたように、データをメモリ１０４からレジスタへロードすること、データをレジスタからメモリ１０４へ書き戻すこと、あるいは特定のタイプの算術的または論理的動作を実施することが含まれる。
【００２１】
各ルーチンは、例えば、メモリに格納され且つネイティブＣＰＵ１０２によって実行されるソフトウェアとして実装される。別の例では、１つ以上のルーチンまたは動作が、ファームウェア、ハードウェア、ソフトウェアあるいはこれらの特定の組み合わせで実装される。エミュレートされるゲスト・プロセッサのレジスタは、ネイティブＣＰＵ１０２のレジスタ１１０を用いてエミュレートされてもよいし、またはメモリ１０４内の位置を使用することによってエミュレートされてもよい。１つ以上の実施形態では、ゲスト命令２０２、ネイティブ命令２０８、およびエミュレーション・コード１１２は、同一のメモリ内に存在してもよいし、あるいは別々のメモリ・デバイスに分散配置してもよい。
【００２２】
一実施形態では、さらに、命令フェッチ・ルーチン２００およびエミュレーション制御ルーチン２０６によって処理された命令の蓄積が、ジャスト−イン−タイム・コンパイラ２１０へ提供される。ジャスト−イン−タイム・コンパイラ２１０は、命令を調べ、冗長性を排除する機会を探し、さらにエミュレータ１１２が動作しているネイティブ・プラットフォーム上で命令の一致シーケンスを生成する、動的なコンパイラである。エミュレータ１１２が一度に１つの命令に対する可視性を有するのに対し、ジャスト−イン−タイム・コンパイラ２１０は、命令シーケンスに対する可視性を有する。命令シーケンスに対する可視性を有するということから、ジャスト−イン−タイム・コンパイラ２１０は、当該命令シーケンスにおける冗長性の探索を試み、これを排除することができる。ジャスト−イン−タイム・コンパイラ２１０の一例は、インターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるＪＡＶＡ（登録商標）ジャスト−イン−タイム（ＪＩＴ）コンパイラである。
【００２３】
ＪＡＶＡジャスト−イン−タイム・コンパイラの概要は、非特許文献２に記載されている。さらにジャスト−イン−タイム・コンパイラの側面は、例えば、非特許文献３、非特許文献４、非特許文献５にも記載されている。
【００２４】
ジャスト−イン−タイム・コンパイラ２１０は、さらに、エミュレータ１１２によってもたらされるトレースの、メモリと無関係なトレース・ハンドルを提供するための機能をも含む。例えば、エミュレータ１１２は、記録ルーチンを用いて、連続的に実行される一組の命令を追跡する。この一組の命令（すなわち、トレース）はジャスト−イン−タイム・コンパイラ２１０へ転送され、そしてジャスト−イン−タイム・コンパイラ２１０は、当該トレースのハンドルを生成する。このハンドルは、メモリ位置ではなく、当該トレースの内容に基づいている。ジャスト−イン−タイム・コンパイラ２１０のこの特徴を、図３を参照して説明する。
【００２５】
図３を参照すると、ジャスト−イン−タイム・コンパイラ３００には、ハッシュ・エンコーダのようなエンコーダ３０２が含まれ、当該エンコーダは、命令トレース３０４を入力として取得し（例えば、受信したり、保持したり、フェッチしたり、提供されたりなど）、出力としてｎビットのキー３０６を提供する。このキー３０６は、例えば、当該トレースのハンドルとして使用される１２８ビットのハッシュ・コードである。このハンドルは、命令トレース３０４の内容に基づいており、当該トレースのメモリ内の位置には依存していない。従って、当該トレース・ハンドルは、メモリと無関係である。
【００２６】
トレース・ハンドルの生成に関するさらなる詳細を、図４を参照して説明する。一実施形態では、処理環境内でトレーシングが開始され（例えば、エミュレータ１１２がトレースされる）、命令シーケンスを含むトレースが生成される。この命令シーケンス（別の実施形態では、トレースまたはその一部）が、エンコーダ３０２へ入力される（ステップ４００）。本例では、エンコーダ３０２は、入力されたトレースに対するハッシュ・エンコーディングを実施する（ステップ４０２）。一例では、使用されるハッシュ・コード機能はＭＤ５である。ＭＤ５の実施形態は、非特許文献６に記載されている。一例としてＭＤ５を提示するが、その他の多数のハッシュ技術を用いることが可能である。どのハッシュ技術を選ぶかによって、２つの別個のトレースが結果的に同一のキーとなってしまう確率が決まる。しかし、ＭＤ５のようなアルゴリズムでは、その確率は兆候を示さないほど小さく、従って、この機能は、ジャスト−イン−タイム・コンパイラのような動的コンパイラでの使用に適する。
【００２７】
ハッシュ・エンコーディングの出力はキーである（ステップ４０４）。この特定の実施形態では、キーは、当該トレースの識別子（すなわち、ハンドル）である、１２８ビットのハッシュ・コードである。本例では、当該ハンドルは１２８ビットであるが、別の実施形態では、当該ハンドルを別の長さにすることができる。
【００２８】
トレース・ハンドルとして生成され且つ使用されるキーは、メモリ位置に基づいておらず、代わりにトレースの内容に基づいている。例えば、エンコーダ３０２は、トレースの各命令（または選択された命令群）の１つ以上のビットを選択し、これらの選択されたビットをエンコードしてｎビットのキーを生成する。このｎビットのキーが、ハンドルとして使用される。このハンドルは、メモリ位置に基づいていないので、このハンドルは、トレースがメモリ内のどこに存在するかにかかわらず、アプリケーションの複数実行にまたがって、同一のトレースを識別する。
【００２９】
一例では、生成されたトレース・ハンドルは、アプリケーション（例えば、エミュレータ１１２）の後続する実行の間、トレースを監視するのに用いられる。例えば、或るトレースの特定インスタンスであるｍｙ＿Ｔが、監視対象であると仮定する。このトレースがエンコードされて、ハンドルｍｙ＿ｈ＿ｔが生成される。その後、アプリケーションが１回以上再実行され、その結果、１つ以上のトレースが生成される。これらのトレースに対しハンドル群が生成され、次いでｍｙ＿ｈ＿ｔと一致するハンドルを探し出すべく、それらのハンドル群の中の検索が実施される。一致したハンドルは、特定のトレースを識別する。このことを、図５を参照してさらに詳細に説明する。
【００３０】
図５を参照すると、この例では、エミュレータ１１２が１回以上再始動されることを仮定している。例えば、エミュレータ１１２が始動され、１つ以上のトレースが生成されてから、問題が検出される。その後、エミュレータ１１２が再始動される。これは１回以上行われ、エミュレータ１１２の各実行（例えば、Ｔ０、Ｔ１、Ｔ２）ごとに１つ以上のトレースが生成される（ステップ５００）。各トレースのハンドルが生成されるように、各トレースがエンコードされる（ステップ５０２）。例えば、エミュレータ１１２が、ハッシュ関数Ｈを使用して各トレースをエンコードすると、例として以下が得られる。
Ｈ（Ｔ０）＝ｈ＿ｔ０
Ｈ（Ｔ１）＝ｈ＿ｔ１
・・・
Ｈ（Ｔｎ）＝ｈ＿ｔｎ
本例では、エミュレータ１１２は、ｍｙ＿ｈ＿ｔによって識別されるトレースに対し、監視可能なハンドルを提供するよう指示されている。例えば、ｍｙ＿ｈ＿ｔによって識別される命令シーケンスが、問題の原因または関心の対象であると考えられる。このため、そのトレースの位置を突き止めなければならない。そのトレースのメモリ位置は不明であるため、トレースの検索が実施される。この検索を実施するのに、トレースの命令群の代わりに、トレースのハンドルが使用される。
【００３１】
一例では、検索の実施に当たり、アプリケーションの１つ以上の実行の間に生成された或るハンドルが、ジャスト−イン−タイム・コンパイラ２１０によって選択され（ステップ５０４）、所与のハンドル（例えば、ｍｙ＿ｈ＿ｔ）と比較される（ステップ５０６）。もし、これらのハンドルが同一でなければ（ステップ５０８）、比較されるべきその他のハンドルがあるか否かが決定される（ステップ５１０）。そうであれば、ステップ５０４の処理を継続する。さもなければ、処理を終了する（ステップ５１２）。
【００３２】
ステップ５０８に戻って説明を続ける。もし、比較の結果、一致が得られれば、関心の対象である特定のトレースが識別される（ステップ５１４）。一旦命令シーケンスが見つかると、それを、所望するあらゆるやり方で使用することが可能である。例えば、そのトレースのジャスト−イン−タイム・コンパイラ２１０の動作を無効にすること、そのトレース上で最適化を有効にすることなどが可能であり、選択肢は無限である。
【００３３】
以上で詳述されているのは、メモリと無関係なトレース・ハンドルを定義および使用するための機能である。一例では、ハッシュ・エンコーディング機能が、トレースと称する連続的に実行される命令のシーケンスを、ｎビット幅のハンドルに変換する。このエンコーディングは、命令シーケンスのメモリ位置を考慮に入れないので、このエンコーディングは、メモリと無関係である。これにより、ハンドルを、元の命令シーケンスよりもずっと取り扱いしやすいように定義することが可能となる。具体的には、命令シーケンス全体の代わりに、ハンドルを使用して、関心の対象である当初の命令シーケンスを再捕捉することができる。
【００３４】
本発明の１つ以上の側面は、例えば、コンピュータ使用可能な媒体を有する製品（例えば、1つ以上のコンピュータ・プログラム製品）に含めることができる。この媒体は、例えば、本発明の機能を提供するコンピュータ可読プログラム・コード手段または論理（例えば、命令、コード、コマンドなど）を、その内部に有する。この製品は、コンピュータ・システムの一部として包含される場合もあり、あるいは別途販売される場合もある。
【００３５】
本発明の１つ以上の側面を実装している製品またはコンピュータ・プログラム製品の一例を、図６を参照して説明する。コンピュータ・プログラム製品６００は、例えば、コンピュータ可読のプログラム・コード手段または論理６０４を格納する、１つ以上のコンピュータ使用可能な媒体６０２を含み、本発明の１つ以上の側面を提供する。媒体６０４は、電子、磁気、光、電磁気、赤外線、または半導体のシステム（または装置もしくはデバイス）あるいは伝搬媒体とすることができる。コンピュータ可読媒体の例としては、半導体すなわちソリッド・ステートのメモリ、磁気テープ、着脱可能なコンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、固定型磁気ディスクおよび光ディスクが挙げられる。光ディスクの例としては、コンパクト・ディスク−読み取り専用メモリ（ＣＤ−ＲＯＭ）、コンパクト・ディスク−読み／書き（ＣＤ−Ｒ／Ｗ）およびＤＶＤが挙げられる。
【００３６】
１つ以上のコンピュータ可読プログラム・コード手段または論理によって定義された、プログラム命令のシーケンスまたは１つ以上の互いに関連するモジュールの論理アセンブリが、本発明の１つ以上の側面の実施を指示する。
【００３７】
メモリと無関係なトレース・ハンドルを定義するための機能が、有利に提供される。本機能により、トレースがメモリ内のどこに存在するかにかかわらず、一意的なトレース・ハンドルを生成することが可能になる。任意の長さの命令シーケンスは、マッピング機能を介して生成された固定長の表現によって表される。例えば、命令１０００個の長さのシーケンスは、１２８ビットのバイナリ・パターンによって表される。従って、アプリケーションが再実行され且つ前述の命令１０００個が監視対象になる場合には、命令１０００個全部の代わりに１２８ビットのパターンを使用して、シーケンスの位置が突き止められる。
【００３８】
本機能は、アプリケーションの境界にまたがるトレースにラベル付けするのに、ジャスト−イン−タイム・コンパイラのような動的コンパイラによって有利に使用することができる。これらのハンドルは、アプリケーションの後続する実行において、トレースの位置を突き止めるのに使用される。
【００３９】
以上では様々な実施形態が記載されているが、これらは単なる例に過ぎない。例えば、処理環境には、Ｐｏｗｅｒ４、ＰｏｗｅｒＰＣ、またはＩｎｔｅｌ以外のアーキテクチャに基づいた処理ユニットを含めることができる。加えて、ｐＳｅｒｉｅｓサーバ以外のサーバが、本発明の１つ以上の側面を実装し使用することもできる。さらに、処理環境は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ以外の環境をエミュレートすることができる。加えて、様々なエミュレータが使用可能である。エミュレータは、市販されており且つ様々な会社によって提供されている。その上、処理環境は、エミュレータ・コードを含んでいる必要はない。その他多数のタイプの処理環境によって、本発明の１つ以上の側面を実装および／または使用することができる。
【００４０】
さらに、エンコーディング機能３０２の例が提示されているが、ハッシュおよび非ハッシュ機能を含むその他多数のエンコーディング技術を使用することができる。ＭＤ５は、単なる一例として提示されている。
【００４１】
加えて、エミュレータ１１２は、アプリケーションの単なる一例に過ぎない。他のタイプのアプリケーションをトレースすることもでき、そうしたトレースに対してトレース・ハンドルが求められればよい。その上、アプリケーションは様々な理由から再始動することができ、あるいはトレースは様々な理由から監視することができる。本明細書に提示する例は、単なる例に過ぎない。
【００４２】
さらになお、１つ以上の実施形態において、プログラム・コードの格納および／または実行に適したデータ処理システムが使用可能であり、当該データ処理システムは、システム・バスを通じて直接的または間接的にメモリ要素に接続されている少なくとも１つのプロセッサを含む。メモリ要素としては、例えば、プログラム・コードの実際の実行中に用いられるローカル・メモリ、大容量ストレージ、およびキャッシュ・メモリが挙げられる。キャッシュ・メモリは、実行中に大容量ストレージからコードを検索しなければならない回数を減らすために、少なくとも一部のプログラム・コードの一時ストレージを提供するものである。
【００４３】
入力／出力すなわちＩ／Ｏデバイス（キーボード、ディスプレイ、ポインティング・デバイス、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、サム・ドライブおよびその他のメモリ媒体などを含むがこれらに限定されない）を、直接的にあるいは介在するＩ／Ｏコントローラを通じて、システムに接続することができる。さらに、ネットワーク・アダプタをシステムに接続して、データ処理システムが、介在するプライベート・ネットワークまたは公衆ネットワークを通じて、他のデータ処理システムまたはリモートのプリンタもしくはストレージ・デバイスに接続できるようにしてもよい。モデム、ケーブル・モデム、イーサネット（登録商標）カードは、入手可能な各種ネットワーク・アダプタのほんの一部に過ぎない。
【００４４】
本明細書で用いられる用語「取得する（こと）」とは、フェッチすること、受信すること、有すること、提供すること、提供されること、生成すること、開発することなどを含むが、これらに限定されない。
【００４５】
本発明の１つ以上の側面の機能は、ソフトウェア、ファームウェア、ハードウェアまたはそれらの特定の組み合わせで実装することができる。本発明の機能を実施するべくマシンによって実行可能な命令の少なくとも１つのプログラムを具現化し、当該マシンによって読み出すことのできる少なくとも１つのプログラム・ストレージ・デバイスを、提供することができる。
【００４２】
フロー図は、単なる例に過ぎない。これらのフロー図またはそこに記載されたステップ群（あるいは諸動作）に対しては、本発明の要旨から逸脱することなく、多数の変形を施し得る。例えば、ステップを異なった順序で実施してもよいし、あるいはステップの追加、削除、または変更を行ってもよい。こうした変形例は全て、請求項に記載される本発明の一部とみなされる。
【００４３】
本明細書では実施形態を詳細に示し説明してきたが、当業者には当然のことながら、本発明の要旨から逸脱することなく、多様な変更、追加、置換などを行うことが可能であり、従ってこれらも、請求項において定義される本発明の要旨の範囲内にあるものとみなされる。
【図１】
0005349328.tif 000002
【図２】
0005349328.tif 000003
【図３】
0005349328.tif 000004
【図４】
0005349328.tif 000005
【図６】
0005349328.tif 000006
【図５】
0005349328.tif 000007