JPH10320235A - 呼び出し分析方法 - Google Patents
呼び出し分析方法Info
- Publication number
- JPH10320235A JPH10320235A JP10075522A JP7552298A JPH10320235A JP H10320235 A JPH10320235 A JP H10320235A JP 10075522 A JP10075522 A JP 10075522A JP 7552298 A JP7552298 A JP 7552298A JP H10320235 A JPH10320235 A JP H10320235A
- Authority
- JP
- Japan
- Prior art keywords
- source code
- call
- file
- calls
- recorder
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
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
ックス呼び出しのトレース分析を効率的に実施する方法
を提供する。 【解決手段】プログラム実行の際に発せられる呼び出し
のうち少なくともトレースの対象として選択された呼び
出しを実行時にインターセプトして、該呼び出しに対応
する原始コード命令およびそれら呼び出しが参照するデ
ータを記録するが、その際、データは、原始命令コード
が記録される原始命令ファイルとは異なるデータ・ファ
イルに記録される。各呼び出しに対応する原始コードを
記録した後、インターセプトした呼び出しの複製の呼び
出しを発し、それによって、プログラムによって元々要
求されたプロシージャを呼び出すことができる。原始命
令ファイルはコンパイル可能であるので、プログラム・
エラーの分析が容易となる。
Description
処理に関するもので、特に、コンピュータ・プログラム
によって発信された呼び出しをトレースして分析する方
法に関するものである。
成するためコンピュータが使用されてきた。初期のコン
ピュータ・システムは、2次元でのみ画像を形成する能
力しか持っていなかったにもかかわらず、自動製図、地
図制作等の分野において受け入れらた。1970年代中
頃になると、3次元グラフィックス・システムが市場に
登場してきた。システムは非常に高価となり、専用ハー
ドウェアおよび特別仕様ソフトウェアを必要とする傾向
があった。
ック・プログラミング・インタフェースおよびライブラ
リが市場において利用できるようになった。現在、アプ
リケーション・プログラムは、"OpenGL"使用に準拠する
ような業界標準グラフィックス・ライブラリで提供され
るサブルーチン(または関数)を呼び出すことによって、
3次元画像を生成するようにプログラムすることができ
る。3次元グラフィックス生成の相対的容易さのため、
例えばビジネス、技術および科学シミュレーション、ユ
ーザ・インタフェースおよびアニメーションに関するア
プリケーションが激増した。
線だけが描画されている)"ワイヤ・フレーム"画像とし
て描かれる場合もあるが、すべての視覚可能な表面を描
出することが次第に一般的となりつつある。そのような
「立体」画像を描くための標準的技術は、線分、三角
形、正方形およびその他の多面体のような単純な幾何学
形状を基に、それら立体の表面を視覚的に構築する技術
である。例えば、机の画像は、実際の机の対応する表面
を表現するように並べて配置され、個別にテクスチャ模
様を付けられた何万または何十万もの小さい線分および
三角形を描くことによって、描画される。このようなタ
スクは、グラフィックス・ライブラリによって非常に単
純化されたとはいえ、立体画像の描出は、ライブラリに
対する数千または数百万もの呼び出しを必要とする場合
がある。
リを利用する様態を分析する従来技術の呼び出しトレー
スは、プログラムによって発せられるライブラリに対す
るすべての呼び出しをトレースすることを必要とする。
は、プログラムをデバッグするため呼び出しトレースを
使用するが、それは期待するようには機能しない。ま
た、呼び出しトレース技術は、ライブラリにおけるどの
サブルーチンが最も頻繁に使用されるかを決定する際に
も使用される。これは、アプリケーション・プログラム
またはライブラリを調整または最適化するのに役立つ。
都度メッセージを画面表示または印刷するようにアプリ
ケーション・プログラム原始コードを修正することによ
って、通常達成される。別の形態としては、指定したブ
レークポイントにおいてそのような通知を自動的に作成
するデバッガの制御の下でプログラムを実行することに
よって、呼び出しトレースが達成される。
くのコンピュータ・プログラムに関して効果的であると
はいえ、グラフィックス・アプリケーションにおいては
その価値は伝統的に高くなかった。グラフィックス・ラ
イブラリに対して発せられる呼び出しを識別できる時で
さえ、その数の少なさのため分析を実質的に不可能にさ
せる。これは、多くのグラフィックス呼び出しが、個別
的には総量としても大量のデータに相当する程には大き
くはないアレイおよび他のデータ構造を参照するという
事実によって一層悪化する。
て発せられる呼び出しを分析する方法の改善が必要とさ
れている。更に、アプリケーション・プログラムによる
グラフィックス・ライブラリの使用を分析する方法の改
善、および呼び出しトレースの方法の改善が必要とされ
ている。更にまた、上記必要性に関連して、ライブラリ
の使用特にグラフィックス・ライブラリの使用をデバッ
グ、調整または最適化する方法の改善が求められてい
る。
め、本発明は、コンピュータ・プログラムによって発せ
られる呼び出しを分析する改良された方法、特に、呼び
出しトレースを記録し分析する改良された方法を提供す
る。本発明の第1の側面に従って、そのような方法は、
コンピュータ・プログラムを実行するステップ、そのよ
うな実行の間に発せられる少くとも選択された呼び出し
に対応する原始コード命令を記録するステップ、および
それら呼び出しにおいて参照される少なくとも選択され
たデータを記録するステップを含む。この際、データ
は、原始コードとは別に、すなわち別のファイルに記録
される。
る呼び出しは、呼び出されたプロシージャと同一の名前
を持つ「シェル」または「スタブ」によってインターセ
プトされる。インターセプトするプロシージャは、呼び
出しを生成した原始コード命令をファイルに記憶する。
インターセプトされた呼び出しにおいて参照されたデー
タは、別のファイルに書き込まれる。
れたならば、シェル・プロシージャは、インターセプト
された呼び出しを複製した呼び出しを発し、それによっ
て、プログラムによって元々要求されたプロシージャを
呼び出すことができる。本発明は、また、そのプロシー
ジャの実行時間を記録することができる。
コード・ファイルに原始コード命令を記憶するステップ
を含む。各ファイルは、コンピュータ・プログラムの実
行の間に発せられる連続的呼び出しに対応する原始コー
ド命令を含む。このように、例えば、第1のファイル
は、プログラムによって発せられた第1の数千の呼び出
しに対応する原始コードを含み、第2のファイルが、プ
ログラムによって発せられた第2の数千の呼び出しに対
応する原始コードを含み、第n番目のファイルが、プロ
グラムによって発せられた第n番目の数千の呼び出しに
対応する原始コードを含む。
された呼び出しにおける参照によってアクセスされるデ
ータは、データ・ファイルに記憶される。それらの呼び
出しに関する原始コード命令は、データ・ファイルの記
憶位置に対する該当する参照情報と共に、原始コード・
ファイルに書き込まれる。一方、値によってアクセスさ
れたデータは、対応する原始コード命令と共に、原始コ
ード・ファイルに書き込まれる。
側面に従った本発明の方法が、グラフィックス・ライブ
ラリに対してコンピュータ・プログラムによって発せら
れた呼び出しを分析するステップを含む。
ムの実行を分析するステップを含む。そのような分析
は、原始コード・ファイルに保持される命令をコンパイ
ルし実行するステップを含み、また、呼び出しによって
描出される命令シーケンスにおける1つまたは複数のグ
ラフィックス・プリミティブを識別するステップ、それ
らのプリミティブが描出される混合グラフィック状態を
識別するステップ、および、その状態において描出され
るプリミティブと共にそれらの混合グラフィック状態の
うちの少なくとも1つを報告するステップを含む。
使用されるタイプのデジタル・データ処理システム5を
示す。システム5は、背面またはバス18によって相互
に接続された中央処理装置12、ランダムアクセス・メ
モリ14および入出力コントローラ16を有するデジタ
ル・データ・プロセッサ10を含む。データおよび制御
情報の入力のため、キーボード22およびポインティン
グ・デバイス24が、他の入力装置(図示されていない)
と共に、入出力コントローラ16を経由してコンピュー
タ10に接続されている。コンピュータ10は、また、
情報のアクセスおよび記憶のため、他の静的記憶装置
(図示されていない)と共に、ディスク・ドライブ26を
接続している。同様に、モニタ28が、他の出力装置
(図示されていない)と共に、3次元グラフィックスのよ
うな情報の表示のため、コントローラ16に接続されて
いる。
10−28を含め、いかなる既知の汎用または専用コン
ピュータ・システムであってもよい。システムは、好ま
しくは、プログラムによって発せられるライブラリ呼び
出しの分析のため、特に、グラフィックス・アプリケー
ション・プログラムによって発せられるグラフィックス
・ライブラリ呼び出しの分析のため、本発明の教示に従
ってプログラムされまたは動作制御される3次元グラフ
ィック表示可能なワークステーションである。
データ処理システム5は、例えば入力装置22、24を
経由してユーザから受け取る命令に応答して、例えば机
の3次元画像生成のような特定のグラフィックス・タス
クを実行するアプリケーション・プログラム30を実行
する。出力装置28へのグラフィックス生成を実行する
ため、アプリケーション・プログラム30は、グラフィ
ックス・ライブラリ32に含まれるプロシージャに対す
る呼び出しを生成する。
ラム30は、例えば机のような特定のオブジェクトの画
像を作成し取り扱う専用コンピュータ・プログラムを表
すと見ることもできる。また、それは、ユーザによって
出されたコマンドまたはマクロ・シーケンスに応答して
オブジェクトの画像を生成する機能を持つCADプログ
ラムまたはその他の汎用グラフィックス・プログラムを
表すものと見ることもできる。
フィックスの表示のため(ハードウェアに依存した)デー
タ構造を維持しコマンドを発する手続き的またはオブジ
ェクト指向的なプロシージャおよびデータ構造の任意の
セットを表す。このライブラリは、OpenGLアプリケーシ
ョン・プログラム・インタフェース(API)仕様のよう
ないかなる業界標準にも準拠して動作することができ
る。同様に、それは、いかなるベンダ特有規格またはア
ドホック標準に従っても動作することができる。
上記諸機構と共に使用される文脈および他の環境特有ル
ーチンを描出するウインドウ管理を含む。そのようなル
ーチンは、OpenGL仕様に準拠するような公式なグラフィ
ックス・ライブラリに常に含まれているとは限らない点
は当業者に理解されることであろう。しかしながら、そ
のようなルーチンは、典型的には、その下でホスト・シ
ステム5が動作するハードウェアまたはオペレーティン
グ・システムのために備えられる補助ライブラリの形式
で提供される。そのような補助ライブラリの例には、ウ
インドウズ32ビット環境(すなわちウインドウズ95
およびウインドウズNT)におけるOpenGLの使用を許容
するWGLライブラリおよびユニックス環境におけるOpenG
Lの使用を許容するGLXライブラリが含められる。
ス・ライブラリ32の使用を分析するように意図されて
はいるが、本発明はそのように制約されることはない。
ライブラリ、独立ルーチン、組み込みルーチンあるいは
その他に対して、いかなる命令シーケンスによってでも
発せられる呼び出しを分析することに、本発明は、同等
に適用することができる。本明細書で使用される用語
「ルーチン」は、サブルーチン、関数、プロシージャ、
または、実行可能な命令シーケンスのその他の入口点を
指す。
30によって発せられる少くとも選択された関数、プロ
シージャまたは他の呼び出し(集合的に、「プロシージ
ャ呼び出し」または「呼び出し」)は、インターセプタ
34によって捕捉され、レコーダ36によって記録され
る。これらの呼び出しは、図2において「トレース対象
呼び出し」として標記されている。本実施形態におい
て、これら呼び出しは、グラフィックス・ライブラリ3
2に対するすべての呼び出しを含む。他の実施形態にお
いては、これら呼び出しがその他のライブラリまたはル
ーチンに対する呼び出しを含むこともできる。トレース
対象呼び出しは、以下に述べるように、記録され、分析
され、更に、ライブラリ32による処理のため再発信さ
れる。
て発せられるその他の呼び出しは、本発明に従って処理
されない。これらは、図2において「トレース非対象」
と標記されている。本実施形態において、これらは、フ
ァイル・システム、数式ライブラリなどに対する呼び出
しを含む。トレース非対象呼び出しは、従来技術の方法
で、それぞれのライブラリ(または複数ライブラリ)38
へ渡される。
は、コントローラ38の制御の下で動作し、コントロー
ラは、操作員が記録動作を実行可能または実行不可にす
るために使用するインタフェースを(入力装置22、2
4およびモニタ28経由で)提供する。コントローラ3
8は、また、操作員が原始コード・ファイル40および
データ・ファイル42のファイル名を指定することを可
能にさせる。
レース対象呼呼び出しと同一の名前およびパラメータを
持つ「シェル」または「スタブ」プロシージャの集合で
ある。シェル・プロシージャは、ライブラリ32に先立
ちアプリケーション・プログラム30に動的にリンクさ
れるライブラリ(すなわちDLL)として好ましくは実施
される。
うな動的リンクを実行するため、操作員は、ホスト・プ
ロセッサ12にコマンドを発して、グラフィックス・ラ
イブラリ32からシェル・プロシージャを保有するファ
イルまたはディレクトリへ呼び出しを向け直すように要
求することができる。次に一旦アプリケーション・プロ
グラムの実行が始動されると(ステップ52)、トレース
される呼び出しが生成され、それら呼び出しはシェル・
プロシージャによってインターセプトされる(ステップ
56)。
・プログラム30へのリンクは、上記以外の種々の既知
の方法で実行できることは当業者に認められるであろ
う。また、アプリケーション・プログラム30によって
発せられる呼び出しの識別をインターセプタ・エレメン
ト34が上述以外の方法で実施することができる点も当
業者に認められることであろう。例えば、レコーダ・エ
レメント36に呼び出しを通知する付加的ステートメン
トまたはその他の機能性をアプリケーション・プログラ
ム30またはライブラリ32へ組み込むことによって、
インターセプタ・エレメント34を実施することもでき
る。
ース対象呼び出しを捕捉すると、操作員がコントローラ
38に発した命令によって記録機能が使用可能とされて
いる場合、プロシージャ名およびパラメータ・リストを
レコーダ36に渡す(ステップ58−60)。記録機能の
使用が可能であろうと不可であろうと、インターセプタ
34は、インターセプトした呼び出しを使用してグラフ
ィックス・ライブラリ32を呼び出し(ステップ62)、
アプリケーション・プログラム30が通常形態で動作す
ることを可能にし、一方、インターセプタ34およびレ
コーダ36はトレース対象呼び出しをトレースする。
よびパラメータ・リストをインターセプタ34から受け
取ると、レコーダ36は、対応する原始コード・ステー
トメントを原始ファイル40に記録する。結果として、
ファイル40は,アプリケーション・プログラム30に
よって発せられた呼び出しのトレースのみならず、発せ
られた呼び出しの「ハードコードされた」シーケンス、
すなわち明示的シーケンスを提供するコンパイル可能な
呼び出しトレースを特に含む。
象呼び出しを「逆コンパイル」し、実行命令から原始コ
ードに戻すように変換する。しかしながら、オブジェク
ト・コードが将来実行されるか否かとは無関係にそのコ
ードを変換する従来技術の逆コンパイラとは相違して、
レコーダ36は、トレース対象呼び出しのうちの1つが
実行される度毎に原始コードを生成することができる。
ム30が、座標(-1,0,2)、(O,1,2)および(0,0,4)という
頂点を持つ三角形を描くためライブラリ32に呼び出し
を発すると仮定すれば、レコーダは、原始コード・ファ
イルへ以下の表1のような、対応する原始コードの連続
行を書き込む。
ファイル、ワープロ・ファイル、アプリケーション・プ
ログラム開発ファイルまたは原始コードを記憶すること
ができるその他どのようなファイルあるいは記憶領域で
もよい。好ましくは、ファイル40は、アプリケーショ
ン・プログラムに対応する原始コードを記憶するためシ
ステム5によって通常使用されるタイプのものである。
る。ステップ64において、レコーダは、インターセプ
トされた呼び出しが、図面がそこに描出されるべきグラ
フィカル・ウィンドウを参照しているか否かを判断す
る。そうであれば、呼び出しは図6に示される方法に従
って処理される。すなわち、適切なウインドウを作成し
維持するために必要な、あるいはウインドウそのものが
適用する描出文脈を確立するために必要なすべての呼び
出しおよび原始コード命令が原始コード・ファイル40
へ書き込まれる。原始コード・ファイル40が(例えば
別のシステム上でのグラフィックス生成のテストを可能
にするような場合のように)別の機械環境における使用
のため最終的にコンパイルされ実行される場合には、レ
コーダ38は、そのような他の環境にあった適切なウイ
ンドウおよび描出文脈命令にそれを変更することができ
る。
おいて、レコーダは、インターセプトされた呼び出しが
新しい図形を参照しているか否かを判断し、そうであれ
ば、その図形を選択するため原始コード・ファイル40
にその原始コードを書き込む。ステップ94−98は、
X11ウインドウ・システムに適用可能なステップであ
り、原始コード・ファイル40が最終的に使用される機
械環境に従って、直接または類似命令を使用し適応され
ることができる。
ーセプトされた呼び出しがレコーダによってそれまでに
識別されなかった図形(すなわち「新しい」図形)を参照
しているか否かを判断する。そうであれば、ステップ9
4において、レコーダは図形の属性を取得するためウィ
ンドウ・システムに照会を行う。ステップ96におい
て、レコーダは図形に名前を割り当て、(将来の原始コ
ード参照のため)その名前を記録する。ステップ98に
おいて、レコーダは画像を選択する原始コードをファイ
ル40に書き込む。X11ウィンドウ・システムを活用
するデジタル・データ処理システムに適用できるそのよ
うな原始コードの例は次の表2の通りである。
ターセプトされた呼び出しがレコーダによってそれまで
に識別されなかった文脈(すなわち「新しい」文脈)を参
照しているか否かを判断する。そうであれば、ステップ
102において、レコーダは文脈に名前を割り当てその
名前を記録する。その後、ステップ104において、レ
コーダは文脈を作成する原始コードをファイル40に書
き込む。X11ウィンドウ・システムを活用するデジタ
ル・データ処理システムに適用できるそのような原始コ
ードの例は次の表3の通りである。
ターセプトされた呼び出しがレコーダによってそれまで
に識別されなかったウインドウ(すなわち「新しい」ウ
インドウ)を参照しているか否かを判断する。そうであ
れば、ステップ108において、レコーダはウインドウ
の属性を取得するためウィンドウ・システムに照会を行
う。ステップ110において、レコーダはウインドウに
名前を割り当てその名前を記録する。ステップ112に
おいて、レコーダはウインドウを選択する原始コードを
ファイル40に書き込む。X11ウィンドウ・システム
を活用するデジタル・データ処理システムに適用できる
そのような原始コードの例は次の表4の通りである。
べてのアクティブ・ウインドウに対して順次以下の処理
を実行するループ処理を始める。ステップ116におい
て、レコーダは(アプリケーション・プログラム30と
共に)ウィンドウの実際の状態がレコーダにとって既知
のものと同じか否かを判断する。もしそうであれば、レ
コーダは次のウィンドウに関する処理へ進む。既知のも
のと同じでなければ、ステップ118において、レコー
ダはウィンドウの状態についてその記録を更新し、ステ
ップ120において、記録された原始コードにおけるそ
のウィンドウの状態を更新する原始コードをファイル4
0に書き込む。X11ウィンドウ・システムを活用する
デジタル・データ処理システムに適用できるそのような
原始コードの例は次の表5の通りである。ステップ11
4−120のループ処理の後、処理の流れの制御は図4
のステップ70へ戻される。
・プログラムは、単一の3次元画像の生成の間に、場合
によっては、グラフィックス・ライブラリに対する何千
または何百万もの呼び出しを発する。単一の原始コード
・ファイルにおいて単一の関数またはサブルーチンに対
してそのように多数の行を書くことは、デジタル・デー
タ処理システム5の上で提供されるファイル・システ
ム、コンパイラまたは他のアプリケーション開発ツール
を混乱させる可能性がある。従って、レコーダは、ファ
イルと共に個々の原始コード関数のサイズを減少させる
メカニズムを備える。
も選択されたデータを、それらデータを参照する(イン
ターセプトされた)呼び出しとは分離して記憶すること
である。具体的には、ステップ70において、レコーダ
は、インターセプトされた呼び出しがデータを参照して
アクセスするか否か、より具体的にいえば呼び出しが参
照によるパスまたはアドレス・パラメータによるパスを
含んでいるか否かを判断する。そうであれば、ステップ
72−76において、レコーダは、(例えばインターセ
プトされた呼び出しで供給されたアドレスを使用して)
それらのデータを取得し、好ましくは圧縮した形式でデ
ータ・ファイル42に記憶する。ステップ78におい
て、レコーダは、インターセプトされた呼び出しに対応
する原始コード命令を原始コード・ファイル42に書き
込む。レコーダは、インターセプトされた呼び出し自体
に供給されるものと同じアドレスを使用するのではな
く、レコーダは、データ・ファイル42における対応す
るデータのアドレスを代用する。好ましい実施形態にお
いて、データ・ファイル42はバイナリ・ファイルであ
る。それが、テキスト・ファイルまたはその他のファイ
ルあるいはデータを記憶すことができるどのようなタイ
プの記憶領域でもよい点は当業者に理解されることであ
ろう。
40のサイズを減少させるため本発明によって提供され
るもう1つのメカニズムは、分割である。単一関数また
はサブルーチンに対するすべての原始コードを単一ファ
イルに書き込むのではなく、レコーダ36は、連続的サ
ブルーチン(すなわちサブ関数)に対する原始コードの連
続的バッチを連続的原始コード・ファイル40に書き込
む。本発明の好ましい実施形態において、各サブ関数は
約1000行の長さであり、各原始コード・ファイルは
最高約50のサブ関数を含む(原始コード・ファイル当
たり合計約50,000行までの原始コードとなる)。当
然のことながら、その他のバッチ・サイズが使用可能で
あることは当業者に認められるであろう。複数の連続し
たサブ関数の実行を調整するため、レコーダ36は、実
際と疑似のOpenGL呼び出しを使用してそれらのサブ関数
を連続して呼び出すマスタ原始コード・ファイルを生成
する。以下の表6は、マスタ原始コード・ファイルの1
例である。
ステートメントでもよく、好ましくはライブラリ32へ
の呼び出しを表す。
するためレコーダによって使用される好ましい方法の流
れ図である。ステップ80において、レコーダは、現在
次サブ関数に書き込まれる行数を標示する行カウントを
増分する。ステップ82において、そのカウントが例え
ば1000のような事前に設定された最大数より小さい
か否か検査され、小さければ、現在インターセプトされ
た呼び出しに対応する原始コードが現在時サブ関数に書
き込まれる(ステップ84)。一方、ステップ82におい
てカウントが事前設置された最大数を超えると判断され
ると、現在時サブ関数は閉じられ(ステップ86)、関数
カウントが増分される(ステップ81)。ステップ83に
おいて、レコーダは、関数カウントが例えば50のよう
なしきい値を上回っているか否か検査する。上回ってい
れば、レコーダは、現在時原始コード・ファイルを閉
じ、新しいファイルを開き(ステップ85)、関数カウン
トをリセットする(ステップ87)。上回っていなけれ
ば、レコーダは、現在時ファイルにおいて、適切なサブ
ルーチン宣言を用いて新しいサブ関数を開始する(ステ
ップ88)。同時に、行カウントはゼロにリセットされ
る(ステップ89)。新しいサブ関数に書き込まれる原始
コードが呼び出されるこを保証するため、マスタ原始コ
ード・ファイルは、それに対する呼び出しを含むように
更新される(ステップ90)。最後に、ステップ84にお
いて、インターセプトされた呼び出しに関する原始コー
ドが現在時サブファイルに書き込まれる。
戻ると、インターセプトされた命令がウィンドウを参照
してなく、かつ、参照によってデータをアクセスしない
とすれば、レコーダは、ステップ68において、原始コ
ード・ファイル40に対する(インターセプトされた)呼
び出しに対応する命令を記録する。このように、例え
ば、値によってデータにアクセスする呼び出しに対応す
る原始コードが、(参照されたデータと共に)ファイル4
0に記憶される。
の下)アプリケーション・プログラム30の実行が止め
られたかあるいは記録動作が使用不可状態にされた後、
原始コード・ファイル40およびデータ・ファイル42
に記憶された情報は、アプリケーション・プログラム3
0およびライブラリ32を分析するため活用されること
ができる。より具体的にいえば、その情報は、アプリケ
ーション・プログラムの呼び出しシーケンスまたはライ
ブラリ32の使用様態の分析を可能にする。
ド・ステートメントは、アプリケーション・プログラム
30によって発せられたライブラリ32に対する呼び出
しのトレース情報を提供する。しかしながら、従来技術
のトレースと相違して、それらのファイルはコンパイル
可能である。このように、それらは、デジタル・データ
処理システム5または別のシステム44でコンパイルさ
れ、実行されることができる。この利点は、プログラマ
が、アプリケーション・プログラムの、特にトレースさ
れたライブラリに関連する側面を、例えばシステム5の
上で、テストすることを可能にする点である。例えばア
プリケーション・プログラム32の通常の実行が予期せ
ぬ程緩慢となるかあるいは壊れる場合、ファイル40に
おけるコンパイル可能なトレースの実行は、プログラマ
が原因を分離する作業を助ける。もう1つの利点は、ト
レースされた呼び出しが他のシステム例えばシステム4
4と互換性を持っているか否かをプログラマが判断する
ことを可能にさせる点である。
介してファイル40における原始コードの分析に対処す
る。アナライザ46は、原始コード・ファイル40の実
行の間に発せられたグラフィックス呼び出しをインター
セプトして、(照明、遮光、テクスチャなどのような)グ
ラフィック状態とともに、そのような実行によって描出
されるプリミティブを識別することができる。代替的形
態として、アナライザ46は(コードを実際に実行せず
に)ファイル40に含まれる原始コードを直接解釈する
ことができる。アナライザ46は、また、好ましくは、
その分析の結果を報告する。アナライザは、プリミティ
ブが描出される状態別にプリミティブを分類表示するレ
ポートを生成することもできる。
グラフィック画像の生成の過程で発せられる呼び出しの
分析に適用可能なソフトウエア・ライブラリ使用様態を
分析する方法を記述した。上述の実施形態は単に例示の
目的から提示されたものであり、その修正を含むその他
の実施形態が本発明の範囲内にあることは認められるで
あろう。従って、例えば、上述の諸例は、OpenGLライブ
ラリにおいて提供される呼び出しに基づいているが、そ
の他のグラフィックまたは非グラフィック・ライブラリ
についても、また、(ライブラリの形態をしているかい
ないかに拘わらず)その他の個別ルーチンまたはルーチ
ンの集合についても本発明が使用され得ることは認めら
れるであろう。
が含まれる。 (1)コンピュータ・プログラムによって発せられる呼
び出しを分析する方法であって、コンピュータ・プログ
ラムを実行するステップ(A)と、そのような実行の間に
発せられる少くとも選択された呼び出しに対応する原始
コード命令を記録するステップ(B)と、上記呼び出しに
よって参照される少なくとも選択されたデータを上記原
始コード命令と分離して記録するステップ(C)と、を含
む呼び出し分析方法。 (2)上記ステップ(B)が、1つまたは複数の原始コー
ド・ファイルに上記原始コード命令を記録するステップ
を含み、上記1つまたは複数の原始コード・ファイルの
各々が、コンピュータ・プログラムの実行の間に発せら
れる連続的呼び出しに対応する連続的原始コード命令を
含む、上記(1)に記載の呼び出し分析方法。 (3)上記ステップ(C)が、コンピュータ・プログラム
の実行の間に発せられる選択された呼び出しの参照によ
ってアクセスされるデータをデータ・ファイルに記録す
るステップを含む、上記(1)に記載の呼び出し分析方
法。 (4)上記ステップ(C)が、コンピュータ・プログラム
の実行の間に発せられる選択された呼び出しの値によっ
てアクセスされるデータを、原始コード命令と共に、記
録するステップを含む、上記(3)に記載の呼び出し分
析方法。 (5)コンピュータ・プログラムの実行の間に発せられ
る呼び出しをインターセプトするステップと、インター
セプトされた呼び出しが対象としていたルーチンへの呼
び出しを生成するステップと、を更に含む上記(1)に
記載の呼び出し分析方法。
発せられるグラフィックス・ライブラリに対する呼び出
しを分析する方法であって、コンピュータ・プログラム
を実行するステップ(A)と、コンピュータ・プログラム
の実行の間に発せられるグラフィックス・ライブラリに
対する少なくとも選択された呼び出しに対応する原始コ
ード命令を1つまたは複数の原始コード・ファイルに記
録するステップ(B)と、を含み、上記1つまたは複数の
原始コード・ファイルの各々が、コンピュータ・プログ
ラムの実行の間に発せられる連続的呼び出しに対応する
連続的原始コード命令を含む、呼び出し分析方法。 (7)コンピュータ・プログラムの実行の間に発せられ
る選択された呼び出しの参照によってアクセスされる少
なくとも選択されたデータを、上記原始コード・ファイ
ルとは分離した1つまたは複数のデータ・ファイルに記
録するステップを更に含む、上記(6)に記載の呼び出
し分析方法。 (8)コンピュータ・プログラムの実行の間に発せられ
るグラフィックス・ライブラリに対する呼び出しをイン
ターセプトするステップと、インターセプトされた呼び
出しが対象としていたルーチンへの呼び出しを生成する
ステップと、を更に含む上記(7)に記載の呼び出し分
析方法。 (9)上記(6)に記載のステップ(A)が、グラフィッ
クス・ディスプレイ・ウィンドウに影響を及ぼすグラフ
ィックス呼び出しに応答して、インターセプトされた呼
び出しに対応する原始コード命令とともに、当該グラフ
ィックス・ディスプレイ・ウィンドウを作成し維持する
少なくとも1つの原始コード命令を原始コード・ファイ
ルへ記録するステップを含む、上記(8)に記載の呼び
出し分析方法。 (10)上記コンピュータ・プログラムのアドレス空間
への参照によってデータをアクセスするグラフィックス
呼び出しに応答して、上記ステップ(B)において上記デ
ータ・ファイルにおける記憶領域にデータを記録し、ス
テップ(A)においてグラフィックス呼び出しに対応し上
記データ・ファイルにおける記憶領域を参照する原始コ
ード命令を上記原始コード・ファイルに記録するステッ
プと、値によってデータにアクセスするグラフィックス
呼び出しに応答して、ステップ(A)において値によって
データにアクセスするグラフィックス呼び出しに対応す
る原始コード命令を上記原始コード・ファイルに記録す
るステップと、を含む、上記(9)に記載の呼び出し分
析方法。
よびデータ・ファイルにそれぞれ記憶された情報を活用
して、アプリケーション・プログラムおよびライブラリ
を効率的に分析することができる。また、原始コード・
ファイルに記録されたアプリケーション・プログラムの
トレース情報は、コンパイル可能なため、従来技術に比
較して、プログラマが容易にプログラム・エラーの原因
を分離できる。
処理システムを示すブロック図である。
る本発明の方法を実施するソフトウェアの構造を示す
出しをインターセプトする方法を示す流れ図である。
出しを記録する方法を示す流れ図である。
ファイルに書き込まれた原始コードを細分化する方法を
示す流れ図である。
能および文脈関連原始コードを生成する方法を示す流れ
図である。
ム 32、38 ライブラリ 34 インターセプタ 36 レコーダ 38 コントローラ 40 原始ファイル 42 データ・ファイル 44 別のシステム 46 アナライザ
Claims (1)
- 【請求項1】コンピュータ・プログラムによって発せら
れる呼び出しを分析する方法であって、 コンピュータ・プログラムを実行するステップと、 そのような実行の間に発せられる少くとも選択された呼
び出しに対応する原始コード命令を記録するステップ
と、 上記呼び出しによって参照される少なくとも選択された
データを上記原始コード命令と分離して記録するステッ
プと、 を含む呼び出し分析方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/775,271 US6047123A (en) | 1997-03-27 | 1997-03-27 | Methods for recording a compilable graphics call trace |
US775,271 | 1997-03-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH10320235A true JPH10320235A (ja) | 1998-12-04 |
Family
ID=25103878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10075522A Withdrawn JPH10320235A (ja) | 1997-03-27 | 1998-03-24 | 呼び出し分析方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6047123A (ja) |
JP (1) | JPH10320235A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008507767A (ja) * | 2004-07-20 | 2008-03-13 | ソフトリシティ インコーポレイテッド | コンピュータアプリケーションにおけるデータ損失を最小限にする方法およびシステム |
JP2011008789A (ja) * | 2009-06-26 | 2011-01-13 | Intel Corp | グラフィック分析技術 |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6421738B1 (en) * | 1997-07-15 | 2002-07-16 | Microsoft Corporation | Method and system for capturing and encoding full-screen video graphics |
US6314470B1 (en) * | 1997-07-25 | 2001-11-06 | Hewlett Packard Company | System and method for asynchronously accessing a graphics system for graphics application evaluation and control |
US6631423B1 (en) * | 1998-03-31 | 2003-10-07 | Hewlett-Packard Development Company, L.P. | System and method for assessing performance optimizations in a graphics system |
GB2348304B (en) * | 1999-03-24 | 2003-07-09 | Ibm | Optimising Device Driver Debug Tracing |
JP3767276B2 (ja) * | 1999-09-30 | 2006-04-19 | 富士通株式会社 | システムコール情報の記録方法および記録装置 |
US7460086B1 (en) * | 1999-12-13 | 2008-12-02 | Honeywell International Inc. | Multiple and hybrid graphics display types |
CA2402437C (en) | 2000-04-07 | 2004-10-26 | James Edward Appenzeller | Methods and systems for monitoring quality assurance |
US8141052B2 (en) * | 2003-05-09 | 2012-03-20 | Microsoft Corporation | Instrumenting software for enhanced diagnosability |
US7216341B2 (en) * | 2003-05-09 | 2007-05-08 | Microsoft Corporation | Instrumenting software for enhanced diagnosability |
US7533371B1 (en) * | 2003-09-22 | 2009-05-12 | Microsoft Corporation | User interface for facilitating performance analysis for processing |
US20050273757A1 (en) * | 2004-06-07 | 2005-12-08 | Anderson Craig D | Methods, systems, and computer program products for summarizing operational behavior of a computer program |
US7653899B1 (en) | 2004-07-23 | 2010-01-26 | Green Hills Software, Inc. | Post-execution software debugger with performance display |
US8271955B1 (en) * | 2004-07-23 | 2012-09-18 | Green Hille Software, Inc. | Forward post-execution software debugger |
US8132159B1 (en) | 2004-07-23 | 2012-03-06 | Green Hills Software, Inc. | Post-execution software debugger with event display |
US8015552B1 (en) | 2004-07-23 | 2011-09-06 | Green Hills Software, Inc. | Post-execution software debugger with coverage display |
US8136096B1 (en) | 2004-07-23 | 2012-03-13 | Green Hills Software, Inc. | Backward post-execution software debugger |
US20070296718A1 (en) * | 2005-12-01 | 2007-12-27 | Exent Technologies, Ltd. | Dynamic resizing of graphics content rendered by an application to facilitate rendering of additional graphics content |
US7596536B2 (en) * | 2005-12-01 | 2009-09-29 | Exent Technologies, Ltd. | System, method and computer program product for dynamically measuring properties of objects rendered and/or referenced by an application executing on a computing device |
US8629885B2 (en) * | 2005-12-01 | 2014-01-14 | Exent Technologies, Ltd. | System, method and computer program product for dynamically identifying, selecting and extracting graphical and media objects in frames or scenes rendered by a software application |
US20070168309A1 (en) * | 2005-12-01 | 2007-07-19 | Exent Technologies, Ltd. | System, method and computer program product for dynamically extracting and sharing event information from an executing software application |
US7596540B2 (en) * | 2005-12-01 | 2009-09-29 | Exent Technologies, Ltd. | System, method and computer program product for dynamically enhancing an application executing on a computing device |
US9013494B2 (en) | 2006-12-07 | 2015-04-21 | Sony Computer Entertainment Inc. | Heads-up-display software development tool |
US7950003B1 (en) * | 2006-12-07 | 2011-05-24 | Sony Computer Entertainment Inc. | Heads-up-display software development tool for analyzing and optimizing computer software |
US20090037887A1 (en) * | 2007-07-30 | 2009-02-05 | Chavan Shasank K | Compiler-inserted predicated tracing |
US8276129B1 (en) * | 2007-08-13 | 2012-09-25 | Nvidia Corporation | Methods and systems for in-place shader debugging and performance tuning |
CN112257037B (zh) * | 2020-11-13 | 2024-03-19 | 北京明朝万达科技股份有限公司 | 一种进程水印方法、系统及电子设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4931928A (en) * | 1988-11-09 | 1990-06-05 | Greenfeld Norton R | Apparatus for analyzing source code |
US5313616A (en) * | 1990-09-18 | 1994-05-17 | 88Open Consortium, Ltd. | Method for analyzing calls of application program by inserting monitoring routines into the executable version and redirecting calls to the monitoring routines |
US5828883A (en) * | 1994-03-31 | 1998-10-27 | Lucent Technologies, Inc. | Call path refinement profiles |
-
1997
- 1997-03-27 US US08/775,271 patent/US6047123A/en not_active Expired - Fee Related
-
1998
- 1998-03-24 JP JP10075522A patent/JPH10320235A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008507767A (ja) * | 2004-07-20 | 2008-03-13 | ソフトリシティ インコーポレイテッド | コンピュータアプリケーションにおけるデータ損失を最小限にする方法およびシステム |
JP2011008789A (ja) * | 2009-06-26 | 2011-01-13 | Intel Corp | グラフィック分析技術 |
Also Published As
Publication number | Publication date |
---|---|
US6047123A (en) | 2000-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH10320235A (ja) | 呼び出し分析方法 | |
US7028309B2 (en) | Accessing a graphics system for graphics application evaluation and control | |
JP5123323B2 (ja) | アプリケーションの変更前にコマンドの変更のパフォーマンスを解析するためのグラフィックコマンド管理ツールおよびその方法 | |
EP2438576B1 (en) | Displaying a visual representation of performance metrics for rendered graphics elements | |
US7511712B1 (en) | Facilitating performance analysis for processing | |
EP0654735B1 (en) | Apparatus and methods for analyzing a system of processes | |
US8347275B2 (en) | OpenGL to OpenGL/ES translator and OpenGL/ES simulator | |
US9251551B2 (en) | Bindless memory access in direct 3D | |
EP0632377A1 (en) | Method for testing a message-driven operating system | |
US7412706B2 (en) | Input redirection | |
JP2008192164A (ja) | グラフィカル画像生成分析方法 | |
CN115145778B (zh) | 一种显卡渲染结果分析方法、装置及存储介质 | |
US7533371B1 (en) | User interface for facilitating performance analysis for processing | |
EP0606684A1 (en) | Method for debugging applications for a GUI | |
WO2010011981A1 (en) | Mapping graphics instructions to associated graphics data during performance analysis | |
CN116185743B (zh) | OpenGL接口的双显卡对比调试方法、装置及介质 | |
US6799320B1 (en) | Providing binding options for component interfaces | |
KR20130043241A (ko) | 그래픽 이미지들의 시각적 창작 동안의 성능 분석 | |
Pankratz | Data-Driven Analysis and Design of Vulkan Ray-Tracing Applications using Automatic Instrumentation | |
CN113791789A (zh) | 一种通用浏览器上检测webgl上下文的方法 | |
Barth et al. | UGRAF3: a graphic system for process and modelling | |
Cidade Universitária et al. | A Tk OpenGL widget | |
Mascarenhas et al. | An architecture for visualization and user interaction in parallel environments | |
Wang | XNA-like 3D Graphics Programming on the Raspberry Pi | |
Chauhan | Management of Interactive Graphics Functionality Beyond “GKS” |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20040406 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040702 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20040802 |
|
A912 | Removal of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20040910 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070607 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070613 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070912 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20080407 |