JPH09237202A - デバッグ処理実行方法 - Google Patents
デバッグ処理実行方法Info
- Publication number
- JPH09237202A JPH09237202A JP9006497A JP649797A JPH09237202A JP H09237202 A JPH09237202 A JP H09237202A JP 9006497 A JP9006497 A JP 9006497A JP 649797 A JP649797 A JP 649797A JP H09237202 A JPH09237202 A JP H09237202A
- Authority
- JP
- Japan
- Prior art keywords
- code
- application
- block
- conversion
- procedure
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/362—Debugging of software
- G06F11/3644—Debugging of software 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)
- Stored Programmes (AREA)
Abstract
(57)【要約】
【課題】デバッグ処理を行うアプリケーションによって
呼び出される可能性のある共有コードのすべてをコピー
するのではなく、実行時にアプリケーションによって実
際にアクセスされる共通コードのみをデバッグの際の実
行コードに変換する方法およびシステムを提供する。 【解決手段】コンピュータ・システムにおいて、当該コ
ンピュータ・システム内に存在する不特定多数のアプリ
ケーションによって利用されることができる状態にある
共有ライブラリ内の第1のコード・ブロックを利用する
第1のアプリケーションに関してデバッグ処理を実行す
るため、該第1のアプリケーションの実行中に上記第1
のコード・ブロックを動的に変換して変換コード・ブロ
ックを作成し、上記変換コード・ブロック内にブレーク
命令のようなデバッグ処理コードを配置する。
呼び出される可能性のある共有コードのすべてをコピー
するのではなく、実行時にアプリケーションによって実
際にアクセスされる共通コードのみをデバッグの際の実
行コードに変換する方法およびシステムを提供する。 【解決手段】コンピュータ・システムにおいて、当該コ
ンピュータ・システム内に存在する不特定多数のアプリ
ケーションによって利用されることができる状態にある
共有ライブラリ内の第1のコード・ブロックを利用する
第1のアプリケーションに関してデバッグ処理を実行す
るため、該第1のアプリケーションの実行中に上記第1
のコード・ブロックを動的に変換して変換コード・ブロ
ックを作成し、上記変換コード・ブロック内にブレーク
命令のようなデバッグ処理コードを配置する。
Description
【0001】
【発明の属する技術分野】本発明は、デバッグ・プログ
ラムに関するもので、特に、共有ライブラリ内のプロシ
ージャのような書き込み不可の目的コードにブレークポ
イントを作成するために使用される動的変換に関するも
のである。
ラムに関するもので、特に、共有ライブラリ内のプロシ
ージャのような書き込み不可の目的コードにブレークポ
イントを作成するために使用される動的変換に関するも
のである。
【0002】
【従来の技術】プログラムは一般に高水準プログラム言
語で書かれる。この高水準言語はしばしばソース・コー
ドと呼ばれ、コンパイラ・プログラムによってアセンブ
リ言語に変換される。目的コードと呼ばれるバイナリ形
式のアセンブリ言語は、コンピュータによって実際に実
行されるコード形式である。目的コードは一般に先ず目
的コード・モジュールの形式に作成され、それらがリン
カによってリンクされる。本明細書において、「コンパ
イル」あるいは「変換」という用語は、目的コード・モ
ジュールの作成および目的コード・モジュールのリンク
という両方のプロセスを含む。
語で書かれる。この高水準言語はしばしばソース・コー
ドと呼ばれ、コンパイラ・プログラムによってアセンブ
リ言語に変換される。目的コードと呼ばれるバイナリ形
式のアセンブリ言語は、コンピュータによって実際に実
行されるコード形式である。目的コードは一般に先ず目
的コード・モジュールの形式に作成され、それらがリン
カによってリンクされる。本明細書において、「コンパ
イル」あるいは「変換」という用語は、目的コード・モ
ジュールの作成および目的コード・モジュールのリンク
という両方のプロセスを含む。
【0003】コード・デバッガは、プログラマがコード
中のエラーを見いだすのを援助するプログラムである。
コード・デバッガは、コードのデバッグ処理の効率を向
上させるための非常に有用なツールである。コード・デ
バッガの重要な機能の1つは、プログラマがコードの実
行を停止し、コードが使用している各ユーザ資源におけ
る値を検査することを可能にすることである。典型的ユ
ーザ資源はソース・コードに定義されている変数であ
る。ユーザ資源における値は、プログラムが正しく動作
しない時の問題の発生源を示す手がかりを与える。
中のエラーを見いだすのを援助するプログラムである。
コード・デバッガは、コードのデバッグ処理の効率を向
上させるための非常に有用なツールである。コード・デ
バッガの重要な機能の1つは、プログラマがコードの実
行を停止し、コードが使用している各ユーザ資源におけ
る値を検査することを可能にすることである。典型的ユ
ーザ資源はソース・コードに定義されている変数であ
る。ユーザ資源における値は、プログラムが正しく動作
しない時の問題の発生源を示す手がかりを与える。
【0004】アプリケーションが現在実行中であるとす
れば、デバッガがアプリケーションの特定のアドレスに
ブレークポイント(中断位置)をセットするためには、そ
のアプリケーションは停止されなければならない。UN
IXオペレーティング・システムの下で動作するコンピ
ュータ・システムでは、典型的にはアプリケーションに
信号を送ることによってこの停止が行われる。アプリケ
ーションが停止されれば、デバッガは、その特定アドレ
スに現在存在する目的コードを、その位置に実行が到達
した時にその実行を停止させる特別な命令と置き換え
る。例えば、Precision Architecture Reduced Instruc
tion Set Computer(PA-RISC)命令セットを実行するよう
に設計されたコンピュータ・システムに関しては、典型
的にはブレーク(break)命令を使用して実行が停止させ
られる。このブレーク命令の詳細は、"PA-RISC 1.1 Arc
hitecture and Instruction Set Reference Manual", T
hirdEdition, Hewlett-Packard Company Part Number 0
9740-90039, p. 5-138に記載されている。
れば、デバッガがアプリケーションの特定のアドレスに
ブレークポイント(中断位置)をセットするためには、そ
のアプリケーションは停止されなければならない。UN
IXオペレーティング・システムの下で動作するコンピ
ュータ・システムでは、典型的にはアプリケーションに
信号を送ることによってこの停止が行われる。アプリケ
ーションが停止されれば、デバッガは、その特定アドレ
スに現在存在する目的コードを、その位置に実行が到達
した時にその実行を停止させる特別な命令と置き換え
る。例えば、Precision Architecture Reduced Instruc
tion Set Computer(PA-RISC)命令セットを実行するよう
に設計されたコンピュータ・システムに関しては、典型
的にはブレーク(break)命令を使用して実行が停止させ
られる。このブレーク命令の詳細は、"PA-RISC 1.1 Arc
hitecture and Instruction Set Reference Manual", T
hirdEdition, Hewlett-Packard Company Part Number 0
9740-90039, p. 5-138に記載されている。
【0005】ブレーク命令が目的コードに配置された
後、アプリケーションは実行を再開することができる。
アプリケーションの実行がこの特定アドレスに達すると
ブレーク命令に出会い、アプリケーションの実行が停止
される。その時点で、デバッガに制御が与えられる。デ
バッガがブレーク命令をその特定アドレスに元々存在し
ていた命令と置き換えることによって、その特定アドレ
スにおけるブレークポイントが削除される。
後、アプリケーションは実行を再開することができる。
アプリケーションの実行がこの特定アドレスに達すると
ブレーク命令に出会い、アプリケーションの実行が停止
される。その時点で、デバッガに制御が与えられる。デ
バッガがブレーク命令をその特定アドレスに元々存在し
ていた命令と置き換えることによって、その特定アドレ
スにおけるブレークポイントが削除される。
【0006】ブレーク命令をアプリケーション・プログ
ラムに導入する上記の方式は、最近開発されて来たアプ
リケーション・プログラム・アーキテクチャによって複
雑となった。すなわち、最近のアプリケーション・プロ
グラムは、共通タスクを実行する共有および再使用可能
コード層の外側にしばしば構築される。例えば、表示ウ
インドウ管理コード、データベース・コードおよび統計
解析コードは典型的には多くのアプリケーションによっ
て共有されるプロシージャ内に置かれる。プロシージャ
は、典型的には、共有ライブラリ(shared librariesを
略してSLと呼ばれる)または必要時ロード・ライブラ
リ(demand-loaded librariesを略してDLLと呼ばれ
る)の単位で実施される。共有ライブラリ内のプロシー
ジャは、典型的には、多くのアプリケーション・プログ
ラムによって共有される。
ラムに導入する上記の方式は、最近開発されて来たアプ
リケーション・プログラム・アーキテクチャによって複
雑となった。すなわち、最近のアプリケーション・プロ
グラムは、共通タスクを実行する共有および再使用可能
コード層の外側にしばしば構築される。例えば、表示ウ
インドウ管理コード、データベース・コードおよび統計
解析コードは典型的には多くのアプリケーションによっ
て共有されるプロシージャ内に置かれる。プロシージャ
は、典型的には、共有ライブラリ(shared librariesを
略してSLと呼ばれる)または必要時ロード・ライブラ
リ(demand-loaded librariesを略してDLLと呼ばれ
る)の単位で実施される。共有ライブラリ内のプロシー
ジャは、典型的には、多くのアプリケーション・プログ
ラムによって共有される。
【0007】共有ライブラリの使用は、デバッグ・プロ
グラムに関して問題を派生する。すなわち、共有ライブ
ラリの使用は、アプリケーション・プログラムがブレー
クポイントを設定することを困難にさせる。デバッガが
共有ライブラリの命令を特別なブレーク命令と置き換え
るとすれば、共有ライブラリを現在使用しているアプリ
ケーションのすべてが、誤ってブレークポイントに出会
い演算を停止させる可能性がある。
グラムに関して問題を派生する。すなわち、共有ライブ
ラリの使用は、アプリケーション・プログラムがブレー
クポイントを設定することを困難にさせる。デバッガが
共有ライブラリの命令を特別なブレーク命令と置き換え
るとすれば、共有ライブラリを現在使用しているアプリ
ケーションのすべてが、誤ってブレークポイントに出会
い演算を停止させる可能性がある。
【0008】
【発明が解決しようとする課題】上記のような問題を解
決するため、典型的には、デバッガの要求に応じて、オ
ペレーティング・システムが、デバッグされているアプ
リケーションによって使用されるすべての共有ライブラ
リの特別なコピーを作成する。他のアプリケーション
は、共有ライブラリのそのコピーにアクセスすることは
禁止される。しかし、これはデバッグを可能にする方法
として複雑で高価であるといえる。この方法は、それが
実際に実行されるか否かに関係なく共有コードのすべて
のコピーを作成することをオペレーティング・システム
に要求する。これは、オペレーティング・システムが、
アプリケーションによって使用される可能性のあるすべ
ての共有コードをコピーしなければならないだけでな
く、コピーされた共有コードが使用する可能性のある別
の共有コードをコピーし、更にそのまた共有コードをコ
ピーするというに次々とコピーを連鎖させなければなら
ないことを意味するので、上記の方法は膨大なコピー拡
大を招くこととなる。
決するため、典型的には、デバッガの要求に応じて、オ
ペレーティング・システムが、デバッグされているアプ
リケーションによって使用されるすべての共有ライブラ
リの特別なコピーを作成する。他のアプリケーション
は、共有ライブラリのそのコピーにアクセスすることは
禁止される。しかし、これはデバッグを可能にする方法
として複雑で高価であるといえる。この方法は、それが
実際に実行されるか否かに関係なく共有コードのすべて
のコピーを作成することをオペレーティング・システム
に要求する。これは、オペレーティング・システムが、
アプリケーションによって使用される可能性のあるすべ
ての共有コードをコピーしなければならないだけでな
く、コピーされた共有コードが使用する可能性のある別
の共有コードをコピーし、更にそのまた共有コードをコ
ピーするというに次々とコピーを連鎖させなければなら
ないことを意味するので、上記の方法は膨大なコピー拡
大を招くこととなる。
【0009】更に、共有コードがアプリケーションにと
って実際に要求されるまで認識できないような方法を共
有コード管理が用いる場合、そのタスクはデバッガにと
って極めて複雑である。例えば、結合(binding)の遅延
が利用されると、共有コードが実行時に使用される直前
までその共有コードのリンクが遅延される。このプログ
ラム技法は、ヒューレット・パッカード社のProgrammin
g onHP-UX, HP 9000 Series 700/800Computers, HP Par
t No. B2355-90652, January 1995, p 5-14に記載され
ている。この方法は、共有されるコード(およびその特
別のコピー)の必要性が実行時の前に明きらかでなくて
もよいということを意味する。この方法は、デバッガに
よる使用のため共有コードのコピーを作成する時点まで
にどの共有コードがアプリケーションによって使用され
る可能性があるのかをデバッガが判断することを極めて
困難にさせる。
って実際に要求されるまで認識できないような方法を共
有コード管理が用いる場合、そのタスクはデバッガにと
って極めて複雑である。例えば、結合(binding)の遅延
が利用されると、共有コードが実行時に使用される直前
までその共有コードのリンクが遅延される。このプログ
ラム技法は、ヒューレット・パッカード社のProgrammin
g onHP-UX, HP 9000 Series 700/800Computers, HP Par
t No. B2355-90652, January 1995, p 5-14に記載され
ている。この方法は、共有されるコード(およびその特
別のコピー)の必要性が実行時の前に明きらかでなくて
もよいということを意味する。この方法は、デバッガに
よる使用のため共有コードのコピーを作成する時点まで
にどの共有コードがアプリケーションによって使用され
る可能性があるのかをデバッガが判断することを極めて
困難にさせる。
【0010】従って、オペレーティング・システムがア
プリケーションによって呼び出される可能性のある共有
コードのすべてをコピーしなければならない従来技術の
問題を解決し、実行時にアプリケーションによってまた
はデバッガによって実際にアクセスされる共通コードの
み実際に変換される効率的デバッグ処理技術が必要とさ
れている。
プリケーションによって呼び出される可能性のある共有
コードのすべてをコピーしなければならない従来技術の
問題を解決し、実行時にアプリケーションによってまた
はデバッガによって実際にアクセスされる共通コードの
み実際に変換される効率的デバッグ処理技術が必要とさ
れている。
【0011】
【課題を解決するための手段】本発明に従って、コンピ
ュータ・システム内に存在する不特定多数のアプリケー
ションによって利用されることができる状態にある共有
ライブラリ内の第1のコード・ブロックを利用する第1
のアプリケーションがそのデバッグ処理の間に動的に変
換され、その変換コードが作成される。動的変換は、共
有ライブラリ内で使用される第1のコード・ブロックを
変換し、その変換コード・ブロックを作成することを含
む。この変換コード・ブロックは、上記動的に変換され
たアプリケーション・コード内に含まれる。次に、ブレ
ーク命令のようなデバッグ処理コードが上記変換コード
に追加される。
ュータ・システム内に存在する不特定多数のアプリケー
ションによって利用されることができる状態にある共有
ライブラリ内の第1のコード・ブロックを利用する第1
のアプリケーションがそのデバッグ処理の間に動的に変
換され、その変換コードが作成される。動的変換は、共
有ライブラリ内で使用される第1のコード・ブロックを
変換し、その変換コード・ブロックを作成することを含
む。この変換コード・ブロックは、上記動的に変換され
たアプリケーション・コード内に含まれる。次に、ブレ
ーク命令のようなデバッグ処理コードが上記変換コード
に追加される。
【0012】本発明の別の側面に従って、第1のアプリ
ケーションによって呼び出されるかまたはデバッガによ
って修正される共有ライブラリ内のコード・ブロックの
みが動的に変換される。この場合、第1のアプリケーシ
ョンに関する目的コードは動的に変換されることなく実
行される。
ケーションによって呼び出されるかまたはデバッガによ
って修正される共有ライブラリ内のコード・ブロックの
みが動的に変換される。この場合、第1のアプリケーシ
ョンに関する目的コードは動的に変換されることなく実
行される。
【0013】1つのコード・ブロックは、1つ以上の命
令からなる1つのグループである。従って、コード・ブ
ロックは、1つの命令、(コンパイラによって使用され
る「基本ブロック」と同等な)分岐によって終わる直線
的命令シーケンス、プロシージャ全体、あるいはその他
の命令群から構成される。本発明において、コード・ブ
ロックは、動的変換ルーチンによって活用される変換の
単位である。この変換単位は、例えば、プロシージャ、
基本ブロック、ページ、キャッシュ行、1つの命令ある
いはその他の命令群である。
令からなる1つのグループである。従って、コード・ブ
ロックは、1つの命令、(コンパイラによって使用され
る「基本ブロック」と同等な)分岐によって終わる直線
的命令シーケンス、プロシージャ全体、あるいはその他
の命令群から構成される。本発明において、コード・ブ
ロックは、動的変換ルーチンによって活用される変換の
単位である。この変換単位は、例えば、プロシージャ、
基本ブロック、ページ、キャッシュ行、1つの命令ある
いはその他の命令群である。
【0014】本発明は、従来技術に比較していくつかの
重要な利点を持つ。例えば、動的変換ルーチンは、実行
されるべきコードに関してのみ変換コードを作成する。
仮想的に存在するすべてのコードの大部分は、例外的事
象を扱うために存在するので、通常は実行されることは
ない。オペレーティング・システムがアプリケーション
によって呼び出される可能性のある共有コードのすべて
をコピーしなければならない従来技術の方法とは対照的
に、本発明においては、実行時にアプリケーションによ
ってまたはデバッガによって実際にアクセスされる共通
コードのみが実際に変換されるだけで済む。
重要な利点を持つ。例えば、動的変換ルーチンは、実行
されるべきコードに関してのみ変換コードを作成する。
仮想的に存在するすべてのコードの大部分は、例外的事
象を扱うために存在するので、通常は実行されることは
ない。オペレーティング・システムがアプリケーション
によって呼び出される可能性のある共有コードのすべて
をコピーしなければならない従来技術の方法とは対照的
に、本発明においては、実行時にアプリケーションによ
ってまたはデバッガによって実際にアクセスされる共通
コードのみが実際に変換されるだけで済む。
【0015】
【発明の実施の形態】図1は、コンパイラ・システムを
使用してアプリケーションの実行可能コードを作成する
一般的なコンピュータ・システムのブロック図である。
コンパイラ92は、ソース・コード91を受け取って中
間コード93を作成する。中間コードは、オブジェクト
(アセンブリ)言語命令のリストである。最適化ルーチン
94は、中間コード93を受け取って最適化されたオブ
ジェクト・コード95を作成する。リンカ96は、最適
化されたオブジェクト・コード95を受け取り、アプリ
ケーション実行可能コード41(単にアプリケーション
41とも呼ばれる)を作成する。アプリケーション実行
可能コード41は、コンピュータ・システム98によっ
て実行される。アプリケーション実行可能コード41と
並列的に実行されるデバッガを使用して、アプリケーシ
ョン実行可能コード41がデバッグされる。
使用してアプリケーションの実行可能コードを作成する
一般的なコンピュータ・システムのブロック図である。
コンパイラ92は、ソース・コード91を受け取って中
間コード93を作成する。中間コードは、オブジェクト
(アセンブリ)言語命令のリストである。最適化ルーチン
94は、中間コード93を受け取って最適化されたオブ
ジェクト・コード95を作成する。リンカ96は、最適
化されたオブジェクト・コード95を受け取り、アプリ
ケーション実行可能コード41(単にアプリケーション
41とも呼ばれる)を作成する。アプリケーション実行
可能コード41は、コンピュータ・システム98によっ
て実行される。アプリケーション実行可能コード41と
並列的に実行されるデバッガを使用して、アプリケーシ
ョン実行可能コード41がデバッグされる。
【0016】図2は、コンピュータ・システム上で実行
される種々のアプリケーションが共有ライブラリを利用
する形態を示す。アプリケーション41の実行可能コー
ド内で、プロシージャ呼出し43が共有ライブラリ46
内のプロシージャ48をポイントする。図2に示される
ように、共有ライブラリ内のプロシージャは、共有ライ
ブラリ内の他のプロシージャを呼び出すこともある。例
えば、プロシージャ48は、共有ライブラリ46内のプ
ロシージャ50に対する呼び出しを行う。同様に、プロ
シージャ50は、別の共有ライブラリ47内のプロシー
ジャ52に対する呼び出しを行う。
される種々のアプリケーションが共有ライブラリを利用
する形態を示す。アプリケーション41の実行可能コー
ド内で、プロシージャ呼出し43が共有ライブラリ46
内のプロシージャ48をポイントする。図2に示される
ように、共有ライブラリ内のプロシージャは、共有ライ
ブラリ内の他のプロシージャを呼び出すこともある。例
えば、プロシージャ48は、共有ライブラリ46内のプ
ロシージャ50に対する呼び出しを行う。同様に、プロ
シージャ50は、別の共有ライブラリ47内のプロシー
ジャ52に対する呼び出しを行う。
【0017】共有ライブラリ46および共有ライブラリ
47は、図2で示されるように共有ライブラリ47内の
プロシージャ51をポイントするプロシージャ呼出し4
4を含むアプリケーション42のような他のアプリケー
ションによっても利用される。プロシージャ51は、共
有ライブラリ47内のプロシージャ52に対する呼び出
しを行う。アプリケーション42は、また、共有ライブ
ラリ46内のプロシージャ49をポイントするプロシー
ジャ呼び出し45を含む。アプリケーション41をデバ
ッグするためデバッガが使用される時、デバッガはコン
ピュータのオペレーティング・システムに対し、アプリ
ケーションによって使用されるすべての共有ライブラリ
の特別なコピーを作成するように要求する。図3にこの
仕組みが図解されている。
47は、図2で示されるように共有ライブラリ47内の
プロシージャ51をポイントするプロシージャ呼出し4
4を含むアプリケーション42のような他のアプリケー
ションによっても利用される。プロシージャ51は、共
有ライブラリ47内のプロシージャ52に対する呼び出
しを行う。アプリケーション42は、また、共有ライブ
ラリ46内のプロシージャ49をポイントするプロシー
ジャ呼び出し45を含む。アプリケーション41をデバ
ッグするためデバッガが使用される時、デバッガはコン
ピュータのオペレーティング・システムに対し、アプリ
ケーションによって使用されるすべての共有ライブラリ
の特別なコピーを作成するように要求する。図3にこの
仕組みが図解されている。
【0018】図3において、ライブラリ・コピー66は
共有ライブラリ46の1つのコピーである。ライブラリ
・コピー66は、プロシージャ48、プロシージャ49
およびプロシージャ50のそれぞれのコピーであるプロ
シージャ68、プロシージャ69およびプロシージャ7
0を含む。ライブラリ・コピー67はまた共有ライブラ
リ47の1つのコピーである。ライブラリ・コピー67
は、プロシージャ51およびプロシージャ52のそれぞ
れのコピーであるプロシージャ71およびプロシージャ
72を含む。
共有ライブラリ46の1つのコピーである。ライブラリ
・コピー66は、プロシージャ48、プロシージャ49
およびプロシージャ50のそれぞれのコピーであるプロ
シージャ68、プロシージャ69およびプロシージャ7
0を含む。ライブラリ・コピー67はまた共有ライブラ
リ47の1つのコピーである。ライブラリ・コピー67
は、プロシージャ51およびプロシージャ52のそれぞ
れのコピーであるプロシージャ71およびプロシージャ
72を含む。
【0019】図3によって示されるように、アプリケー
ション41がデバッグされる時、プロシージャ呼出し4
3はライブラリ・コピー66内のプロシージャ68をポ
イントするように修正される。このように、他のアプリ
ケーションが間違ってブレークポイントに出会い演算を
停止させる危険を冒すことなくアプリケーション41、
ライブラリ・コピー66およびライブラリ・コピー67
にブレークポイントを置くことができる。アプリケーシ
ョン42は、共有ライブラリ46および共有ライブラリ
74へのプロシージャ呼出しを続行する。アプリケーシ
ョン42はライブラリ・コピー66またはライブラリ・
コピー67へのアクセスを許容されない。しかし、この
デバッグ方法は複雑で高価であると云える。更に、共有
コード管理が要求時ロード方法を使うと、コピーする必
要がある共有ライブラリを判断することさえ困難にな
る。
ション41がデバッグされる時、プロシージャ呼出し4
3はライブラリ・コピー66内のプロシージャ68をポ
イントするように修正される。このように、他のアプリ
ケーションが間違ってブレークポイントに出会い演算を
停止させる危険を冒すことなくアプリケーション41、
ライブラリ・コピー66およびライブラリ・コピー67
にブレークポイントを置くことができる。アプリケーシ
ョン42は、共有ライブラリ46および共有ライブラリ
74へのプロシージャ呼出しを続行する。アプリケーシ
ョン42はライブラリ・コピー66またはライブラリ・
コピー67へのアクセスを許容されない。しかし、この
デバッグ方法は複雑で高価であると云える。更に、共有
コード管理が要求時ロード方法を使うと、コピーする必
要がある共有ライブラリを判断することさえ困難にな
る。
【0020】図4は、本発明の1つの実施形態におい
て、共有ライブラリが利用される時のデバッグ・プロセ
スを単純化するためデバッグ・プロセス中に動的に変換
される実行可能コードの使用を示す。アプリケーション
実行可能コード41を実行させるのではなく、動的変換
ルーチン100を使用して実行時中に変換されたコード
(以下単に変換コードと呼ぶ)が作成される。アプリケー
ション実行可能コード41に含まれるコード・ブロック
が実行時に変換される。変換されたコード・ブロック
(同様に以下単に変換コード・ブロックと呼ぶ)は変換コ
ード101としてメモリに記憶される。変換コード10
1のメモリへの記憶によって、多数回実行される各コー
ド・ブロックがただ一度だけ実行時に変換されれば済む
ことになる。このアプローチによって、そのコードが実
行時の前に変換されることを不要としながら、コード・
ブロックが実行の度毎に変換されるオーバーヘッドを減
少させるという柔軟性が与えられる。
て、共有ライブラリが利用される時のデバッグ・プロセ
スを単純化するためデバッグ・プロセス中に動的に変換
される実行可能コードの使用を示す。アプリケーション
実行可能コード41を実行させるのではなく、動的変換
ルーチン100を使用して実行時中に変換されたコード
(以下単に変換コードと呼ぶ)が作成される。アプリケー
ション実行可能コード41に含まれるコード・ブロック
が実行時に変換される。変換されたコード・ブロック
(同様に以下単に変換コード・ブロックと呼ぶ)は変換コ
ード101としてメモリに記憶される。変換コード10
1のメモリへの記憶によって、多数回実行される各コー
ド・ブロックがただ一度だけ実行時に変換されれば済む
ことになる。このアプローチによって、そのコードが実
行時の前に変換されることを不要としながら、コード・
ブロックが実行の度毎に変換されるオーバーヘッドを減
少させるという柔軟性が与えられる。
【0021】変換コード101は、アプリケーション実
行可能コード41内に元々ある実行可能コードおよびア
プリケーション41によって利用される共有ライブラリ
46、47内のプロシージャの両方を含む。共有ライブ
ラリ46および共有ライブラリ47内のプロシージャ
は、実行時に実際に利用されるかまたはデバッガ99に
よってアクセスされる場合のみ変換され、変換コード1
01に追加される。デバッガ99は、実行可能コード4
1、共有ライブラリ46または共有ライブラリ47の範
囲内ではなく、変換コード101内にブレークポイント
を挿入する。このプロセスが図5に示されている。
行可能コード41内に元々ある実行可能コードおよびア
プリケーション41によって利用される共有ライブラリ
46、47内のプロシージャの両方を含む。共有ライブ
ラリ46および共有ライブラリ47内のプロシージャ
は、実行時に実際に利用されるかまたはデバッガ99に
よってアクセスされる場合のみ変換され、変換コード1
01に追加される。デバッガ99は、実行可能コード4
1、共有ライブラリ46または共有ライブラリ47の範
囲内ではなく、変換コード101内にブレークポイント
を挿入する。このプロセスが図5に示されている。
【0022】図5において、変換コード101は、アプ
リケーション41の実行可能コードの部分、および、ア
プリケーション41の実行時に変換される共有ライブラ
リ46ならびに47の部分を必要に応じて含む。具体的
には、プロシージャ呼出し43は変換コード101内の
プロシージャ呼出し63へ変換される。同様に、プロシ
ージャ48はプロシージャ78へ変換され、プロシージ
ャ50はプロシージャ80へ変換され、プロシージャ5
2はプロシージャ82へ変換される。図示されるよう
に、プロシージャ78、プロシージャ80およびプロシ
ージャ82はすべて変換コード101の範囲内にある。
変換コード101内には、また、デバッガ99が所望の
位置にブレークポイントを置く。未だ実行されていない
位置にブレークポイントを配置できるようにするため
に、アプリケーション41または共有ライブラリ内の適
切なコードが変換され、変換コード101に加えられ
る。一旦変換が行われると、デバッガ99は変換コード
内の所望の位置にブレークポイントを置く。
リケーション41の実行可能コードの部分、および、ア
プリケーション41の実行時に変換される共有ライブラ
リ46ならびに47の部分を必要に応じて含む。具体的
には、プロシージャ呼出し43は変換コード101内の
プロシージャ呼出し63へ変換される。同様に、プロシ
ージャ48はプロシージャ78へ変換され、プロシージ
ャ50はプロシージャ80へ変換され、プロシージャ5
2はプロシージャ82へ変換される。図示されるよう
に、プロシージャ78、プロシージャ80およびプロシ
ージャ82はすべて変換コード101の範囲内にある。
変換コード101内には、また、デバッガ99が所望の
位置にブレークポイントを置く。未だ実行されていない
位置にブレークポイントを配置できるようにするため
に、アプリケーション41または共有ライブラリ内の適
切なコードが変換され、変換コード101に加えられ
る。一旦変換が行われると、デバッガ99は変換コード
内の所望の位置にブレークポイントを置く。
【0023】図5はプロシージャ78、80および82
の全体が変換されることを示しているが、本発明の種々
の実施形態において必ずしもそうすることは必要でな
い。例えば、動的変換ルーチンがコードの基本ブロック
を使用する時、実際に必要とされるプロシージャの基本
ブロックだけが変換される。プロシージャの残りは、使
用されなければ、変換されない。
の全体が変換されることを示しているが、本発明の種々
の実施形態において必ずしもそうすることは必要でな
い。例えば、動的変換ルーチンがコードの基本ブロック
を使用する時、実際に必要とされるプロシージャの基本
ブロックだけが変換される。プロシージャの残りは、使
用されなければ、変換されない。
【0024】図6は、コンピュータ・システム7が動的
変換ルーチン100を使用してアプリケーション41を
実行する方法を示す簡略ブロック図である。上述のよう
に、動的変換ルーチン100は、コンパイラが実行時の
前に実行可能コードを作成するという点においてコンパ
イラと相違する。動的変換ルーチン100は、実行時に
変換コード101を作成する。アプリケーション41に
含まれるコード・ブロックが実行時に変換される。変換
されたコード・ブロックは、図6において変換コード1
01として示されている。変換コード101は、(キャ
ッシュ・メモリのような)メモリに記憶され、多数回実
行される各コード・ブロックがただ一度だけ実行時に変
換されれば済むことになる。このアプローチによって、
そのコードが実行時の前に変換されることを不要としな
がら、コード・ブロックが実行の度毎に変換されるオー
バーヘッドを減少させるという柔軟性が与えられる。
変換ルーチン100を使用してアプリケーション41を
実行する方法を示す簡略ブロック図である。上述のよう
に、動的変換ルーチン100は、コンパイラが実行時の
前に実行可能コードを作成するという点においてコンパ
イラと相違する。動的変換ルーチン100は、実行時に
変換コード101を作成する。アプリケーション41に
含まれるコード・ブロックが実行時に変換される。変換
されたコード・ブロックは、図6において変換コード1
01として示されている。変換コード101は、(キャ
ッシュ・メモリのような)メモリに記憶され、多数回実
行される各コード・ブロックがただ一度だけ実行時に変
換されれば済むことになる。このアプローチによって、
そのコードが実行時の前に変換されることを不要としな
がら、コード・ブロックが実行の度毎に変換されるオー
バーヘッドを減少させるという柔軟性が与えられる。
【0025】本発明の好ましい実施形態において、変換
コード101は、変換コード・キャッシュ20に記憶さ
れる。変換コード・キャッシュ20が一杯の時は、新た
に変換されるコード・ブロックのための空間を作るため
以前に変換されたコード・ブロックの一部を破棄する必
要があるかもしれない。これは、破棄されたコード・ブ
ロックが再び使用されるならば再変換することを必要と
するが、メモリ使用の潜在的節約をもたらす。代替的に
は、以前に変換されたコード・ブロックを破棄するので
はなく、それらをシステム・メモリに記憶することもで
きる。
コード101は、変換コード・キャッシュ20に記憶さ
れる。変換コード・キャッシュ20が一杯の時は、新た
に変換されるコード・ブロックのための空間を作るため
以前に変換されたコード・ブロックの一部を破棄する必
要があるかもしれない。これは、破棄されたコード・ブ
ロックが再び使用されるならば再変換することを必要と
するが、メモリ使用の潜在的節約をもたらす。代替的に
は、以前に変換されたコード・ブロックを破棄するので
はなく、それらをシステム・メモリに記憶することもで
きる。
【0026】図7は、アプリケーション41を動的に変
換して実行する動的変換/実行プロセス39の使用を示
す。変換が変換オブジェクト・コード101を作成す
る。上述のように、変換コード101は、アプリケーシ
ョン41によって呼び出された共有ライブラリ内の変換
コード・ブロックを含む。デバッガ99は、更に、ブレ
ークポイントのようなデバッグ情報を変換コード101
に追加する。
換して実行する動的変換/実行プロセス39の使用を示
す。変換が変換オブジェクト・コード101を作成す
る。上述のように、変換コード101は、アプリケーシ
ョン41によって呼び出された共有ライブラリ内の変換
コード・ブロックを含む。デバッガ99は、更に、ブレ
ークポイントのようなデバッグ情報を変換コード101
に追加する。
【0027】図7のアプリケーション41は、命令11
およびデータ12を含む。アプリケーション41内の命
令11の実行に伴って、プログラム・カウンタがアプリ
ケーション41内の新しいコード・ブロック13をポイ
ントする毎に、ステップ16において、新しいコード・
ブロック13が動的変換/実行プロセス39によって以
前処理されまたはデバッガによってアクセスされその結
果既に変換されているか否かが判断される。もし変換さ
れていなければ、ステップ18において、そのコード・
ブロックはホスト・コンピュータ・システムに適する目
的コードに変換される。その新しいコード・ブロック3
9が共有ライブラリ内のコード・ブロックに対する呼び
出しを含むならば、その呼び出しも変換される。次に、
ステップ17において、コード・ブロック13に関する
変換コードが実行される。
およびデータ12を含む。アプリケーション41内の命
令11の実行に伴って、プログラム・カウンタがアプリ
ケーション41内の新しいコード・ブロック13をポイ
ントする毎に、ステップ16において、新しいコード・
ブロック13が動的変換/実行プロセス39によって以
前処理されまたはデバッガによってアクセスされその結
果既に変換されているか否かが判断される。もし変換さ
れていなければ、ステップ18において、そのコード・
ブロックはホスト・コンピュータ・システムに適する目
的コードに変換される。その新しいコード・ブロック3
9が共有ライブラリ内のコード・ブロックに対する呼び
出しを含むならば、その呼び出しも変換される。次に、
ステップ17において、コード・ブロック13に関する
変換コードが実行される。
【0028】変換呼び出しが実行され、共有ライブラリ
が呼び出される時、共有ライブラリ内のコード・ブロッ
クは、未だ変換されていない場合、必要に応じて変換さ
れる。上述のように、コード・ブロックは、場合によっ
て、プロシージャ全体かプロシージャの一部である。プ
ロシージャ内のコードの一部が使用されるならば、変換
ルーチン100によって使用される変換の単位に従っ
て、プロシージャの使用部分だけが変換される。変換さ
れるべきコード・ブロックが既にホスト・コンピュータ
・システムに適した形式となっている場合もあるので、
その場合は、変換目的コードへデバッグ・コードを導入
するため単に目的コードから目的コードへ変換するだけ
でよい。
が呼び出される時、共有ライブラリ内のコード・ブロッ
クは、未だ変換されていない場合、必要に応じて変換さ
れる。上述のように、コード・ブロックは、場合によっ
て、プロシージャ全体かプロシージャの一部である。プ
ロシージャ内のコードの一部が使用されるならば、変換
ルーチン100によって使用される変換の単位に従っ
て、プロシージャの使用部分だけが変換される。変換さ
れるべきコード・ブロックが既にホスト・コンピュータ
・システムに適した形式となっている場合もあるので、
その場合は、変換目的コードへデバッグ・コードを導入
するため単に目的コードから目的コードへ変換するだけ
でよい。
【0029】図8は、動的変換/実行プロセス39によ
ってアプリケーションを実行するプロセスを更に示す。
ステップ21でアプリケーションの実行が開始する。ス
テップ22で、実行されるべき次のアプリケーション・
アドレスが調べられる。これは、例えばブロック情報マ
ップ25へのアドレスを使用することによって実施され
る。ブロック情報マップ25へのアドレスは、アプリケ
ーションにおけるコード・ブロックのエントリを含み、
加えてアプリケーションによって呼び出される共有ライ
ブラリ内のコード・ブロックのエントリを含むこともで
きる。本発明の好ましい実施形態においては、実行のた
め実際に必要とされるコード・ブロックに関するアドレ
スだけがブロック情報マップ25内に含まれる。これら
のアドレスは、コード・ブロックが必要とされる場合に
実行時に追加される。
ってアプリケーションを実行するプロセスを更に示す。
ステップ21でアプリケーションの実行が開始する。ス
テップ22で、実行されるべき次のアプリケーション・
アドレスが調べられる。これは、例えばブロック情報マ
ップ25へのアドレスを使用することによって実施され
る。ブロック情報マップ25へのアドレスは、アプリケ
ーションにおけるコード・ブロックのエントリを含み、
加えてアプリケーションによって呼び出される共有ライ
ブラリ内のコード・ブロックのエントリを含むこともで
きる。本発明の好ましい実施形態においては、実行のた
め実際に必要とされるコード・ブロックに関するアドレ
スだけがブロック情報マップ25内に含まれる。これら
のアドレスは、コード・ブロックが必要とされる場合に
実行時に追加される。
【0030】1つのコード・ブロックは、1つ以上の命
令からなる1つのグループである。従って、コード・ブ
ロックは、1つの命令、(コンパイラによって使用され
る「基本ブロック」と同等な)分岐によって終わる直線
的命令シーケンス、プロシージャ全体、あるいはその他
の命令群から構成される。本発明の好ましい実施形態に
おいて、コード・ブロックは、動的変換ルーチン100
によって活用される変換の単位である。この変換単位
は、例えば、プロシージャ、基本ブロック、ページ、キ
ャッシュ行、1つの命令あるいはその他の命令群であ
る。
令からなる1つのグループである。従って、コード・ブ
ロックは、1つの命令、(コンパイラによって使用され
る「基本ブロック」と同等な)分岐によって終わる直線
的命令シーケンス、プロシージャ全体、あるいはその他
の命令群から構成される。本発明の好ましい実施形態に
おいて、コード・ブロックは、動的変換ルーチン100
によって活用される変換の単位である。この変換単位
は、例えば、プロシージャ、基本ブロック、ページ、キ
ャッシュ行、1つの命令あるいはその他の命令群であ
る。
【0031】ブロック情報マップ25へのアドレスにお
ける各エントリは、アプリケーション内のコード・ブロ
ックまたは共有ライブラリ内のコード・ブロックの開始
アドレスを識別する第1のプログラム・アドレスを少な
くとも含む。加えて、各エントリは、アプリケーション
または共有ライブラリからのコード・ブロックに関する
ブロック情報を含むブロック情報テーブル26における
位置をポイントするブロック情報ポインタを含む。ブロ
ック情報テーブル26内のブロック情報は、そのコード
・ブロックに関する変換コードが存在すれば、変換コー
ドへのポインタを含む。
ける各エントリは、アプリケーション内のコード・ブロ
ックまたは共有ライブラリ内のコード・ブロックの開始
アドレスを識別する第1のプログラム・アドレスを少な
くとも含む。加えて、各エントリは、アプリケーション
または共有ライブラリからのコード・ブロックに関する
ブロック情報を含むブロック情報テーブル26における
位置をポイントするブロック情報ポインタを含む。ブロ
ック情報テーブル26内のブロック情報は、そのコード
・ブロックに関する変換コードが存在すれば、変換コー
ドへのポインタを含む。
【0032】実行されるべき次のアプリケーション・ア
ドレスを調べた後、ステップ23において、アプリケー
ションまたは共有ライブラリからのコード・ブロックに
関する変換コードが存在するか否かが判断される。これ
は、例えば、ブロック情報テーブル26から読み出され
た情報を用いて行われる。そのコード・ブロックに関す
る変換コードが存在しなけれあば、ステップ24におい
て、そのコード・ブロックは変換される。次に、変換コ
ードが実行される。
ドレスを調べた後、ステップ23において、アプリケー
ションまたは共有ライブラリからのコード・ブロックに
関する変換コードが存在するか否かが判断される。これ
は、例えば、ブロック情報テーブル26から読み出され
た情報を用いて行われる。そのコード・ブロックに関す
る変換コードが存在しなけれあば、ステップ24におい
て、そのコード・ブロックは変換される。次に、変換コ
ードが実行される。
【0033】変換コード・キャッシュ20を使用して、
変換コード・ブロックが効率的な実行のため保持され
る。変換コード・キャッシュ20によって保持されるコ
ード・ブロックの数は、例えば使用可能メモリに従っ
て、異なる。図8において、変換コード・キャッシュ2
0内のコード・ブロックは、コード・ブロック27、コ
ード・ブロック28およびコード・ブロック29によっ
て表されている。これらのコード・ブロックのいずれも
共有ライブラリからの変換プロシージャを表す。
変換コード・ブロックが効率的な実行のため保持され
る。変換コード・キャッシュ20によって保持されるコ
ード・ブロックの数は、例えば使用可能メモリに従っ
て、異なる。図8において、変換コード・キャッシュ2
0内のコード・ブロックは、コード・ブロック27、コ
ード・ブロック28およびコード・ブロック29によっ
て表されている。これらのコード・ブロックのいずれも
共有ライブラリからの変換プロシージャを表す。
【0034】変換コード・キャッシュ20内のコード・
ブロックは、変換コード・キャッシュ20内の他のコー
ド・ブロックに分岐する場合がある。例えば、コード・
ブロック27内の分岐がコード・ブロック28内の位置
をポイントする。同様に、コード・ブロック28のコー
ドを実行した後、プログラムのフロー制御がコード・ブ
ロック29へと続く。図8に示されているように、コー
ド・ブロック27のコードを実行した後、プログラムの
フロー制御は変換コード・キャッシュ20の外部にある
コード・ブロックへと続く。同様に、コード・ブロック
29のコードを実行した後、変換コード・キャッシュ2
0の外部にあるコード・ブロック内のアドレスへの動的
分岐が行われる。
ブロックは、変換コード・キャッシュ20内の他のコー
ド・ブロックに分岐する場合がある。例えば、コード・
ブロック27内の分岐がコード・ブロック28内の位置
をポイントする。同様に、コード・ブロック28のコー
ドを実行した後、プログラムのフロー制御がコード・ブ
ロック29へと続く。図8に示されているように、コー
ド・ブロック27のコードを実行した後、プログラムの
フロー制御は変換コード・キャッシュ20の外部にある
コード・ブロックへと続く。同様に、コード・ブロック
29のコードを実行した後、変換コード・キャッシュ2
0の外部にあるコード・ブロック内のアドレスへの動的
分岐が行われる。
【0035】変換コード・キャッシュ20の範囲内のコ
ード・ブロック内の命令の実行が一旦開始すると、変換
コード・キャッシュ20の範囲内のコード・ブロック内
に存在しない命令が実行されることとなるまで、変換コ
ード・キャッシュの範囲内のそのコード・ブロックまた
は他のコード・ブロック内の命令の実行は続行する。キ
ャッシュ・ミスが発生すると、プログラム制御がステッ
プ22に戻って、実行されるべき次のアプリケーション
・アドレスが調べられる。該当するコード・ブロックが
(既に変換されていない場合)変換され、変換コード・キ
ャッシュ20に記憶され、アプリケーションの実行が続
く。
ード・ブロック内の命令の実行が一旦開始すると、変換
コード・キャッシュ20の範囲内のコード・ブロック内
に存在しない命令が実行されることとなるまで、変換コ
ード・キャッシュの範囲内のそのコード・ブロックまた
は他のコード・ブロック内の命令の実行は続行する。キ
ャッシュ・ミスが発生すると、プログラム制御がステッ
プ22に戻って、実行されるべき次のアプリケーション
・アドレスが調べられる。該当するコード・ブロックが
(既に変換されていない場合)変換され、変換コード・キ
ャッシュ20に記憶され、アプリケーションの実行が続
く。
【0036】上述のように、デバッガは、変換コード・
キャッシュ20の範囲内のコード・ブロックを、例えば
ブレーク命令を加えることによって修正することもあ
る。更に、デバッガ99がまだ変換されていないコード
を修正することを必要とするならば、コードは変換さ
れ、変換されたコードがデバッガによって修正される。
キャッシュ20の範囲内のコード・ブロックを、例えば
ブレーク命令を加えることによって修正することもあ
る。更に、デバッガ99がまだ変換されていないコード
を修正することを必要とするならば、コードは変換さ
れ、変換されたコードがデバッガによって修正される。
【0037】図9は、動的変換が共有コードに関しての
み使用される本発明の代替実施形態の使用を示す。この
代替実施形態において、アプリケーション実行可能コー
ド41は動的変換なしに直接実行される。動的変換ルー
チン110は実行時の間に変換コードを作成するために
使用されるが、アプリケーション実行可能コード41に
よって使用される共有ライブラリ116の範囲内のコー
ド・ブロックについてのみ動的変換が適用される。共有
ライブラリ116に含まれるコード・ブロックが実行時
に変換される。次に、変換されたコード・ブロックは変
換コード111としてメモリに記憶されは、多数回実行
される各コード・ブロックがただ一度だけ実行時に変換
されれば済むことになる。このアプローチによって、そ
のコードが実行時の前に変換されることを不要としなが
ら、コード・ブロックが実行の度毎に変換されるオーバ
ーヘッドを減少させるという柔軟性が与えられる。
み使用される本発明の代替実施形態の使用を示す。この
代替実施形態において、アプリケーション実行可能コー
ド41は動的変換なしに直接実行される。動的変換ルー
チン110は実行時の間に変換コードを作成するために
使用されるが、アプリケーション実行可能コード41に
よって使用される共有ライブラリ116の範囲内のコー
ド・ブロックについてのみ動的変換が適用される。共有
ライブラリ116に含まれるコード・ブロックが実行時
に変換される。次に、変換されたコード・ブロックは変
換コード111としてメモリに記憶されは、多数回実行
される各コード・ブロックがただ一度だけ実行時に変換
されれば済むことになる。このアプローチによって、そ
のコードが実行時の前に変換されることを不要としなが
ら、コード・ブロックが実行の度毎に変換されるオーバ
ーヘッドを減少させるという柔軟性が与えられる。
【0038】変換コード111は、アプリケーション4
1によって利用される共有ライブラリの範囲内のコード
・ブロックのみを含む。共有ライブラリの範囲内のコー
ド・ブロックは、それらが実行時に実際に利用されるか
デバッガ99によってアクセスされる場合にのみ、変換
され、変換コード111に追加される。デバッガ99
は、変換コード111の範囲内および実行可能コード4
1の範囲内にブレークポイントを挿入する。この方法が
図10に示されている。
1によって利用される共有ライブラリの範囲内のコード
・ブロックのみを含む。共有ライブラリの範囲内のコー
ド・ブロックは、それらが実行時に実際に利用されるか
デバッガ99によってアクセスされる場合にのみ、変換
され、変換コード111に追加される。デバッガ99
は、変換コード111の範囲内および実行可能コード4
1の範囲内にブレークポイントを挿入する。この方法が
図10に示されている。
【0039】図10において、変換コード111は、ア
プリケーション41の実行時に必要に応じて変換される
共有ライブラリ116の部分を含む。このように、プロ
シージャ呼出し43は、変換されたコード111の範囲
内の位置を指す。プロシージャ48はプロシージャ78
へ変換され、プロシージャ50はプロシージャ80へ変
換され、プロシージャ52はプロシージャ82へ変換さ
れる。図示されるように、プロシージャ78、プロシー
ジャ80およびプロシージャ82はすべて変換コード1
11の範囲内にある。また、変換コード111の範囲内
にデバッガ99は必要に応じてブレークポイントを置
く。ブレークポイントをまだ実行されていないアプリケ
ーションの位置に置くため、ブレーク命令はアプリケー
ション41に関する実行可能コードの範囲内に直接置か
れる。プロシージャの範囲内の共有ライブラリ内にブレ
ーク命令を置くためには、共有ライブラリ内のプロシー
ジャに関するコード・ブロックが先ず変換され、それが
変換コード111に追加される。一旦変換されると、デ
バッガ99は、変換コードの範囲内の所望の位置にブレ
ークポイントを置く。上述の通り、図10がプロシージ
ャ78、80、82の全体が変換されることを示してい
るが、この点は、本発明の種々の実施形態において必ず
しもそうでないこともある。例えば、動的変換ルーチン
が変換の単位として基本コード・ブロックを使用する場
合、実際に必要とされるプロシージャの基本ブロックだ
けが変換される。プロシージャの残りは、使用されなけ
れば変換されない。
プリケーション41の実行時に必要に応じて変換される
共有ライブラリ116の部分を含む。このように、プロ
シージャ呼出し43は、変換されたコード111の範囲
内の位置を指す。プロシージャ48はプロシージャ78
へ変換され、プロシージャ50はプロシージャ80へ変
換され、プロシージャ52はプロシージャ82へ変換さ
れる。図示されるように、プロシージャ78、プロシー
ジャ80およびプロシージャ82はすべて変換コード1
11の範囲内にある。また、変換コード111の範囲内
にデバッガ99は必要に応じてブレークポイントを置
く。ブレークポイントをまだ実行されていないアプリケ
ーションの位置に置くため、ブレーク命令はアプリケー
ション41に関する実行可能コードの範囲内に直接置か
れる。プロシージャの範囲内の共有ライブラリ内にブレ
ーク命令を置くためには、共有ライブラリ内のプロシー
ジャに関するコード・ブロックが先ず変換され、それが
変換コード111に追加される。一旦変換されると、デ
バッガ99は、変換コードの範囲内の所望の位置にブレ
ークポイントを置く。上述の通り、図10がプロシージ
ャ78、80、82の全体が変換されることを示してい
るが、この点は、本発明の種々の実施形態において必ず
しもそうでないこともある。例えば、動的変換ルーチン
が変換の単位として基本コード・ブロックを使用する場
合、実際に必要とされるプロシージャの基本ブロックだ
けが変換される。プロシージャの残りは、使用されなけ
れば変換されない。
【0040】以下の諸表は、本発明の動作を示すサンプ
ル・コードを提供する。下記表1は、共有ライブラリに
おけるサンプル・プロシージャに関するソース・コード
を示す。
ル・コードを提供する。下記表1は、共有ライブラリに
おけるサンプル・プロシージャに関するソース・コード
を示す。
【0041】
【表1】 ソース・ コード行番号 18 function bigger_than(int a,int b) { 19 if(a>b) 20 return TRUE; 21 else 22 return FALSE; 23 }
【0042】下記表2は、共有ライブラリにおけるサン
プル・プロシージャに関する(PA−RISC命令を使
用した)目的コードを示す。
プル・プロシージャに関する(PA−RISC命令を使
用した)目的コードを示す。
【0043】
【表2】 コード・アドレス 0x100 COMCLR,<=%gr26,%gr25,%ret0 ; return(%ret0)を偽(FALSE)に設定し ; 次の命令をヌルにする ; if a NOT>b 0x104 LDI 1,%ret0 ; return(%ret1)を真(TRUE)に設定 0x108 BV,n 0(rp) ; procから戻る
【0044】下記表3は、サンプル・プロシージャに関
するブロック情報マップ25へのアドレスにおけるサン
プル・エントリを示す。
するブロック情報マップ25へのアドレスにおけるサン
プル・エントリを示す。
【0045】
【表3】 Address: 0x100 Blk Info Ptr [pointer to Block Info Table entry X]
【0046】下記表4は、サンプル・プロシージャに関
するブロック情報テーブル26におけるサンプル・エン
トリXを示す。
するブロック情報テーブル26におけるサンプル・エン
トリXを示す。
【0047】
【表4】 Block Info: Normal_Procedure Translated Code: [pointer to address "Y" in translated code cache]
【0048】下記表5は、サンプル・プロシージャに関
する変換コード・キャッシュ20における目的コードを
示す。
する変換コード・キャッシュ20における目的コードを
示す。
【0049】
【表5】 変換コードアドレス Y LDW ARGO(p),%t1 ; %arg0の値をtempにロード register Y+4 LDW ARGO(p),%t2 ; %arg1の値をtempにロード register Y+8 COMCLR,<=%gr26,%gr25,%ret0 ; return(%ret0)を偽(FALSE)に設定し ; 次の命令をヌルにする ; if a NOT>b Y+0xC LDI 1,%ret0 ; return(%ret1)を真(TRUE)に設定 Y+0x10 BV,n 0(rp) ; procから戻る
【0050】下記表6は、デバッガが元のアドレス0x10
0にブレークポイントを設定した後の変換コード・キャ
ッシュ20におけるサンプル・プロシージャに関する目
的コードを示し、この場合、元のアドレス0x100は変換
コード・キャッシュのアドレスYに対応する。
0にブレークポイントを設定した後の変換コード・キャ
ッシュ20におけるサンプル・プロシージャに関する目
的コードを示し、この場合、元のアドレス0x100は変換
コード・キャッシュのアドレスYに対応する。
【0051】
【表6】 変換コードアドレス Y BREAK ; 中断し制御をデバッガに渡す Y+4 LDW ARGO(p),%t2 ; %arg1の値をtempにロード register Y+8 COMCLR,<=%t1,%t2,%ret0 ; return(%ret0)を偽(FALSE)に設定し ; 次の命令をヌルにする ; if a NOT>b Y+0xC LDI 1,%ret0 ; return(%ret1)を真(TRUE)に設定 Y+0x10 BV,n 0(rp) ; procから戻る
【0052】図11および図12は、図9において示さ
れた本発明の代替実施形態において共有ライブラリ内の
コード・ブロックの動的変換を実行するためリンク・テ
ーブルに対して行われる変更を示す。
れた本発明の代替実施形態において共有ライブラリ内の
コード・ブロックの動的変換を実行するためリンク・テ
ーブルに対して行われる変更を示す。
【0053】図11は、共有ライブラリに入るための呼
び出しメカニズムの通常の実施形態を示す。共有ライブ
ラリを呼び出すアプリケーション目的コード121内の
位置において、分岐メカニズム122は、リンク・テー
ブル123のエントリを使用する。リンク・テーブル・
エントリは、共有ライブラリ中の1つの共有ライブラリ
・ルーチンに対するアドレス・ポインタ124およびそ
の共有ライブラリ・ルーチンのためのデータをポイント
するデータ・ポインタ125を含む。分岐メカニズム1
22は、リンク・テーブル・エントリからアドレス・ポ
インタ124およびデータ・ポインタ125をロード
し、アドレス・ポインタ124によって指定されたアド
レスに分岐することによって、共有ライブラリ・ルーチ
ンへの分岐を実行する。リンク・テーブル123内のす
べてのエントリは、動的ローダによってロード時にロー
ドされる。
び出しメカニズムの通常の実施形態を示す。共有ライブ
ラリを呼び出すアプリケーション目的コード121内の
位置において、分岐メカニズム122は、リンク・テー
ブル123のエントリを使用する。リンク・テーブル・
エントリは、共有ライブラリ中の1つの共有ライブラリ
・ルーチンに対するアドレス・ポインタ124およびそ
の共有ライブラリ・ルーチンのためのデータをポイント
するデータ・ポインタ125を含む。分岐メカニズム1
22は、リンク・テーブル・エントリからアドレス・ポ
インタ124およびデータ・ポインタ125をロード
し、アドレス・ポインタ124によって指定されたアド
レスに分岐することによって、共有ライブラリ・ルーチ
ンへの分岐を実行する。リンク・テーブル123内のす
べてのエントリは、動的ローダによってロード時にロー
ドされる。
【0054】図12は、共有ライブラリに関するコード
が動的に変換される時、共有ライブラリに入る呼び出し
メカニズムを実施するためにリンク・テーブル123に
対して行われる変更を示す。ロード時に、動的変換ルー
チンは、アドレス・ポインタ124およびポインタ12
5に関して新しいリンク・テーブル・エントリを作成す
る。値はそれぞれアドレス・ポインタ134およびデー
タ・ポインタ135へ移される。アドレス・ポインタ1
24およびデータ・ポインタ125に以前あった値は、
動的変換ルーチンに対するアドレス・ポインタ、およ
び、アドレス・ポインタ134ならびにデータ・ポイン
タ135を含むリンク・テーブル・エントリをポイント
するリンク・テーブル・ポインタにそれぞれ置き換えら
れる。
が動的に変換される時、共有ライブラリに入る呼び出し
メカニズムを実施するためにリンク・テーブル123に
対して行われる変更を示す。ロード時に、動的変換ルー
チンは、アドレス・ポインタ124およびポインタ12
5に関して新しいリンク・テーブル・エントリを作成す
る。値はそれぞれアドレス・ポインタ134およびデー
タ・ポインタ135へ移される。アドレス・ポインタ1
24およびデータ・ポインタ125に以前あった値は、
動的変換ルーチンに対するアドレス・ポインタ、およ
び、アドレス・ポインタ134ならびにデータ・ポイン
タ135を含むリンク・テーブル・エントリをポイント
するリンク・テーブル・ポインタにそれぞれ置き換えら
れる。
【0055】分岐メカニズム122が、リンク・テーブ
ル・エントリからアドレス・ポインタ124およびデー
タ・ポインタ125をロードし、アドレス・ポインタ1
24によって指定されたアドレスに分岐することによっ
て共有ライブラリ・ルーチンへの分岐を実行すると、そ
の結果は、分岐宛先が動的変換ルーチンとなる。動的変
換ルーチンは、ポインタ125の情報を使用して、アド
レス・ポインタ134およびデータ・ポインタ135の
値を入手し、変換を開始する。
ル・エントリからアドレス・ポインタ124およびデー
タ・ポインタ125をロードし、アドレス・ポインタ1
24によって指定されたアドレスに分岐することによっ
て共有ライブラリ・ルーチンへの分岐を実行すると、そ
の結果は、分岐宛先が動的変換ルーチンとなる。動的変
換ルーチンは、ポインタ125の情報を使用して、アド
レス・ポインタ134およびデータ・ポインタ135の
値を入手し、変換を開始する。
【0056】本明細書の以上の記述は、単に本発明の典
型的な方法および実施形態を開示し、説明したものであ
る。本発明は、その理念または基本的特性を逸脱するこ
となく上記以外の特定の形態で実施することが可能であ
る点は当業者に理解されるであろう。
型的な方法および実施形態を開示し、説明したものであ
る。本発明は、その理念または基本的特性を逸脱するこ
となく上記以外の特定の形態で実施することが可能であ
る点は当業者に理解されるであろう。
【0057】本発明には、例として次のような実施様態
が含まれる。 (1)コンピュータ・システムにおいて、当該コンピュ
ータ・システム内に存在する不特定多数のアプリケーシ
ョンによって利用されることができる状態にある共有ラ
イブラリ内の第1のコード・ブロックを利用する第1の
アプリケーションに関してデバッグ処理を実行する方法
であって、上記第1のアプリケーションの実行中に上記
第1のコード・ブロックを動的に変換して変換コード・
ブロックを作成するステップ(a)と、デバッグ処理コー
ドを上記変換コード・ブロック内に配置するステップ
(b)と、を含むデバッグ処理実行方法。 (2)上記ステップ(a)において、上記第1のアプリケ
ーションの実行の間に上記第1のコード・ブロックが上
記第1のアプリケーションによって初めて呼び出される
時に上記変換コード・ブロックが作成される、上記
(1)に記載のデバッグ処理実行方法。 (3)上記ステップ(a)において、上記第1のアプリケ
ーションの実行の間でデバッガが上記デバッグ処理コー
ドを上記変換コード・ブロック内に配置する準備ができ
ている時に上記変換コード・ブロックが作成される、上
記(1)に記載のデバッグ処理実行方法。 (4)上記第1のアプリケーションの実行中に上記第1
のアプリケーションの目的コードを動的に変換して変換
目的コードを作成するステップ(c)を更に含み、このス
テップ(c)が上記ステップ(a)と同時並列的に実行され、
上記ステップ(a)で作成される変換コード・ブロックが
上記変換目的コード内に含まれる、上記(1)に記載の
デバッグ処理実行方法。 (5)上記ステップ(b)のデバッグ処理コードがブレー
ク命令を含む、上記(1)に記載のデバッグ処理実行方
法。
が含まれる。 (1)コンピュータ・システムにおいて、当該コンピュ
ータ・システム内に存在する不特定多数のアプリケーシ
ョンによって利用されることができる状態にある共有ラ
イブラリ内の第1のコード・ブロックを利用する第1の
アプリケーションに関してデバッグ処理を実行する方法
であって、上記第1のアプリケーションの実行中に上記
第1のコード・ブロックを動的に変換して変換コード・
ブロックを作成するステップ(a)と、デバッグ処理コー
ドを上記変換コード・ブロック内に配置するステップ
(b)と、を含むデバッグ処理実行方法。 (2)上記ステップ(a)において、上記第1のアプリケ
ーションの実行の間に上記第1のコード・ブロックが上
記第1のアプリケーションによって初めて呼び出される
時に上記変換コード・ブロックが作成される、上記
(1)に記載のデバッグ処理実行方法。 (3)上記ステップ(a)において、上記第1のアプリケ
ーションの実行の間でデバッガが上記デバッグ処理コー
ドを上記変換コード・ブロック内に配置する準備ができ
ている時に上記変換コード・ブロックが作成される、上
記(1)に記載のデバッグ処理実行方法。 (4)上記第1のアプリケーションの実行中に上記第1
のアプリケーションの目的コードを動的に変換して変換
目的コードを作成するステップ(c)を更に含み、このス
テップ(c)が上記ステップ(a)と同時並列的に実行され、
上記ステップ(a)で作成される変換コード・ブロックが
上記変換目的コード内に含まれる、上記(1)に記載の
デバッグ処理実行方法。 (5)上記ステップ(b)のデバッグ処理コードがブレー
ク命令を含む、上記(1)に記載のデバッグ処理実行方
法。
【0058】(6)デバッグ処理を実行するコンピュー
タ・システムであって、第1のアプリケーション・プロ
セスと、当該コンピュータ・システム内に存在するその
他のアプリケーション・プロセスによっても利用される
ことができる状態にあり、上記第1のアプリケーション
・プロセスによって利用される第1のコード・ブロック
を含む共有ライブラリと、上記第1のアプリケーション
の実行中に上記第1のコード・ブロックを動的に変換し
て変換コード・ブロックを作成する動的変換手段と、デ
バッグ処理コードを上記変換コード・ブロック内に配置
するデバッグ手段と、を備えるコンピュータ・システム
・ (7)上記第1のアプリケーションの実行の間に上記第
1のコード・ブロックが上記第1のアプリケーションに
よって初めて呼び出される時に上記動的変換手段が上記
変換コード・ブロックを作成する、上記(6)に記載の
コンピュータ・システム。 (8)上記第1のアプリケーションの実行の間でデバッ
グ手段が上記デバッグ処理コードを上記変換コード・ブ
ロック内に配置する準備ができている時に上記動的手段
が上記変換コード・ブロックを作成する、上記(6)に
記載のコンピュータ・システム。 (9)上記動的変換手段が上記第1のアプリケーション
の実行中に上記第1のアプリケーションの目的コードを
動的に変換して変換目的コードを作成し、該変換目的コ
ード内に上記変換コード・ブロックを含める、上記
(6)に記載のコンピュータ・システム。 (10)上記デバッグ処理コードがブレーク命令を含
む、上記(6)に記載のコンピュータ・システム。
タ・システムであって、第1のアプリケーション・プロ
セスと、当該コンピュータ・システム内に存在するその
他のアプリケーション・プロセスによっても利用される
ことができる状態にあり、上記第1のアプリケーション
・プロセスによって利用される第1のコード・ブロック
を含む共有ライブラリと、上記第1のアプリケーション
の実行中に上記第1のコード・ブロックを動的に変換し
て変換コード・ブロックを作成する動的変換手段と、デ
バッグ処理コードを上記変換コード・ブロック内に配置
するデバッグ手段と、を備えるコンピュータ・システム
・ (7)上記第1のアプリケーションの実行の間に上記第
1のコード・ブロックが上記第1のアプリケーションに
よって初めて呼び出される時に上記動的変換手段が上記
変換コード・ブロックを作成する、上記(6)に記載の
コンピュータ・システム。 (8)上記第1のアプリケーションの実行の間でデバッ
グ手段が上記デバッグ処理コードを上記変換コード・ブ
ロック内に配置する準備ができている時に上記動的手段
が上記変換コード・ブロックを作成する、上記(6)に
記載のコンピュータ・システム。 (9)上記動的変換手段が上記第1のアプリケーション
の実行中に上記第1のアプリケーションの目的コードを
動的に変換して変換目的コードを作成し、該変換目的コ
ード内に上記変換コード・ブロックを含める、上記
(6)に記載のコンピュータ・システム。 (10)上記デバッグ処理コードがブレーク命令を含
む、上記(6)に記載のコンピュータ・システム。
【0059】(11)コンピュータ・システムおいて、
当該コンピュータ・システム内に存在する不特定多数の
アプリケーションによって利用されることができる状態
にある共有ライブラリ内の第1のコード・ブロックを利
用する第1のアプリケーションに関してデバッグ処理を
実行する方法であって、上記第1のアプリケーションの
実行中に上記アプリケーションを動的に変換して変換コ
ードを作成するステップであって、上記第1のアプリケ
ーションの実行中に上記第1のコード・ブロックを変換
して変換コード・ブロックを作成し該変換コード・ブロ
ックを上記変換コード内に含める動作を含むステップ
(a)と、デバッグ処理コードを上記変換コード・ブロッ
ク内に配置するステップ(b)と、を含むデバッグ処理実
行方法。 (12)上記ステップ(a)において、上記第1のアプリ
ケーションの実行の間に上記第1のコード・ブロックが
上記第1のアプリケーションによって初めて呼び出され
る時に上記変換コード・ブロックが作成される、上記
(11)に記載のデバッグ処理実行方法。 (13)上記ステップ(a)において、上記第1のアプリ
ケーションの実行の間でデバッガが上記デバッグ処理コ
ードを上記変換コード・ブロック内に配置する準備がで
きている時に上記変換コード・ブロックが作成される、
上記(11)に記載のデバッグ処理実行方法。 (14)上記ステップ(b)のデバッグ処理コードがブレ
ーク命令を含む、上記(11)に記載のデバッグ処理実
行方法。
当該コンピュータ・システム内に存在する不特定多数の
アプリケーションによって利用されることができる状態
にある共有ライブラリ内の第1のコード・ブロックを利
用する第1のアプリケーションに関してデバッグ処理を
実行する方法であって、上記第1のアプリケーションの
実行中に上記アプリケーションを動的に変換して変換コ
ードを作成するステップであって、上記第1のアプリケ
ーションの実行中に上記第1のコード・ブロックを変換
して変換コード・ブロックを作成し該変換コード・ブロ
ックを上記変換コード内に含める動作を含むステップ
(a)と、デバッグ処理コードを上記変換コード・ブロッ
ク内に配置するステップ(b)と、を含むデバッグ処理実
行方法。 (12)上記ステップ(a)において、上記第1のアプリ
ケーションの実行の間に上記第1のコード・ブロックが
上記第1のアプリケーションによって初めて呼び出され
る時に上記変換コード・ブロックが作成される、上記
(11)に記載のデバッグ処理実行方法。 (13)上記ステップ(a)において、上記第1のアプリ
ケーションの実行の間でデバッガが上記デバッグ処理コ
ードを上記変換コード・ブロック内に配置する準備がで
きている時に上記変換コード・ブロックが作成される、
上記(11)に記載のデバッグ処理実行方法。 (14)上記ステップ(b)のデバッグ処理コードがブレ
ーク命令を含む、上記(11)に記載のデバッグ処理実
行方法。
【0060】
【発明の効果】本発明によって、実行時にアプリケーシ
ョンによって使用される共通コードまたはデバッガによ
って実際にアクセスされる共通コードのみがデバッガに
よって変換され変換コードが作成されるため、共通コー
ド内にブレークポイントを設定する問題を解消しかつ対
象アプリケーションのデバッグ処理に必要なコード部分
のみが変換されるというデバッグ処理効率向上が実現す
る。
ョンによって使用される共通コードまたはデバッガによ
って実際にアクセスされる共通コードのみがデバッガに
よって変換され変換コードが作成されるため、共通コー
ド内にブレークポイントを設定する問題を解消しかつ対
象アプリケーションのデバッグ処理に必要なコード部分
のみが変換されるというデバッグ処理効率向上が実現す
る。
【図面の簡単な説明】
【図1】従来技術に従ってデバッガと並列して動作する
実行可能コードを作成するコンパイラを活用するコンピ
ュータ・システムのブロック図である。
実行可能コードを作成するコンパイラを活用するコンピ
ュータ・システムのブロック図である。
【図2】従来技術に従って共有ライブラリにアクセスす
る2つのアプリケーションを示す図式である。
る2つのアプリケーションを示す図式である。
【図3】デバッガがブレークポイントを挿入することを
可能にするため共有ライブラリをコピーする従来技術の
形態を示す図式である。
可能にするため共有ライブラリをコピーする従来技術の
形態を示す図式である。
【図4】本発明の好ましい実施形態に従ってデバッガと
並列して動作する動的に変換された実行可能コードを作
成するコンピュータ・システムのブロック図である。
並列して動作する動的に変換された実行可能コードを作
成するコンピュータ・システムのブロック図である。
【図5】本発明の好ましい実施形態に従った動的変換を
使用して、デバッガが共有ライブラリ内のコード・ブロ
ックにブレークポイントを挿入する形態を示す図式であ
る。
使用して、デバッガが共有ライブラリ内のコード・ブロ
ックにブレークポイントを挿入する形態を示す図式であ
る。
【図6】本発明の好ましい実施形態に従った動的変換ル
ーチンを含むコンピュータ・システムのブロック図であ
る。
ーチンを含むコンピュータ・システムのブロック図であ
る。
【図7】本発明の好ましい実施形態に従ってコードを動
的に変換する動的変換ルーチンの使用を示す図式であ
る。
的に変換する動的変換ルーチンの使用を示す図式であ
る。
【図8】本発明の好ましい実施形態に従った動的変換ル
ーチンによって使用されるブロック情報マップへのアド
レス、ブロック情報テーブルおよび変換されたコード・
キャッシュを示す図式である。
ーチンによって使用されるブロック情報マップへのアド
レス、ブロック情報テーブルおよび変換されたコード・
キャッシュを示す図式である。
【図9】共有ライブラリ内のコード・ブロックが本発明
の代替的実施形態に従って動的に変換されるコンピュー
タ・システムを示すブロッ図である。
の代替的実施形態に従って動的に変換されるコンピュー
タ・システムを示すブロッ図である。
【図10】本発明の代替的実施形態に従って共有ライブ
ラリ内のコード・ブロックの動的変換の使用を示す図式
である。
ラリ内のコード・ブロックの動的変換の使用を示す図式
である。
【図11】本発明の代替的実施形態に従って共有ライブ
ラリ内のコード・ブロックの動的変換を実施するためリ
ンク・テーブルに変更を加える前のリンク・テーブルを
示す図式である。
ラリ内のコード・ブロックの動的変換を実施するためリ
ンク・テーブルに変更を加える前のリンク・テーブルを
示す図式である。
【図12】図11のリンク・テーブルに変更を加えた後
のリンク・テーブルを示す図式である。
のリンク・テーブルを示す図式である。
7 コンピュータ・システム 9 コード実行部 11 命令 12 データ 13 コード・ブロック 20 変換コード・キャッシュ 25 ブロック情報マップ 26 ブロック情報テーブル 39 動的変換/実行プロセス39 41、42、121 アプリケーション実行可能コ
ード 46、47、116 共有ライブラリ 98 コンピュータ・システム 99 デバッガ 100、110 動的変換ルーチン 101、111 変換(された)コード 123 リンケージ・テーブル
ード 46、47、116 共有ライブラリ 98 コンピュータ・システム 99 デバッガ 100、110 動的変換ルーチン 101、111 変換(された)コード 123 リンケージ・テーブル
Claims (1)
- 【請求項1】コンピュータ・システムにおいて、当該コ
ンピュータ・システム内に存在する不特定多数のアプリ
ケーションによって利用されることができる状態にある
共有ライブラリ内の第1のコード・ブロックを利用する
第1のアプリケーションに関してデバッグ処理を実行す
る方法であって、 上記第1のアプリケーションの実行中に上記第1のコー
ド・ブロックを動的に変換して変換コード・ブロックを
作成するステップと、 上記変換コード・ブロック内にデバッグ処理コードを配
置するステップと、 を含むデバッグ処理実行方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US606,113 | 1984-05-02 | ||
| US08/606,113 US6330691B1 (en) | 1996-02-23 | 1996-02-23 | Use of dynamic translation to provide breakpoints in non-writeable object code |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH09237202A true JPH09237202A (ja) | 1997-09-09 |
Family
ID=24426593
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP9006497A Pending JPH09237202A (ja) | 1996-02-23 | 1997-01-17 | デバッグ処理実行方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US6330691B1 (ja) |
| JP (1) | JPH09237202A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2009043061A (ja) * | 2007-08-09 | 2009-02-26 | Oki Electric Ind Co Ltd | デバッグ装置及びデバッグ方法 |
Families Citing this family (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6725335B2 (en) * | 2000-02-09 | 2004-04-20 | Hewlett-Packard Development Company, L.P. | Method and system for fast unlinking of a linked branch in a caching dynamic translator |
| US7313824B1 (en) * | 2001-07-13 | 2007-12-25 | Liquid Machines, Inc. | Method for protecting digital content from unauthorized use by automatically and dynamically integrating a content-protection agent |
| US7111285B2 (en) * | 2001-07-17 | 2006-09-19 | Liquid Machines, Inc. | Method and system for protecting software applications against static and dynamic software piracy techniques |
| US7331040B2 (en) * | 2002-02-06 | 2008-02-12 | Transitive Limted | Condition code flag emulation for program code conversion |
| GB0202728D0 (en) * | 2002-02-06 | 2002-03-27 | Transitive Technologies Ltd | Condition code flag emulation for program code conversion |
| US8090943B1 (en) * | 2003-04-28 | 2012-01-03 | Teradata Us, Inc. | Preventing unauthorized access of routines in a library |
| US7437712B1 (en) * | 2004-01-22 | 2008-10-14 | Sprint Communications Company L.P. | Software build tool with revised code version based on description of revisions and authorizing build based on change report that has been approved |
| US7624384B2 (en) * | 2004-11-30 | 2009-11-24 | Intel Corporation | Apparatus, system, and method of dynamic binary translation with translation reuse |
| US7636856B2 (en) * | 2004-12-06 | 2009-12-22 | Microsoft Corporation | Proactive computer malware protection through dynamic translation |
| US20070006178A1 (en) * | 2005-05-12 | 2007-01-04 | Microsoft Corporation | Function-level just-in-time translation engine with multiple pass optimization |
| JP2008052533A (ja) * | 2006-08-25 | 2008-03-06 | Matsushita Electric Ind Co Ltd | デバッグ装置 |
| KR20110095050A (ko) * | 2010-02-18 | 2011-08-24 | 삼성전자주식회사 | 공유 라이브러리 디버깅 장치 |
| US9032526B2 (en) | 2011-05-12 | 2015-05-12 | Microsoft Technology Licensing, Llc | Emulating mixed-code programs using a virtual machine instance |
| KR101991687B1 (ko) * | 2012-11-23 | 2019-06-24 | 삼성전자 주식회사 | 동적 라이브러리 프로파일링 방법, 이를 기록한 컴퓨터로 읽을 수 있는 기록 매체 및 동적 라이브러리 프로파일링 시스템 |
| US10127018B2 (en) * | 2016-03-30 | 2018-11-13 | Qualcomm Incorporated | Dynamic addition of code in shared libraries |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5432795A (en) * | 1991-03-07 | 1995-07-11 | Digital Equipment Corporation | System for reporting errors of a translated program and using a boundry instruction bitmap to determine the corresponding instruction address in a source program |
| US5507030A (en) * | 1991-03-07 | 1996-04-09 | Digitial Equipment Corporation | Successive translation, execution and interpretation of computer program having code at unknown locations due to execution transfer instructions having computed destination addresses |
| US5442766A (en) * | 1992-10-09 | 1995-08-15 | International Business Machines Corporation | Method and system for distributed instruction address translation in a multiscalar data processing system |
| US5583988A (en) * | 1994-03-09 | 1996-12-10 | National Instruments Corporation | Method and apparatus for providing runtime checking features in a compiled programming development environment |
-
1996
- 1996-02-23 US US08/606,113 patent/US6330691B1/en not_active Expired - Lifetime
-
1997
- 1997-01-17 JP JP9006497A patent/JPH09237202A/ja active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2009043061A (ja) * | 2007-08-09 | 2009-02-26 | Oki Electric Ind Co Ltd | デバッグ装置及びデバッグ方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| US6330691B1 (en) | 2001-12-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5732210A (en) | Use of dynamic translation to provide fast debug event checks | |
| US7533246B2 (en) | Application program execution enhancing instruction set generation for coprocessor and code conversion with marking for function call translation | |
| US5381547A (en) | Method for dynamically linking definable program elements of an interactive data processing system | |
| US8266608B2 (en) | Post-compile instrumentation of object code for generating execution trace data | |
| US5870607A (en) | Method and apparatus for selective replay of computer programs | |
| JP3753743B2 (ja) | 先進のプロセッサにおけるメモリ・データ・エリアシング方法および装置 | |
| KR100463810B1 (ko) | 어드레스되는 구성요소의 물리적 특성에 관한 추측 실패를 검출하는 마이크로프로세서용 메모리 제어기 | |
| JPH09237202A (ja) | デバッグ処理実行方法 | |
| US8448152B2 (en) | High-level language, architecture-independent probe program compiler | |
| KR100443759B1 (ko) | 개선된 마이크로프로세서 | |
| US6243668B1 (en) | Instruction set interpreter which uses a register stack to efficiently map an application register state | |
| US20020199179A1 (en) | Method and apparatus for compiler-generated triggering of auxiliary codes | |
| US20030093780A1 (en) | Annotations to executable images for improved dynamic optimization of functions | |
| JPH0638234B2 (ja) | 変換されたプログラムコードのソース命令不可分性を保持するためのシステムおよび方法 | |
| JPH0734178B2 (ja) | 変換コードを実行するための効果的エラー報告 | |
| JP2001508909A (ja) | バーチャルマシン命令を処理するためのデータ処理装置 | |
| JP2001216169A (ja) | 第1ビット・アーキテクチャの命令を第2ビット・アーキテクチャの命令に変換する方法、システム、プログラムおよびデータ構造 | |
| JPH1078873A (ja) | エミュレーション・システムで非同期信号を処理する方法 | |
| US5715458A (en) | Incorporation of services written in one operating system environment into another operating system environment | |
| US5854928A (en) | Use of run-time code generation to create speculation recovery code in a computer system | |
| US6684395B2 (en) | Multiple image dynamic bind and load procedure for a multi-processor | |
| US20060101434A1 (en) | Reducing register file bandwidth using bypass logic control | |
| Buhr | Are safe concurrency libraries possible? | |
| CN117234953B (zh) | 一种基于影子代码缓存的内核调试方法 | |
| Hanson | Event associations in SNOBOL4 for program debugging |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20051028 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051108 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060201 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20060221 |