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
Application number
JP10075522A
Other languages
English (en)
Inventor
M Brown John
ジョン・エム・ブラウン
W Dyer Don
ドン・ダブリュー・ダイヤー
Merotora Gautam
ガウタム・メロトラ
L Lang Carol
キャロル・エル・ラング
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH10320235A publication Critical patent/JPH10320235A/ja
Withdrawn 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/362Software debugging
    • G06F11/3636Software 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

(57)【要約】 【課題】関数/ルーチンへの多数の参照を伴うグラフィ
ックス呼び出しのトレース分析を効率的に実施する方法
を提供する。 【解決手段】プログラム実行の際に発せられる呼び出し
のうち少なくともトレースの対象として選択された呼び
出しを実行時にインターセプトして、該呼び出しに対応
する原始コード命令およびそれら呼び出しが参照するデ
ータを記録するが、その際、データは、原始命令コード
が記録される原始命令ファイルとは異なるデータ・ファ
イルに記録される。各呼び出しに対応する原始コードを
記録した後、インターセプトした呼び出しの複製の呼び
出しを発し、それによって、プログラムによって元々要
求されたプロシージャを呼び出すことができる。原始命
令ファイルはコンパイル可能であるので、プログラム・
エラーの分析が容易となる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、デジタル・データ
処理に関するもので、特に、コンピュータ・プログラム
によって発信された呼び出しをトレースして分析する方
法に関するものである。
【0002】
【従来の技術】長年にわたって、グラフィック画像を生
成するためコンピュータが使用されてきた。初期のコン
ピュータ・システムは、2次元でのみ画像を形成する能
力しか持っていなかったにもかかわらず、自動製図、地
図制作等の分野において受け入れらた。1970年代中
頃になると、3次元グラフィックス・システムが市場に
登場してきた。システムは非常に高価となり、専用ハー
ドウェアおよび特別仕様ソフトウェアを必要とする傾向
があった。
【0003】年の経過とともに、標準化されたグラフィ
ック・プログラミング・インタフェースおよびライブラ
リが市場において利用できるようになった。現在、アプ
リケーション・プログラムは、"OpenGL"使用に準拠する
ような業界標準グラフィックス・ライブラリで提供され
るサブルーチン(または関数)を呼び出すことによって、
3次元画像を生成するようにプログラムすることができ
る。3次元グラフィックス生成の相対的容易さのため、
例えばビジネス、技術および科学シミュレーション、ユ
ーザ・インタフェースおよびアニメーションに関するア
プリケーションが激増した。
【0004】3次元オブジェクトは(オブジェクトの稜
線だけが描画されている)"ワイヤ・フレーム"画像とし
て描かれる場合もあるが、すべての視覚可能な表面を描
出することが次第に一般的となりつつある。そのような
「立体」画像を描くための標準的技術は、線分、三角
形、正方形およびその他の多面体のような単純な幾何学
形状を基に、それら立体の表面を視覚的に構築する技術
である。例えば、机の画像は、実際の机の対応する表面
を表現するように並べて配置され、個別にテクスチャ模
様を付けられた何万または何十万もの小さい線分および
三角形を描くことによって、描画される。このようなタ
スクは、グラフィックス・ライブラリによって非常に単
純化されたとはいえ、立体画像の描出は、ライブラリに
対する数千または数百万もの呼び出しを必要とする場合
がある。
【0005】アプリケーション・プログラムがライブラ
リを利用する様態を分析する従来技術の呼び出しトレー
スは、プログラムによって発せられるライブラリに対す
るすべての呼び出しをトレースすることを必要とする。
【0006】コンピュータ・プログラマは、典型的に
は、プログラムをデバッグするため呼び出しトレースを
使用するが、それは期待するようには機能しない。ま
た、呼び出しトレース技術は、ライブラリにおけるどの
サブルーチンが最も頻繁に使用されるかを決定する際に
も使用される。これは、アプリケーション・プログラム
またはライブラリを調整または最適化するのに役立つ。
【0007】呼び出しトレースは、呼び出しが行われる
都度メッセージを画面表示または印刷するようにアプリ
ケーション・プログラム原始コードを修正することによ
って、通常達成される。別の形態としては、指定したブ
レークポイントにおいてそのような通知を自動的に作成
するデバッガの制御の下でプログラムを実行することに
よって、呼び出しトレースが達成される。
【0008】
【発明が解決しようとする課題】呼び出しトレースは多
くのコンピュータ・プログラムに関して効果的であると
はいえ、グラフィックス・アプリケーションにおいては
その価値は伝統的に高くなかった。グラフィックス・ラ
イブラリに対して発せられる呼び出しを識別できる時で
さえ、その数の少なさのため分析を実質的に不可能にさ
せる。これは、多くのグラフィックス呼び出しが、個別
的には総量としても大量のデータに相当する程には大き
くはないアレイおよび他のデータ構造を参照するという
事実によって一層悪化する。
【0009】従って、コンピュータ・プログラムによっ
て発せられる呼び出しを分析する方法の改善が必要とさ
れている。更に、アプリケーション・プログラムによる
グラフィックス・ライブラリの使用を分析する方法の改
善、および呼び出しトレースの方法の改善が必要とされ
ている。更にまた、上記必要性に関連して、ライブラリ
の使用特にグラフィックス・ライブラリの使用をデバッ
グ、調整または最適化する方法の改善が求められてい
る。
【0010】
【課題を解決するための手段】上記課題を解決するた
め、本発明は、コンピュータ・プログラムによって発せ
られる呼び出しを分析する改良された方法、特に、呼び
出しトレースを記録し分析する改良された方法を提供す
る。本発明の第1の側面に従って、そのような方法は、
コンピュータ・プログラムを実行するステップ、そのよ
うな実行の間に発せられる少くとも選択された呼び出し
に対応する原始コード命令を記録するステップ、および
それら呼び出しにおいて参照される少なくとも選択され
たデータを記録するステップを含む。この際、データ
は、原始コードとは別に、すなわち別のファイルに記録
される。
【0011】例えば、プログラムの実行の間に発せられ
る呼び出しは、呼び出されたプロシージャと同一の名前
を持つ「シェル」または「スタブ」によってインターセ
プトされる。インターセプトするプロシージャは、呼び
出しを生成した原始コード命令をファイルに記憶する。
インターセプトされた呼び出しにおいて参照されたデー
タは、別のファイルに書き込まれる。
【0012】各呼び出しに対応する原始コードが記録さ
れたならば、シェル・プロシージャは、インターセプト
された呼び出しを複製した呼び出しを発し、それによっ
て、プログラムによって元々要求されたプロシージャを
呼び出すことができる。本発明は、また、そのプロシー
ジャの実行時間を記録することができる。
【0013】上記方法は、また、1つまたは複数の原始
コード・ファイルに原始コード命令を記憶するステップ
を含む。各ファイルは、コンピュータ・プログラムの実
行の間に発せられる連続的呼び出しに対応する原始コー
ド命令を含む。このように、例えば、第1のファイル
は、プログラムによって発せられた第1の数千の呼び出
しに対応する原始コードを含み、第2のファイルが、プ
ログラムによって発せられた第2の数千の呼び出しに対
応する原始コードを含み、第n番目のファイルが、プロ
グラムによって発せられた第n番目の数千の呼び出しに
対応する原始コードを含む。
【0014】更に、上記方法において、インターセプト
された呼び出しにおける参照によってアクセスされるデ
ータは、データ・ファイルに記憶される。それらの呼び
出しに関する原始コード命令は、データ・ファイルの記
憶位置に対する該当する参照情報と共に、原始コード・
ファイルに書き込まれる。一方、値によってアクセスさ
れたデータは、対応する原始コード命令と共に、原始コ
ード・ファイルに書き込まれる。
【0015】本発明の第2の側面において、上記第1の
側面に従った本発明の方法が、グラフィックス・ライブ
ラリに対してコンピュータ・プログラムによって発せら
れた呼び出しを分析するステップを含む。
【0016】該方法は、更に、コンピュータ・プログラ
ムの実行を分析するステップを含む。そのような分析
は、原始コード・ファイルに保持される命令をコンパイ
ルし実行するステップを含み、また、呼び出しによって
描出される命令シーケンスにおける1つまたは複数のグ
ラフィックス・プリミティブを識別するステップ、それ
らのプリミティブが描出される混合グラフィック状態を
識別するステップ、および、その状態において描出され
るプリミティブと共にそれらの混合グラフィック状態の
うちの少なくとも1つを報告するステップを含む。
【0017】
【発明の実施の形態】図1は、本発明を実施するために
使用されるタイプのデジタル・データ処理システム5を
示す。システム5は、背面またはバス18によって相互
に接続された中央処理装置12、ランダムアクセス・メ
モリ14および入出力コントローラ16を有するデジタ
ル・データ・プロセッサ10を含む。データおよび制御
情報の入力のため、キーボード22およびポインティン
グ・デバイス24が、他の入力装置(図示されていない)
と共に、入出力コントローラ16を経由してコンピュー
タ10に接続されている。コンピュータ10は、また、
情報のアクセスおよび記憶のため、他の静的記憶装置
(図示されていない)と共に、ディスク・ドライブ26を
接続している。同様に、モニタ28が、他の出力装置
(図示されていない)と共に、3次元グラフィックスのよ
うな情報の表示のため、コントローラ16に接続されて
いる。
【0018】図示されたシステム5は、コンポーネント
10−28を含め、いかなる既知の汎用または専用コン
ピュータ・システムであってもよい。システムは、好ま
しくは、プログラムによって発せられるライブラリ呼び
出しの分析のため、特に、グラフィックス・アプリケー
ション・プログラムによって発せられるグラフィックス
・ライブラリ呼び出しの分析のため、本発明の教示に従
ってプログラムされまたは動作制御される3次元グラフ
ィック表示可能なワークステーションである。
【0019】図2に示されるように、図1のデジタル・
データ処理システム5は、例えば入力装置22、24を
経由してユーザから受け取る命令に応答して、例えば机
の3次元画像生成のような特定のグラフィックス・タス
クを実行するアプリケーション・プログラム30を実行
する。出力装置28へのグラフィックス生成を実行する
ため、アプリケーション・プログラム30は、グラフィ
ックス・ライブラリ32に含まれるプロシージャに対す
る呼び出しを生成する。
【0020】図示されているアプリケーション・プログ
ラム30は、例えば机のような特定のオブジェクトの画
像を作成し取り扱う専用コンピュータ・プログラムを表
すと見ることもできる。また、それは、ユーザによって
出されたコマンドまたはマクロ・シーケンスに応答して
オブジェクトの画像を生成する機能を持つCADプログ
ラムまたはその他の汎用グラフィックス・プログラムを
表すものと見ることもできる。
【0021】グラフィックス・ライブラリ32は、グラ
フィックスの表示のため(ハードウェアに依存した)デー
タ構造を維持しコマンドを発する手続き的またはオブジ
ェクト指向的なプロシージャおよびデータ構造の任意の
セットを表す。このライブラリは、OpenGLアプリケーシ
ョン・プログラム・インタフェース(API)仕様のよう
ないかなる業界標準にも準拠して動作することができ
る。同様に、それは、いかなるベンダ特有規格またはア
ドホック標準に従っても動作することができる。
【0022】図示されているライブラリ32は、また、
上記諸機構と共に使用される文脈および他の環境特有ル
ーチンを描出するウインドウ管理を含む。そのようなル
ーチンは、OpenGL仕様に準拠するような公式なグラフィ
ックス・ライブラリに常に含まれているとは限らない点
は当業者に理解されることであろう。しかしながら、そ
のようなルーチンは、典型的には、その下でホスト・シ
ステム5が動作するハードウェアまたはオペレーティン
グ・システムのために備えられる補助ライブラリの形式
で提供される。そのような補助ライブラリの例には、ウ
インドウズ32ビット環境(すなわちウインドウズ95
およびウインドウズNT)におけるOpenGLの使用を許容
するWGLライブラリおよびユニックス環境におけるOpenG
Lの使用を許容するGLXライブラリが含められる。
【0023】本発明の好ましい実施形態がグラフィック
ス・ライブラリ32の使用を分析するように意図されて
はいるが、本発明はそのように制約されることはない。
ライブラリ、独立ルーチン、組み込みルーチンあるいは
その他に対して、いかなる命令シーケンスによってでも
発せられる呼び出しを分析することに、本発明は、同等
に適用することができる。本明細書で使用される用語
「ルーチン」は、サブルーチン、関数、プロシージャ、
または、実行可能な命令シーケンスのその他の入口点を
指す。
【0024】実行の間にアプリケーション・プログラム
30によって発せられる少くとも選択された関数、プロ
シージャまたは他の呼び出し(集合的に、「プロシージ
ャ呼び出し」または「呼び出し」)は、インターセプタ
34によって捕捉され、レコーダ36によって記録され
る。これらの呼び出しは、図2において「トレース対象
呼び出し」として標記されている。本実施形態におい
て、これら呼び出しは、グラフィックス・ライブラリ3
2に対するすべての呼び出しを含む。他の実施形態にお
いては、これら呼び出しがその他のライブラリまたはル
ーチンに対する呼び出しを含むこともできる。トレース
対象呼び出しは、以下に述べるように、記録され、分析
され、更に、ライブラリ32による処理のため再発信さ
れる。
【0025】アプリケーション・プログラム30によっ
て発せられるその他の呼び出しは、本発明に従って処理
されない。これらは、図2において「トレース非対象」
と標記されている。本実施形態において、これらは、フ
ァイル・システム、数式ライブラリなどに対する呼び出
しを含む。トレース非対象呼び出しは、従来技術の方法
で、それぞれのライブラリ(または複数ライブラリ)38
へ渡される。
【0026】インターセプタ34およびレコーダ36
は、コントローラ38の制御の下で動作し、コントロー
ラは、操作員が記録動作を実行可能または実行不可にす
るために使用するインタフェースを(入力装置22、2
4およびモニタ28経由で)提供する。コントローラ3
8は、また、操作員が原始コード・ファイル40および
データ・ファイル42のファイル名を指定することを可
能にさせる。
【0027】インターセプタ34は、捕捉されるべきト
レース対象呼呼び出しと同一の名前およびパラメータを
持つ「シェル」または「スタブ」プロシージャの集合で
ある。シェル・プロシージャは、ライブラリ32に先立
ちアプリケーション・プログラム30に動的にリンクさ
れるライブラリ(すなわちDLL)として好ましくは実施
される。
【0028】図3のステップ50を参照すれば、このよ
うな動的リンクを実行するため、操作員は、ホスト・プ
ロセッサ12にコマンドを発して、グラフィックス・ラ
イブラリ32からシェル・プロシージャを保有するファ
イルまたはディレクトリへ呼び出しを向け直すように要
求することができる。次に一旦アプリケーション・プロ
グラムの実行が始動されると(ステップ52)、トレース
される呼び出しが生成され、それら呼び出しはシェル・
プロシージャによってインターセプトされる(ステップ
56)。
【0029】シェル・プロシージャのアプリケーション
・プログラム30へのリンクは、上記以外の種々の既知
の方法で実行できることは当業者に認められるであろ
う。また、アプリケーション・プログラム30によって
発せられる呼び出しの識別をインターセプタ・エレメン
ト34が上述以外の方法で実施することができる点も当
業者に認められることであろう。例えば、レコーダ・エ
レメント36に呼び出しを通知する付加的ステートメン
トまたはその他の機能性をアプリケーション・プログラ
ム30またはライブラリ32へ組み込むことによって、
インターセプタ・エレメント34を実施することもでき
る。
【0030】インターセプタ・エレメント34は、トレ
ース対象呼び出しを捕捉すると、操作員がコントローラ
38に発した命令によって記録機能が使用可能とされて
いる場合、プロシージャ名およびパラメータ・リストを
レコーダ36に渡す(ステップ58−60)。記録機能の
使用が可能であろうと不可であろうと、インターセプタ
34は、インターセプトした呼び出しを使用してグラフ
ィックス・ライブラリ32を呼び出し(ステップ62)、
アプリケーション・プログラム30が通常形態で動作す
ることを可能にし、一方、インターセプタ34およびレ
コーダ36はトレース対象呼び出しをトレースする。
【0031】レコーダ36が連続したプロシージャ名お
よびパラメータ・リストをインターセプタ34から受け
取ると、レコーダ36は、対応する原始コード・ステー
トメントを原始ファイル40に記録する。結果として、
ファイル40は,アプリケーション・プログラム30に
よって発せられた呼び出しのトレースのみならず、発せ
られた呼び出しの「ハードコードされた」シーケンス、
すなわち明示的シーケンスを提供するコンパイル可能な
呼び出しトレースを特に含む。
【0032】ある意味では、レコーダ36はトレース対
象呼び出しを「逆コンパイル」し、実行命令から原始コ
ードに戻すように変換する。しかしながら、オブジェク
ト・コードが将来実行されるか否かとは無関係にそのコ
ードを変換する従来技術の逆コンパイラとは相違して、
レコーダ36は、トレース対象呼び出しのうちの1つが
実行される度毎に原始コードを生成することができる。
【0033】例を示せば、アプリケーション・プログラ
ム30が、座標(-1,0,2)、(O,1,2)および(0,0,4)という
頂点を持つ三角形を描くためライブラリ32に呼び出し
を発すると仮定すれば、レコーダは、原始コード・ファ
イルへ以下の表1のような、対応する原始コードの連続
行を書き込む。
【0034】
【表1】
【0035】原始コード・ファイル40は、テキスト・
ファイル、ワープロ・ファイル、アプリケーション・プ
ログラム開発ファイルまたは原始コードを記憶すること
ができるその他どのようなファイルあるいは記憶領域で
もよい。好ましくは、ファイル40は、アプリケーショ
ン・プログラムに対応する原始コードを記憶するためシ
ステム5によって通常使用されるタイプのものである。
【0036】レコーダ38の動作が図4に示されてい
る。ステップ64において、レコーダは、インターセプ
トされた呼び出しが、図面がそこに描出されるべきグラ
フィカル・ウィンドウを参照しているか否かを判断す
る。そうであれば、呼び出しは図6に示される方法に従
って処理される。すなわち、適切なウインドウを作成し
維持するために必要な、あるいはウインドウそのものが
適用する描出文脈を確立するために必要なすべての呼び
出しおよび原始コード命令が原始コード・ファイル40
へ書き込まれる。原始コード・ファイル40が(例えば
別のシステム上でのグラフィックス生成のテストを可能
にするような場合のように)別の機械環境における使用
のため最終的にコンパイルされ実行される場合には、レ
コーダ38は、そのような他の環境にあった適切なウイ
ンドウおよび描出文脈命令にそれを変更することができ
る。
【0037】図6を参照すれば、ステップ92−98に
おいて、レコーダは、インターセプトされた呼び出しが
新しい図形を参照しているか否かを判断し、そうであれ
ば、その図形を選択するため原始コード・ファイル40
にその原始コードを書き込む。ステップ94−98は、
X11ウインドウ・システムに適用可能なステップであ
り、原始コード・ファイル40が最終的に使用される機
械環境に従って、直接または類似命令を使用し適応され
ることができる。
【0038】ステップ92において、レコーダはインタ
ーセプトされた呼び出しがレコーダによってそれまでに
識別されなかった図形(すなわち「新しい」図形)を参照
しているか否かを判断する。そうであれば、ステップ9
4において、レコーダは図形の属性を取得するためウィ
ンドウ・システムに照会を行う。ステップ96におい
て、レコーダは図形に名前を割り当て、(将来の原始コ
ード参照のため)その名前を記録する。ステップ98に
おいて、レコーダは画像を選択する原始コードをファイ
ル40に書き込む。X11ウィンドウ・システムを活用
するデジタル・データ処理システムに適用できるそのよ
うな原始コードの例は次の表2の通りである。
【0039】
【表2】 { int buf[11] = {GLX_RGBA,GLX_DOUBLEBUFFER,GLX_RED_SIZE,8, GLX_GREEN_SIZE,8,GLX_BLUE_SIZE,8, GLX_STENCIL_SIZE,1,0} if (!vis0) vis0 = glXChooseVisual(display,0,buf); }
【0040】ステップ100において、レコーダはイン
ターセプトされた呼び出しがレコーダによってそれまで
に識別されなかった文脈(すなわち「新しい」文脈)を参
照しているか否かを判断する。そうであれば、ステップ
102において、レコーダは文脈に名前を割り当てその
名前を記録する。その後、ステップ104において、レ
コーダは文脈を作成する原始コードをファイル40に書
き込む。X11ウィンドウ・システムを活用するデジタ
ル・データ処理システムに適用できるそのような原始コ
ードの例は次の表3の通りである。
【0041】
【表3】 if (!cxt0) cxt0 = glXCreateContext(display,visO,NULL,True);
【0042】ステップ106において、レコーダはイン
ターセプトされた呼び出しがレコーダによってそれまで
に識別されなかったウインドウ(すなわち「新しい」ウ
インドウ)を参照しているか否かを判断する。そうであ
れば、ステップ108において、レコーダはウインドウ
の属性を取得するためウィンドウ・システムに照会を行
う。ステップ110において、レコーダはウインドウに
名前を割り当てその名前を記録する。ステップ112に
おいて、レコーダはウインドウを選択する原始コードを
ファイル40に書き込む。X11ウィンドウ・システム
を活用するデジタル・データ処理システムに適用できる
そのような原始コードの例は次の表4の通りである。
【0043】
【表4】 if (!draw0) { Colormap cmap; XSetWindowAttributes swa; XEvent event; cmap = XCreateColormap(display,RootWindow(display,vis0->screen), visO->visual,AllocNone); swa.colormap = cmap; swa.borderpixel = 0; swa.event_mask = StructureNotifyMask; drawO = XCreateWindow(display;RootWindow(display,vis0->screen),50,50, 750,650,0,vis0->depth,InputOutput,visO->visual, CWBorderPixel|CWColormap|CWEventMask,&swa); }
【0044】ステップ114において、レコーダは、す
べてのアクティブ・ウインドウに対して順次以下の処理
を実行するループ処理を始める。ステップ116におい
て、レコーダは(アプリケーション・プログラム30と
共に)ウィンドウの実際の状態がレコーダにとって既知
のものと同じか否かを判断する。もしそうであれば、レ
コーダは次のウィンドウに関する処理へ進む。既知のも
のと同じでなければ、ステップ118において、レコー
ダはウィンドウの状態についてその記録を更新し、ステ
ップ120において、記録された原始コードにおけるそ
のウィンドウの状態を更新する原始コードをファイル4
0に書き込む。X11ウィンドウ・システムを活用する
デジタル・データ処理システムに適用できるそのような
原始コードの例は次の表5の通りである。ステップ11
4−120のループ処理の後、処理の流れの制御は図4
のステップ70へ戻される。
【0045】
【表5】 if (!drawO_mapped) { XEvent event; XMapRaised(display,drawO); XIfEvent(display,&event,WaitForNotify;(char*) drawO); drawO_mapped = True; } { XWindowChanges values; values.stack_mode = Toplf; XConfigureWindow(display,drawO,CWStackMode,&values); }
【0046】上記で指摘したように、アプリケーション
・プログラムは、単一の3次元画像の生成の間に、場合
によっては、グラフィックス・ライブラリに対する何千
または何百万もの呼び出しを発する。単一の原始コード
・ファイルにおいて単一の関数またはサブルーチンに対
してそのように多数の行を書くことは、デジタル・デー
タ処理システム5の上で提供されるファイル・システ
ム、コンパイラまたは他のアプリケーション開発ツール
を混乱させる可能性がある。従って、レコーダは、ファ
イルと共に個々の原始コード関数のサイズを減少させる
メカニズムを備える。
【0047】そのようなメカニズムの1つは、少なくと
も選択されたデータを、それらデータを参照する(イン
ターセプトされた)呼び出しとは分離して記憶すること
である。具体的には、ステップ70において、レコーダ
は、インターセプトされた呼び出しがデータを参照して
アクセスするか否か、より具体的にいえば呼び出しが参
照によるパスまたはアドレス・パラメータによるパスを
含んでいるか否かを判断する。そうであれば、ステップ
72−76において、レコーダは、(例えばインターセ
プトされた呼び出しで供給されたアドレスを使用して)
それらのデータを取得し、好ましくは圧縮した形式でデ
ータ・ファイル42に記憶する。ステップ78におい
て、レコーダは、インターセプトされた呼び出しに対応
する原始コード命令を原始コード・ファイル42に書き
込む。レコーダは、インターセプトされた呼び出し自体
に供給されるものと同じアドレスを使用するのではな
く、レコーダは、データ・ファイル42における対応す
るデータのアドレスを代用する。好ましい実施形態にお
いて、データ・ファイル42はバイナリ・ファイルであ
る。それが、テキスト・ファイルまたはその他のファイ
ルあるいはデータを記憶すことができるどのようなタイ
プの記憶領域でもよい点は当業者に理解されることであ
ろう。
【0048】原始ルーチンおよび原始コード・ファイル
40のサイズを減少させるため本発明によって提供され
るもう1つのメカニズムは、分割である。単一関数また
はサブルーチンに対するすべての原始コードを単一ファ
イルに書き込むのではなく、レコーダ36は、連続的サ
ブルーチン(すなわちサブ関数)に対する原始コードの連
続的バッチを連続的原始コード・ファイル40に書き込
む。本発明の好ましい実施形態において、各サブ関数は
約1000行の長さであり、各原始コード・ファイルは
最高約50のサブ関数を含む(原始コード・ファイル当
たり合計約50,000行までの原始コードとなる)。当
然のことながら、その他のバッチ・サイズが使用可能で
あることは当業者に認められるであろう。複数の連続し
たサブ関数の実行を調整するため、レコーダ36は、実
際と疑似のOpenGL呼び出しを使用してそれらのサブ関数
を連続して呼び出すマスタ原始コード・ファイルを生成
する。以下の表6は、マスタ原始コード・ファイルの1
例である。
【0049】
【表6】 但しglXXXXX(xxx,xxx,xxxx)は、いかなる許容可能原始
ステートメントでもよく、好ましくはライブラリ32へ
の呼び出しを表す。
【0050】図5は、原始コード・ファイル40を分割
するためレコーダによって使用される好ましい方法の流
れ図である。ステップ80において、レコーダは、現在
次サブ関数に書き込まれる行数を標示する行カウントを
増分する。ステップ82において、そのカウントが例え
ば1000のような事前に設定された最大数より小さい
か否か検査され、小さければ、現在インターセプトされ
た呼び出しに対応する原始コードが現在時サブ関数に書
き込まれる(ステップ84)。一方、ステップ82におい
てカウントが事前設置された最大数を超えると判断され
ると、現在時サブ関数は閉じられ(ステップ86)、関数
カウントが増分される(ステップ81)。ステップ83に
おいて、レコーダは、関数カウントが例えば50のよう
なしきい値を上回っているか否か検査する。上回ってい
れば、レコーダは、現在時原始コード・ファイルを閉
じ、新しいファイルを開き(ステップ85)、関数カウン
トをリセットする(ステップ87)。上回っていなけれ
ば、レコーダは、現在時ファイルにおいて、適切なサブ
ルーチン宣言を用いて新しいサブ関数を開始する(ステ
ップ88)。同時に、行カウントはゼロにリセットされ
る(ステップ89)。新しいサブ関数に書き込まれる原始
コードが呼び出されるこを保証するため、マスタ原始コ
ード・ファイルは、それに対する呼び出しを含むように
更新される(ステップ90)。最後に、ステップ84にお
いて、インターセプトされた呼び出しに関する原始コー
ドが現在時サブファイルに書き込まれる。
【0051】図4のステップ64およびステップ70に
戻ると、インターセプトされた命令がウィンドウを参照
してなく、かつ、参照によってデータをアクセスしない
とすれば、レコーダは、ステップ68において、原始コ
ード・ファイル40に対する(インターセプトされた)呼
び出しに対応する命令を記録する。このように、例え
ば、値によってデータにアクセスする呼び出しに対応す
る原始コードが、(参照されたデータと共に)ファイル4
0に記憶される。
【0052】上述の動作に従って、(コントローラ38
の下)アプリケーション・プログラム30の実行が止め
られたかあるいは記録動作が使用不可状態にされた後、
原始コード・ファイル40およびデータ・ファイル42
に記憶された情報は、アプリケーション・プログラム3
0およびライブラリ32を分析するため活用されること
ができる。より具体的にいえば、その情報は、アプリケ
ーション・プログラムの呼び出しシーケンスまたはライ
ブラリ32の使用様態の分析を可能にする。
【0053】最低限、ファイル40に含まれる原始コー
ド・ステートメントは、アプリケーション・プログラム
30によって発せられたライブラリ32に対する呼び出
しのトレース情報を提供する。しかしながら、従来技術
のトレースと相違して、それらのファイルはコンパイル
可能である。このように、それらは、デジタル・データ
処理システム5または別のシステム44でコンパイルさ
れ、実行されることができる。この利点は、プログラマ
が、アプリケーション・プログラムの、特にトレースさ
れたライブラリに関連する側面を、例えばシステム5の
上で、テストすることを可能にする点である。例えばア
プリケーション・プログラム32の通常の実行が予期せ
ぬ程緩慢となるかあるいは壊れる場合、ファイル40に
おけるコンパイル可能なトレースの実行は、プログラマ
が原因を分離する作業を助ける。もう1つの利点は、ト
レースされた呼び出しが他のシステム例えばシステム4
4と互換性を持っているか否かをプログラマが判断する
ことを可能にさせる点である。
【0054】本発明は、また、アナライザ46の使用を
介してファイル40における原始コードの分析に対処す
る。アナライザ46は、原始コード・ファイル40の実
行の間に発せられたグラフィックス呼び出しをインター
セプトして、(照明、遮光、テクスチャなどのような)グ
ラフィック状態とともに、そのような実行によって描出
されるプリミティブを識別することができる。代替的形
態として、アナライザ46は(コードを実際に実行せず
に)ファイル40に含まれる原始コードを直接解釈する
ことができる。アナライザ46は、また、好ましくは、
その分析の結果を報告する。アナライザは、プリミティ
ブが描出される状態別にプリミティブを分類表示するレ
ポートを生成することもできる。
【0055】以上、発明の課題を解決するため、例えば
グラフィック画像の生成の過程で発せられる呼び出しの
分析に適用可能なソフトウエア・ライブラリ使用様態を
分析する方法を記述した。上述の実施形態は単に例示の
目的から提示されたものであり、その修正を含むその他
の実施形態が本発明の範囲内にあることは認められるで
あろう。従って、例えば、上述の諸例は、OpenGLライブ
ラリにおいて提供される呼び出しに基づいているが、そ
の他のグラフィックまたは非グラフィック・ライブラリ
についても、また、(ライブラリの形態をしているかい
ないかに拘わらず)その他の個別ルーチンまたはルーチ
ンの集合についても本発明が使用され得ることは認めら
れるであろう。
【0056】本発明には、例として次のような実施様態
が含まれる。 (1)コンピュータ・プログラムによって発せられる呼
び出しを分析する方法であって、コンピュータ・プログ
ラムを実行するステップ(A)と、そのような実行の間に
発せられる少くとも選択された呼び出しに対応する原始
コード命令を記録するステップ(B)と、上記呼び出しに
よって参照される少なくとも選択されたデータを上記原
始コード命令と分離して記録するステップ(C)と、を含
む呼び出し分析方法。 (2)上記ステップ(B)が、1つまたは複数の原始コー
ド・ファイルに上記原始コード命令を記録するステップ
を含み、上記1つまたは複数の原始コード・ファイルの
各々が、コンピュータ・プログラムの実行の間に発せら
れる連続的呼び出しに対応する連続的原始コード命令を
含む、上記(1)に記載の呼び出し分析方法。 (3)上記ステップ(C)が、コンピュータ・プログラム
の実行の間に発せられる選択された呼び出しの参照によ
ってアクセスされるデータをデータ・ファイルに記録す
るステップを含む、上記(1)に記載の呼び出し分析方
法。 (4)上記ステップ(C)が、コンピュータ・プログラム
の実行の間に発せられる選択された呼び出しの値によっ
てアクセスされるデータを、原始コード命令と共に、記
録するステップを含む、上記(3)に記載の呼び出し分
析方法。 (5)コンピュータ・プログラムの実行の間に発せられ
る呼び出しをインターセプトするステップと、インター
セプトされた呼び出しが対象としていたルーチンへの呼
び出しを生成するステップと、を更に含む上記(1)に
記載の呼び出し分析方法。
【0057】(6)コンピュータ・プログラムによって
発せられるグラフィックス・ライブラリに対する呼び出
しを分析する方法であって、コンピュータ・プログラム
を実行するステップ(A)と、コンピュータ・プログラム
の実行の間に発せられるグラフィックス・ライブラリに
対する少なくとも選択された呼び出しに対応する原始コ
ード命令を1つまたは複数の原始コード・ファイルに記
録するステップ(B)と、を含み、上記1つまたは複数の
原始コード・ファイルの各々が、コンピュータ・プログ
ラムの実行の間に発せられる連続的呼び出しに対応する
連続的原始コード命令を含む、呼び出し分析方法。 (7)コンピュータ・プログラムの実行の間に発せられ
る選択された呼び出しの参照によってアクセスされる少
なくとも選択されたデータを、上記原始コード・ファイ
ルとは分離した1つまたは複数のデータ・ファイルに記
録するステップを更に含む、上記(6)に記載の呼び出
し分析方法。 (8)コンピュータ・プログラムの実行の間に発せられ
るグラフィックス・ライブラリに対する呼び出しをイン
ターセプトするステップと、インターセプトされた呼び
出しが対象としていたルーチンへの呼び出しを生成する
ステップと、を更に含む上記(7)に記載の呼び出し分
析方法。 (9)上記(6)に記載のステップ(A)が、グラフィッ
クス・ディスプレイ・ウィンドウに影響を及ぼすグラフ
ィックス呼び出しに応答して、インターセプトされた呼
び出しに対応する原始コード命令とともに、当該グラフ
ィックス・ディスプレイ・ウィンドウを作成し維持する
少なくとも1つの原始コード命令を原始コード・ファイ
ルへ記録するステップを含む、上記(8)に記載の呼び
出し分析方法。 (10)上記コンピュータ・プログラムのアドレス空間
への参照によってデータをアクセスするグラフィックス
呼び出しに応答して、上記ステップ(B)において上記デ
ータ・ファイルにおける記憶領域にデータを記録し、ス
テップ(A)においてグラフィックス呼び出しに対応し上
記データ・ファイルにおける記憶領域を参照する原始コ
ード命令を上記原始コード・ファイルに記録するステッ
プと、値によってデータにアクセスするグラフィックス
呼び出しに応答して、ステップ(A)において値によって
データにアクセスするグラフィックス呼び出しに対応す
る原始コード命令を上記原始コード・ファイルに記録す
るステップと、を含む、上記(9)に記載の呼び出し分
析方法。
【0058】
【発明の効果】本発明に従って原始コード・ファイルお
よびデータ・ファイルにそれぞれ記憶された情報を活用
して、アプリケーション・プログラムおよびライブラリ
を効率的に分析することができる。また、原始コード・
ファイルに記録されたアプリケーション・プログラムの
トレース情報は、コンパイル可能なため、従来技術に比
較して、プログラマが容易にプログラム・エラーの原因
を分離できる。
【図面の簡単な説明】
【図1】本発明が実施されるタイプのデジタル・データ
処理システムを示すブロック図である。
【図2】コンピュータ・プログラムの呼び出しを分析す
る本発明の方法を実施するソフトウェアの構造を示す
【図3】本発明に従ったシステムにおいてトレース呼び
出しをインターセプトする方法を示す流れ図である。
【図4】本発明に従ったシステムにおいてトレース呼び
出しを記録する方法を示す流れ図である。
【図5】本発明に従ったシステムにおいて原始コード・
ファイルに書き込まれた原始コードを細分化する方法を
示す流れ図である。
【図6】本発明に従ったシステムにおいてウインドウ機
能および文脈関連原始コードを生成する方法を示す流れ
図である。
【符号の説明】
5 デジタル・データ処理システム 10 デジタル・データ・プロセッサ 12 中央処理装置 14 ランダムアクセス・メモリ 16 入出力コントローラ 18 バス 22 キーボード 24 ポインティング・デバイス 26 ディスク・ドライブ 28 モニタ 30 グラフィックス・アプリケーション・プログラ
ム 32、38 ライブラリ 34 インターセプタ 36 レコーダ 38 コントローラ 40 原始ファイル 42 データ・ファイル 44 別のシステム 46 アナライザ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ガウタム・メロトラ アメリカ合衆国80524コロラド州フォー ト・コリンズ、エミス・ストリート 1405 (72)発明者 キャロル・エル・ラング アメリカ合衆国80525コロラド州フォー ト・コリンズ、ターマン・ストリート 221

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】コンピュータ・プログラムによって発せら
    れる呼び出しを分析する方法であって、 コンピュータ・プログラムを実行するステップと、 そのような実行の間に発せられる少くとも選択された呼
    び出しに対応する原始コード命令を記録するステップ
    と、 上記呼び出しによって参照される少なくとも選択された
    データを上記原始コード命令と分離して記録するステッ
    プと、 を含む呼び出し分析方法。
JP10075522A 1997-03-27 1998-03-24 呼び出し分析方法 Withdrawn JPH10320235A (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (2)

* Cited by examiner, † Cited by third party
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