JPH113250A - スレッド情報採取方法及びスレッド情報採取プログラム を記録した記録媒体 - Google Patents
スレッド情報採取方法及びスレッド情報採取プログラム を記録した記録媒体Info
- Publication number
- JPH113250A JPH113250A JP9156575A JP15657597A JPH113250A JP H113250 A JPH113250 A JP H113250A JP 9156575 A JP9156575 A JP 9156575A JP 15657597 A JP15657597 A JP 15657597A JP H113250 A JPH113250 A JP H113250A
- Authority
- JP
- Japan
- Prior art keywords
- thread
- program
- executed
- information
- function call
- 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
- 238000000034 method Methods 0.000 title claims description 30
- 230000008569 process Effects 0.000 claims description 13
- 230000001960 triggered effect Effects 0.000 claims description 7
- 230000006870 function Effects 0.000 description 64
- 238000012545 processing Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】
【課題】マルチスレッドによりプログラムの実行を行う
計算機システムにおいて、そのプログラムの実行環境で
あるオペレーティングシステムに特化した機能を利用す
ることも、オペレーティングシステムの改造を行うこと
もなく、スレッドの切り替え動作の情報を採取できるよ
うにする。 【解決手段】マルチスレッドプログラム内の関数呼び出
し又は関数呼び出しからの戻りあるいはその両方を契機
として、そのマルチスレッドプログラムが実行されてい
るスレッドの識別子を取得し、この取得したスレッドの
識別子と既に記録されていたスレッドの識別子とが異な
ればスレッドの情報をトレースデータとして記録すると
ともに先に取得したスレッドの識別子により既に記録さ
れていたスレッドの識別子を更新する。
計算機システムにおいて、そのプログラムの実行環境で
あるオペレーティングシステムに特化した機能を利用す
ることも、オペレーティングシステムの改造を行うこと
もなく、スレッドの切り替え動作の情報を採取できるよ
うにする。 【解決手段】マルチスレッドプログラム内の関数呼び出
し又は関数呼び出しからの戻りあるいはその両方を契機
として、そのマルチスレッドプログラムが実行されてい
るスレッドの識別子を取得し、この取得したスレッドの
識別子と既に記録されていたスレッドの識別子とが異な
ればスレッドの情報をトレースデータとして記録すると
ともに先に取得したスレッドの識別子により既に記録さ
れていたスレッドの識別子を更新する。
Description
【0001】
【発明の属する技術分野】本発明は、CPUを割り当て
られる最小単位であるスレッドが複数存在する、いわゆ
るマルチスレッドによりプログラムの実行を行う計算機
システムにおいて、スレッドの切り替え動作に関する情
報を採取するスレッド情報採取方法及びスレッド情報採
取プログラムを記録した記録媒体に関する。
られる最小単位であるスレッドが複数存在する、いわゆ
るマルチスレッドによりプログラムの実行を行う計算機
システムにおいて、スレッドの切り替え動作に関する情
報を採取するスレッド情報採取方法及びスレッド情報採
取プログラムを記録した記録媒体に関する。
【0002】
【従来の技術】従来、マルチスレッドによりプログラム
の実行を行う計算機システムにおけるスレッドの状態の
採取は、特開昭63−211031号公報に記載された
ように、システムプログラム内にスレッドの状態情報を
収集する箇所を設けたり、あるいは、特開昭64−14
643号公報に記載されたように、オペレーティングシ
ステム固有の機能を用いてスレッドの状態情報を入手し
たり、さらには、特開平3−288941号公報に記載
されたように、オペレーティングシステムと対象のプロ
グラムとの間に専用のインタフェースを組み込んだりす
ることにより、すなわち、オペレーティングシステムに
特化した機能を用いたり改造を加えたりすることにより
実現していた。
の実行を行う計算機システムにおけるスレッドの状態の
採取は、特開昭63−211031号公報に記載された
ように、システムプログラム内にスレッドの状態情報を
収集する箇所を設けたり、あるいは、特開昭64−14
643号公報に記載されたように、オペレーティングシ
ステム固有の機能を用いてスレッドの状態情報を入手し
たり、さらには、特開平3−288941号公報に記載
されたように、オペレーティングシステムと対象のプロ
グラムとの間に専用のインタフェースを組み込んだりす
ることにより、すなわち、オペレーティングシステムに
特化した機能を用いたり改造を加えたりすることにより
実現していた。
【0003】
【発明が解決しようとする課題】しかしながら、上記従
来の技術には、スレッド情報の採取のために対象のプロ
グラムの実行環境であるオペレーティングシステムなど
が、スレッドの切り替え動作を通知する機能を持ってい
ることが必要であり、そのような機能を持っていない場
合にはオペレーティングシステムなどにそれを提供する
よう改造を加える必要があるという問題点があった。
来の技術には、スレッド情報の採取のために対象のプロ
グラムの実行環境であるオペレーティングシステムなど
が、スレッドの切り替え動作を通知する機能を持ってい
ることが必要であり、そのような機能を持っていない場
合にはオペレーティングシステムなどにそれを提供する
よう改造を加える必要があるという問題点があった。
【0004】本発明の目的は、マルチスレッドによりプ
ログラムの実行を行う計算機システムにおいて、そのプ
ログラムの実行環境であるオペレーティングシステムに
特化した機能を利用することも、オペレーティングシス
テムの改造を行うこともなく、スレッドの切り替え動作
の情報を採取できるスレッド情報採取方法及びスレッド
情報採取プログラムを記録した記録媒体を提供すること
にある。
ログラムの実行を行う計算機システムにおいて、そのプ
ログラムの実行環境であるオペレーティングシステムに
特化した機能を利用することも、オペレーティングシス
テムの改造を行うこともなく、スレッドの切り替え動作
の情報を採取できるスレッド情報採取方法及びスレッド
情報採取プログラムを記録した記録媒体を提供すること
にある。
【0005】
【課題を解決するための手段】本発明の第1のスレッド
情報採取方法は、複数のスレッドのうちのいずれかのス
レッドで実行される部分からなるマルチスレッドプログ
ラムにおける関数呼び出し又は関数呼び出しからの戻り
又はその両方を契機として、該マルチスレッドプログラ
ムが実行されているスレッドの状態に関する情報を採取
することを特徴とする。
情報採取方法は、複数のスレッドのうちのいずれかのス
レッドで実行される部分からなるマルチスレッドプログ
ラムにおける関数呼び出し又は関数呼び出しからの戻り
又はその両方を契機として、該マルチスレッドプログラ
ムが実行されているスレッドの状態に関する情報を採取
することを特徴とする。
【0006】本発明の第2のスレッド情報採取方法は、
複数のスレッドのうちのいずれかのスレッドで実行され
る部分からなるマルチスレッドプログラムにおける関数
呼び出し又は関数呼び出しからの戻り又はその両方を契
機として、該マルチスレッドプログラムが実行されてい
るスレッドの識別子を取得し、該取得したスレッドの識
別子と前回記録したスレッドの識別子とが異なればスレ
ッドの状態に関する情報をトレースデータとして記録
し、さらに、該取得したスレッドの識別子を記録するこ
とを特徴とする。
複数のスレッドのうちのいずれかのスレッドで実行され
る部分からなるマルチスレッドプログラムにおける関数
呼び出し又は関数呼び出しからの戻り又はその両方を契
機として、該マルチスレッドプログラムが実行されてい
るスレッドの識別子を取得し、該取得したスレッドの識
別子と前回記録したスレッドの識別子とが異なればスレ
ッドの状態に関する情報をトレースデータとして記録
し、さらに、該取得したスレッドの識別子を記録するこ
とを特徴とする。
【0007】本発明の第3のスレッド情報採取方法は、
上記第1及び第2のスレッド情報採取方法において、前
記マルチスレッドプログラムにおける関数呼び出し又は
関数呼び出しからの戻りを、予め用意された特定のプロ
グラムの実行により検出することを特徴とする。
上記第1及び第2のスレッド情報採取方法において、前
記マルチスレッドプログラムにおける関数呼び出し又は
関数呼び出しからの戻りを、予め用意された特定のプロ
グラムの実行により検出することを特徴とする。
【0008】本発明の第4のスレッド情報採取方法は、
複数のスレッドのうちのいずれかのスレッドで実行され
る部分からなるマルチスレッドプログラムに記述された
スレッド情報採取命令の実行を契機として、該マルチス
レッドプログラムが実行されているスレッドの状態に関
する情報を採取することを特徴とする。
複数のスレッドのうちのいずれかのスレッドで実行され
る部分からなるマルチスレッドプログラムに記述された
スレッド情報採取命令の実行を契機として、該マルチス
レッドプログラムが実行されているスレッドの状態に関
する情報を採取することを特徴とする。
【0009】本発明の第5のスレッド情報採取方法は、
複数のスレッドのうちのいずれかのスレッドで実行され
る部分からなるマルチスレッドプログラムに記述された
スレッド情報採取命令の実行を契機として、該マルチス
レッドプログラムが実行されているスレッドの識別子を
取得し、該取得したスレッドの識別子と前回記録したス
レッドの識別子とが異なればスレッドの状態に関する情
報をトレースデータとして記録し、さらに、該取得した
スレッドの識別子を記録することを特徴とする。
複数のスレッドのうちのいずれかのスレッドで実行され
る部分からなるマルチスレッドプログラムに記述された
スレッド情報採取命令の実行を契機として、該マルチス
レッドプログラムが実行されているスレッドの識別子を
取得し、該取得したスレッドの識別子と前回記録したス
レッドの識別子とが異なればスレッドの状態に関する情
報をトレースデータとして記録し、さらに、該取得した
スレッドの識別子を記録することを特徴とする。
【0010】本発明の第1の記録媒体は、複数のスレッ
ドのうちのいずれかのスレッドで実行される部分からな
るマルチスレッドプログラムにおける関数呼び出し又は
関数呼び出しからの戻り又はその両方を契機として、該
マルチスレッドプログラムが実行されているスレッドの
状態に関する情報を採取する処理をコンピュータに実行
させるプログラムを記録している。
ドのうちのいずれかのスレッドで実行される部分からな
るマルチスレッドプログラムにおける関数呼び出し又は
関数呼び出しからの戻り又はその両方を契機として、該
マルチスレッドプログラムが実行されているスレッドの
状態に関する情報を採取する処理をコンピュータに実行
させるプログラムを記録している。
【0011】本発明の第2の記録媒体は、複数のスレッ
ドのうちのいずれかのスレッドで実行される部分からな
るマルチスレッドプログラムにおける関数呼び出し又は
関数呼び出しからの戻り又はその両方を契機として、該
マルチスレッドプログラムが実行されているスレッドの
識別子を取得し、該取得したスレッドの識別子と前回記
録したスレッドの識別子とが異なればスレッドの状態に
関する情報をトレースデータとして記録し、さらに、該
取得したスレッドの識別子を記録する処理をコンピュー
タに実行させるプログラムを記録している。
ドのうちのいずれかのスレッドで実行される部分からな
るマルチスレッドプログラムにおける関数呼び出し又は
関数呼び出しからの戻り又はその両方を契機として、該
マルチスレッドプログラムが実行されているスレッドの
識別子を取得し、該取得したスレッドの識別子と前回記
録したスレッドの識別子とが異なればスレッドの状態に
関する情報をトレースデータとして記録し、さらに、該
取得したスレッドの識別子を記録する処理をコンピュー
タに実行させるプログラムを記録している。
【0012】本発明の第3の記録媒体は、上記第1及び
第2の記録媒体において、前記マルチスレッドプログラ
ムにおける関数呼び出し又は関数呼び出しからの戻り
を、予め用意された特定のプログラムの実行により検出
する処理をコンピュータに実行させるプログラムを記憶
している。
第2の記録媒体において、前記マルチスレッドプログラ
ムにおける関数呼び出し又は関数呼び出しからの戻り
を、予め用意された特定のプログラムの実行により検出
する処理をコンピュータに実行させるプログラムを記憶
している。
【0013】本発明の第4の記録媒体は、複数のスレッ
ドのうちのいずれかのスレッドで実行される部分からな
るマルチスレッドプログラムに記述されたスレッド情報
採取命令の実行を契機として、該マルチスレッドプログ
ラムが実行されているスレッドの状態に関する情報を採
取する処理をコンピュータに実行させるプログラムを記
録している。
ドのうちのいずれかのスレッドで実行される部分からな
るマルチスレッドプログラムに記述されたスレッド情報
採取命令の実行を契機として、該マルチスレッドプログ
ラムが実行されているスレッドの状態に関する情報を採
取する処理をコンピュータに実行させるプログラムを記
録している。
【0014】本発明の第5の記録媒体は、複数のスレッ
ドのうちのいずれかのスレッドで実行される部分からな
るマルチスレッドプログラムに記述されたスレッド情報
採取命令の実行を契機として、該マルチスレッドプログ
ラムが実行されているスレッドの識別子を取得し、該取
得したスレッドの識別子と前回記録したスレッドの識別
子とが異なればスレッドの状態に関する情報をトレース
データとして記録し、さらに、該取得したスレッドの識
別子を記録する処理をコンピュータに実行させるプログ
ラムを記録している。
ドのうちのいずれかのスレッドで実行される部分からな
るマルチスレッドプログラムに記述されたスレッド情報
採取命令の実行を契機として、該マルチスレッドプログ
ラムが実行されているスレッドの識別子を取得し、該取
得したスレッドの識別子と前回記録したスレッドの識別
子とが異なればスレッドの状態に関する情報をトレース
データとして記録し、さらに、該取得したスレッドの識
別子を記録する処理をコンピュータに実行させるプログ
ラムを記録している。
【0015】
【発明の実施の形態】次に、本発明の実施の形態につい
て図面を参照して詳細に説明する。
て図面を参照して詳細に説明する。
【0016】図1を参照すると、本発明の第1の実施の
形態が適用される環境は、マルチスレッドにより実行さ
れる対象のプログラム(以下、「マルチスレッドプログ
ラム」という)1と、このマルチスレッドプログラム1
の実行を監視してトレースデータ3を作成するスレッド
情報採取プログラム2とを含んでいる。
形態が適用される環境は、マルチスレッドにより実行さ
れる対象のプログラム(以下、「マルチスレッドプログ
ラム」という)1と、このマルチスレッドプログラム1
の実行を監視してトレースデータ3を作成するスレッド
情報採取プログラム2とを含んでいる。
【0017】また、図2において、11はマルチスレッ
ドプログラム1の構造の一部を、12はスレッド情報採
取プログラムを表し、通常、マルチスレッドプログラム
1の関数Aから関数Bへは、13で示すような移行を行
うが、スレッド情報を採取する場合には、マルチスレッ
ドプログラム11からスレッド情報採取プログラム12
へ14で示すように移行し、スレッド情報採取プログラ
ム12からマルチスレッドプログラム11へ15で示す
ように移行する。
ドプログラム1の構造の一部を、12はスレッド情報採
取プログラムを表し、通常、マルチスレッドプログラム
1の関数Aから関数Bへは、13で示すような移行を行
うが、スレッド情報を採取する場合には、マルチスレッ
ドプログラム11からスレッド情報採取プログラム12
へ14で示すように移行し、スレッド情報採取プログラ
ム12からマルチスレッドプログラム11へ15で示す
ように移行する。
【0018】より詳細に説明すると、関数Aにおいて、
時刻T1で関数Bへの関数呼び出しがなされスレッド情
報採取プログラム12が呼ばれ、次の関数呼び出しとし
て関数Xにおいて、時刻T2で関数Yへの関数呼び出し
がなされスレッド情報採取プログラム12が呼ばれた場
合、時刻T2でのスレッド情報採取プログラム12は図
3のフローチャートに示す処理を行う。すなわち、ま
ず、スレッド情報採取プログラム12では、時刻T2で
のスレッドを識別するためのスレッドIDを取得する
(ステップS1)。なお、このスレッドIDの取得は、
本発明が適用されるような複数のスレッドが存在する実
行環境において用意されている情報を用いることにより
実現される。そして、この時刻T2でのスレッドIDと
時刻T1で記憶されていたスレッドIDとを比較するこ
とにより、スレッドの切り替わりの有無を判定し(ステ
ップS2)、スレッドの切り替わりがあればその旨をト
レースデータとして記録する(ステップS3)。本実施
の形態では、トレースデータとして、少なくともトレー
スの採取時刻と、切り替え前のスレッドIDと切り替え
後のスレッドIDとが含まれていればよいが、スレッド
が切り替った時のプログラムの実行位置やスレッドの走
行時間などの情報を採取するようにしてもよい。また、
時刻T2でのスレッドを識別するためのスレッドID
は、次回のスレッドの切り替わりの有無の判定に備えて
保存しておく(ステップS4)。
時刻T1で関数Bへの関数呼び出しがなされスレッド情
報採取プログラム12が呼ばれ、次の関数呼び出しとし
て関数Xにおいて、時刻T2で関数Yへの関数呼び出し
がなされスレッド情報採取プログラム12が呼ばれた場
合、時刻T2でのスレッド情報採取プログラム12は図
3のフローチャートに示す処理を行う。すなわち、ま
ず、スレッド情報採取プログラム12では、時刻T2で
のスレッドを識別するためのスレッドIDを取得する
(ステップS1)。なお、このスレッドIDの取得は、
本発明が適用されるような複数のスレッドが存在する実
行環境において用意されている情報を用いることにより
実現される。そして、この時刻T2でのスレッドIDと
時刻T1で記憶されていたスレッドIDとを比較するこ
とにより、スレッドの切り替わりの有無を判定し(ステ
ップS2)、スレッドの切り替わりがあればその旨をト
レースデータとして記録する(ステップS3)。本実施
の形態では、トレースデータとして、少なくともトレー
スの採取時刻と、切り替え前のスレッドIDと切り替え
後のスレッドIDとが含まれていればよいが、スレッド
が切り替った時のプログラムの実行位置やスレッドの走
行時間などの情報を採取するようにしてもよい。また、
時刻T2でのスレッドを識別するためのスレッドID
は、次回のスレッドの切り替わりの有無の判定に備えて
保存しておく(ステップS4)。
【0019】なお、ここでは関数呼び出しを契機として
スレッド情報採取プログラム12を呼び出す方法を示し
たが、関数呼び出しの戻り、あるいは関数呼び出しとそ
の戻りの両方を契機としてスレッド情報採取プログラム
12を呼び出し採取することも可能である。
スレッド情報採取プログラム12を呼び出す方法を示し
たが、関数呼び出しの戻り、あるいは関数呼び出しとそ
の戻りの両方を契機としてスレッド情報採取プログラム
12を呼び出し採取することも可能である。
【0020】次に、本実施の形態における変形例を図面
を参照して詳細に説明する。
を参照して詳細に説明する。
【0021】図4を参照すると、この変形例は、マルチ
スレッドプログラム21と、スレッド情報採取プログラ
ム22とに加え、マルチスレッドプログラム21の実行
環境が「Just In Time Compile
r」(Java(米国等における米国Sun Micr
osystems Inc.の商標又は登録商標)など
のインタプリタ実行環境において、実行時に中間言語を
機械語に翻訳し、以後は変換した機械語を実行すること
により、高速実行を可能とするコンパイラ)などの実現
のために用意された「関数呼び出し時に呼ばれるルーチ
ン」23を含んでいる。なお、「関数呼び出し時に呼ば
れるルーチン」23が「Just InTime Co
mpiler」のために用意されたルーチンである場合
には、「関数呼び出し時に呼ばれるルーチン」23には
「Just In Time Compiler」のた
めの処理も実装されている。
スレッドプログラム21と、スレッド情報採取プログラ
ム22とに加え、マルチスレッドプログラム21の実行
環境が「Just In Time Compile
r」(Java(米国等における米国Sun Micr
osystems Inc.の商標又は登録商標)など
のインタプリタ実行環境において、実行時に中間言語を
機械語に翻訳し、以後は変換した機械語を実行すること
により、高速実行を可能とするコンパイラ)などの実現
のために用意された「関数呼び出し時に呼ばれるルーチ
ン」23を含んでいる。なお、「関数呼び出し時に呼ば
れるルーチン」23が「Just InTime Co
mpiler」のために用意されたルーチンである場合
には、「関数呼び出し時に呼ばれるルーチン」23には
「Just In Time Compiler」のた
めの処理も実装されている。
【0022】この場合、通常、関数Aにおける関数Bの
呼び出しは、24で「関数呼び出し時に呼ばれるルーチ
ン」23へ移行し、25で関数Bの先頭へ移行すること
により行われるが、スレッド情報を採取する場合には、
「関数呼び出し時に呼ばれるルーチン」23から26で
スレッド情報採取プログラム22を呼び出し、スレッド
情報採取のための処理を施したのち、27で本来の処理
への移行を行う。
呼び出しは、24で「関数呼び出し時に呼ばれるルーチ
ン」23へ移行し、25で関数Bの先頭へ移行すること
により行われるが、スレッド情報を採取する場合には、
「関数呼び出し時に呼ばれるルーチン」23から26で
スレッド情報採取プログラム22を呼び出し、スレッド
情報採取のための処理を施したのち、27で本来の処理
への移行を行う。
【0023】なお、この変形例では、「Just In
Time Compiler」のために用意されたル
ーチンを用いて、関数呼び出しを契機にスレッド情報採
取プログラム22を呼び出す方法を示したが、「関数呼
び出しの戻り時に呼ばれるルーチン」が用意されている
場合は、このルーチンからスレッド情報採取プログラム
22を呼び出すようにすれば、関数呼び出しの戻り、あ
るいは関数呼び出しとその戻りの両方を契機にスレッド
情報を採取することも可能である。また、「Just
In Time Compiler」のために用意され
たルーチンだけでなく、関数呼び出し時に呼ばれるルー
チンを備えた実行環境であれば、その実行環境自身に手
を入れることなくスレッド情報採取プログラム22を呼
び出すことができるので、このようなルーチンを用いる
ことにより、同様の採取が可能となる。
Time Compiler」のために用意されたル
ーチンを用いて、関数呼び出しを契機にスレッド情報採
取プログラム22を呼び出す方法を示したが、「関数呼
び出しの戻り時に呼ばれるルーチン」が用意されている
場合は、このルーチンからスレッド情報採取プログラム
22を呼び出すようにすれば、関数呼び出しの戻り、あ
るいは関数呼び出しとその戻りの両方を契機にスレッド
情報を採取することも可能である。また、「Just
In Time Compiler」のために用意され
たルーチンだけでなく、関数呼び出し時に呼ばれるルー
チンを備えた実行環境であれば、その実行環境自身に手
を入れることなくスレッド情報採取プログラム22を呼
び出すことができるので、このようなルーチンを用いる
ことにより、同様の採取が可能となる。
【0024】本発明の第1の実施の形態は、マルチスレ
ッドプログラムにおける関数呼び出し時又は関数呼び出
しからの戻り時に呼ばれるルーチンからスレッド情報採
取プログラムを呼び出すなどして、マルチスレッドプロ
グラムにおける関数呼び出し又は関数呼び出しからの戻
りあるいはその両方を契機としたスレッド情報の採取を
行うようにしたことにより、マルチスレッドプログラム
の実行環境であるオペレーティングシステムに特化した
機能を利用することも、オペレーティングシステムの改
造を行うこともなく、スレッドの切り替え動作の情報を
採取することができるという効果を有している。
ッドプログラムにおける関数呼び出し時又は関数呼び出
しからの戻り時に呼ばれるルーチンからスレッド情報採
取プログラムを呼び出すなどして、マルチスレッドプロ
グラムにおける関数呼び出し又は関数呼び出しからの戻
りあるいはその両方を契機としたスレッド情報の採取を
行うようにしたことにより、マルチスレッドプログラム
の実行環境であるオペレーティングシステムに特化した
機能を利用することも、オペレーティングシステムの改
造を行うこともなく、スレッドの切り替え動作の情報を
採取することができるという効果を有している。
【0025】また、本発明の第2の実施の形態は、図1
に示したものと同様の環境において、図5に示すよう
に、マルチスレッドプログラム31中に、スレッド情報
採取プログラム32を呼び出す命令33を記述したもの
である。この命令33をプログラム中の関数Aから関数
Bへの関数呼び出しの直前に直接挿入することにより、
34で関数Aから関数Bの先頭へと処理が移行する直前
に35でスレッド情報採取プログラム32を呼び出し、
スレッド情報採取のための処理を施したのち、36で関
数Aに処理が戻り、その後、34で関数Bの先頭へ処理
を移行することを実現する。
に示したものと同様の環境において、図5に示すよう
に、マルチスレッドプログラム31中に、スレッド情報
採取プログラム32を呼び出す命令33を記述したもの
である。この命令33をプログラム中の関数Aから関数
Bへの関数呼び出しの直前に直接挿入することにより、
34で関数Aから関数Bの先頭へと処理が移行する直前
に35でスレッド情報採取プログラム32を呼び出し、
スレッド情報採取のための処理を施したのち、36で関
数Aに処理が戻り、その後、34で関数Bの先頭へ処理
を移行することを実現する。
【0026】なお、本実施の形態ではプログラム中の関
数呼び出しの直前にスレッド情報採取プログラム32を
呼び出す命令を挿入する方法を示したが、関数呼び出し
の戻りの直後、あるいは関数呼び出しの直前とその戻り
の直後の両方でスレッド情報採取プログラム32を呼び
出す命令を挿入することで採取することも可能である。
また、本実施例でのコードの挿入は、ソースプログラ
ム、実行プログラムあるいは中間コードへの挿入など、
挿入対象プログラムの形態は問わない。
数呼び出しの直前にスレッド情報採取プログラム32を
呼び出す命令を挿入する方法を示したが、関数呼び出し
の戻りの直後、あるいは関数呼び出しの直前とその戻り
の直後の両方でスレッド情報採取プログラム32を呼び
出す命令を挿入することで採取することも可能である。
また、本実施例でのコードの挿入は、ソースプログラ
ム、実行プログラムあるいは中間コードへの挿入など、
挿入対象プログラムの形態は問わない。
【0027】本発明の第2の実施の形態は、マルチスレ
ッドプログラムにおける関数呼び出しの直前又は関数呼
び出しからの戻りの直後あるいはその両方にスレッド情
報採取プログラムを呼び出す命令を挿入するようにした
ことにより、マルチスレッドプログラムにおける関数呼
び出し時又は関数呼び出しからの戻り時に呼ばれるルー
チンが用意されていない場合でも、マルチスレッドプロ
グラムの実行環境であるオペレーティングシステムに特
化した機能を利用することも、オペレーティングシステ
ムの改造を行うこともなく、スレッドの切り替え動作の
情報を採取することができるという効果を有している。
ッドプログラムにおける関数呼び出しの直前又は関数呼
び出しからの戻りの直後あるいはその両方にスレッド情
報採取プログラムを呼び出す命令を挿入するようにした
ことにより、マルチスレッドプログラムにおける関数呼
び出し時又は関数呼び出しからの戻り時に呼ばれるルー
チンが用意されていない場合でも、マルチスレッドプロ
グラムの実行環境であるオペレーティングシステムに特
化した機能を利用することも、オペレーティングシステ
ムの改造を行うこともなく、スレッドの切り替え動作の
情報を採取することができるという効果を有している。
【0028】さらに、図6を参照すると、本発明の第3
の実施の形態は、スレッド情報採取プログラム42を記
録した記録媒体4を備える。この記録媒体4は、磁気デ
ィスク、半導体メモリその他の記録媒体であってよい。
の実施の形態は、スレッド情報採取プログラム42を記
録した記録媒体4を備える。この記録媒体4は、磁気デ
ィスク、半導体メモリその他の記録媒体であってよい。
【0029】スレッド情報採取プログラム42は記録媒
体4から読み込まれ、前記第1の実施の形態におけるス
レッド情報採取プログラム2と同様の処理を行う。
体4から読み込まれ、前記第1の実施の形態におけるス
レッド情報採取プログラム2と同様の処理を行う。
【0030】本発明の第3の実施の形態は、マルチスレ
ッドプログラムにおける関数呼び出し又は該関数呼び出
しからの戻りあるいはその両方を契機として、もしく
は、マルチスレッドプログラムにおける関数呼び出し又
は該関数呼び出しからの戻りあるいはその両方の直前に
スレッド情報を採取するようにしたことにより、マルチ
スレッドプログラムの実行環境であるオペレーティング
システムに特化した機能を利用することも、オペレーテ
ィングシステムの改造を行うこともなく、スレッドの切
り替え動作の情報を採取することができるという効果を
有している。
ッドプログラムにおける関数呼び出し又は該関数呼び出
しからの戻りあるいはその両方を契機として、もしく
は、マルチスレッドプログラムにおける関数呼び出し又
は該関数呼び出しからの戻りあるいはその両方の直前に
スレッド情報を採取するようにしたことにより、マルチ
スレッドプログラムの実行環境であるオペレーティング
システムに特化した機能を利用することも、オペレーテ
ィングシステムの改造を行うこともなく、スレッドの切
り替え動作の情報を採取することができるという効果を
有している。
【0031】
【発明の効果】本発明には、マルチスレッドプログラム
の実行環境であるオペレーティングシステムに特化した
機能を利用することも、オペレーティングシステムの改
造を行うこともなく、スレッドの切り替え動作の情報を
採取することができるという効果がある。
の実行環境であるオペレーティングシステムに特化した
機能を利用することも、オペレーティングシステムの改
造を行うこともなく、スレッドの切り替え動作の情報を
採取することができるという効果がある。
【図1】図1は本発明の第1及び第2の実施の形態が適
用される環境を示す図である。
用される環境を示す図である。
【図2】図2は本発明の第1の実施の形態におけるスレ
ッド情報の採取の仕組みの例を示す図である。
ッド情報の採取の仕組みの例を示す図である。
【図3】図3は本発明の第1の実施の形態におけるスレ
ッド情報採取プログラムの動作を示す流れ図である。
ッド情報採取プログラムの動作を示す流れ図である。
【図4】図4は本発明の第1の実施の形態の変形例にお
けるスレッド情報の採取の仕組みの例を示す図である。
けるスレッド情報の採取の仕組みの例を示す図である。
【図5】図5は本発明の第2の実施の形態におけるスレ
ッド情報の採取の仕組みの例を示す図である。
ッド情報の採取の仕組みの例を示す図である。
【図6】図6は本発明の第3の実施の形態が適用される
環境を示す図である。
環境を示す図である。
1、11、21、31、41 マルチスレッドプログ
ラム 2、12、22、32、42 スレッド情報採取プロ
グラム 3 トレースデータ
ラム 2、12、22、32、42 スレッド情報採取プロ
グラム 3 トレースデータ
Claims (10)
- 【請求項1】 複数のスレッドのうちのいずれかのスレ
ッドで実行される部分からなるマルチスレッドプログラ
ムにおける関数呼び出し又は関数呼び出しからの戻り又
はその両方を契機として、該マルチスレッドプログラム
が実行されているスレッドの状態に関する情報を採取す
ることを特徴とするスレッド情報採取方法。 - 【請求項2】 複数のスレッドのうちのいずれかのスレ
ッドで実行される部分からなるマルチスレッドプログラ
ムにおける関数呼び出し又は関数呼び出しからの戻り又
はその両方を契機として、該マルチスレッドプログラム
が実行されているスレッドの識別子を取得し、該取得し
たスレッドの識別子と前回記録したスレッドの識別子と
が異なればスレッドの状態に関する情報をトレースデー
タとして記録し、さらに、該取得したスレッドの識別子
を記録することを特徴とするスレッド情報採取方法。 - 【請求項3】 前記マルチスレッドプログラムにおける
関数呼び出し又は関数呼び出しからの戻りを、予め用意
された特定のプログラムの実行により検出することを特
徴とする請求項1又は2に記載のスレッド情報採取方
法。 - 【請求項4】 複数のスレッドのうちのいずれかのスレ
ッドで実行される部分からなるマルチスレッドプログラ
ムに記述されたスレッド情報採取命令の実行を契機とし
て、該マルチスレッドプログラムが実行されているスレ
ッドの状態に関する情報を採取することを特徴とするス
レッド情報採取方法。 - 【請求項5】 複数のスレッドのうちのいずれかのスレ
ッドで実行される部分からなるマルチスレッドプログラ
ムに記述されたスレッド情報採取命令の実行を契機とし
て、該マルチスレッドプログラムが実行されているスレ
ッドの識別子を取得し、該取得したスレッドの識別子と
前回記録したスレッドの識別子とが異なればスレッドの
状態に関する情報をトレースデータとして記録し、さら
に、該取得したスレッドの識別子を記録することを特徴
とするスレッド情報採取方法。 - 【請求項6】 複数のスレッドのうちのいずれかのスレ
ッドで実行される部分からなるマルチスレッドプログラ
ムにおける関数呼び出し又は関数呼び出しからの戻り又
はその両方を契機として、該マルチスレッドプログラム
が実行されているスレッドの状態に関する情報を採取す
る処理をコンピュータに実行させるプログラムを記録し
たことを特徴とする記録媒体。 - 【請求項7】 複数のスレッドのうちのいずれかのスレ
ッドで実行される部分からなるマルチスレッドプログラ
ムにおける関数呼び出し又は関数呼び出しからの戻り又
はその両方を契機として、該マルチスレッドプログラム
が実行されているスレッドの識別子を取得し、該取得し
たスレッドの識別子と前回記録したスレッドの識別子と
が異なればスレッドの状態に関する情報をトレースデー
タとして記録し、さらに、該取得したスレッドの識別子
を記録する処理をコンピュータに実行させるプログラム
を記録したことを特徴とする記録媒体。 - 【請求項8】 前記マルチスレッドプログラムにおける
関数呼び出し又は関数呼び出しからの戻りを、予め用意
された特定のプログラムの実行により検出する処理をコ
ンピュータに実行させるプログラムを記憶したことを特
徴とする請求項6又は7に記載の記録媒体。 - 【請求項9】 複数のスレッドのうちのいずれかのスレ
ッドで実行される部分からなるマルチスレッドプログラ
ムに記述されたスレッド情報採取命令の実行を契機とし
て、該マルチスレッドプログラムが実行されているスレ
ッドの状態に関する情報を採取する処理をコンピュータ
に実行させるプログラムを記録したことを特徴とする記
録媒体。 - 【請求項10】 複数のスレッドのうちのいずれかのス
レッドで実行される部分からなるマルチスレッドプログ
ラムに記述されたスレッド情報採取命令の実行を契機と
して、該マルチスレッドプログラムが実行されているス
レッドの識別子を取得し、該取得したスレッドの識別子
と前回記録したスレッドの識別子とが異なればスレッド
の状態に関する情報をトレースデータとして記録し、さ
らに、該取得したスレッドの識別子を記録する処理をコ
ンピュータに実行させるプログラムを記録したことを特
徴とする記録媒体。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP9156575A JPH113250A (ja) | 1997-06-13 | 1997-06-13 | スレッド情報採取方法及びスレッド情報採取プログラム を記録した記録媒体 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP9156575A JPH113250A (ja) | 1997-06-13 | 1997-06-13 | スレッド情報採取方法及びスレッド情報採取プログラム を記録した記録媒体 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH113250A true JPH113250A (ja) | 1999-01-06 |
Family
ID=15630769
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP9156575A Pending JPH113250A (ja) | 1997-06-13 | 1997-06-13 | スレッド情報採取方法及びスレッド情報採取プログラム を記録した記録媒体 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH113250A (ja) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2006018477A (ja) * | 2004-06-30 | 2006-01-19 | Canon Software Inc | シーケンス情報生成装置およびシーケンス情報生成方法およびプログラムおよび記録媒体 |
| JP2010182237A (ja) * | 2009-02-09 | 2010-08-19 | Nec Corp | スタックトレース採取システム、方法およびプログラム |
| CN109240899A (zh) * | 2017-07-10 | 2019-01-18 | 北京京东尚科信息技术有限公司 | 信息获取方法和装置 |
-
1997
- 1997-06-13 JP JP9156575A patent/JPH113250A/ja active Pending
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2006018477A (ja) * | 2004-06-30 | 2006-01-19 | Canon Software Inc | シーケンス情報生成装置およびシーケンス情報生成方法およびプログラムおよび記録媒体 |
| JP2010182237A (ja) * | 2009-02-09 | 2010-08-19 | Nec Corp | スタックトレース採取システム、方法およびプログラム |
| CN109240899A (zh) * | 2017-07-10 | 2019-01-18 | 北京京东尚科信息技术有限公司 | 信息获取方法和装置 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6593940B1 (en) | Method for finding errors in multithreaded applications | |
| JP4436036B2 (ja) | 情報処理装置、トレース処理方法、プログラム及び記録媒体 | |
| US7415699B2 (en) | Method and apparatus for controlling execution of a child process generated by a modified parent process | |
| JPH06222952A (ja) | デバッグ支援装置 | |
| CN114860586B (zh) | 一种基于动态插桩的二进制多执行体软件插桩方法 | |
| KR20060021839A (ko) | 프로그램 실행제어장치 | |
| EP0933706B1 (en) | Language processing system and language processing method enabling reduction of memory region and overhead in profile information collection of computer | |
| EP1652094A1 (en) | Method and apparatus for improving the performance of garbage collection using stack trace cache | |
| JP4005724B2 (ja) | マルチプルリターンサイトを実現するための方法及び装置 | |
| JP4681491B2 (ja) | プロファイリングプログラムおよびプロファイリング方法 | |
| JPH113250A (ja) | スレッド情報採取方法及びスレッド情報採取プログラム を記録した記録媒体 | |
| US8719772B2 (en) | Programming library usage capturing and representation | |
| JPH11102310A (ja) | プログラムトレーサおよびトレースデータ圧縮記録方法 | |
| JP2000076095A (ja) | プログラムトレース装置およびプログラムトレース方法およびそのプログラムを記憶した記憶媒体 | |
| JPH11265278A (ja) | オペレーティングシステムの動的機能管理方法 | |
| CN121580403A (zh) | 基于任务选择性的指令级内核漏洞触发过程跟踪方法 | |
| JP2004078750A (ja) | オブジェクト管理装置および方法とプログラム | |
| JP2002149417A (ja) | レジスタ退避・回復方法 | |
| JP3110391B2 (ja) | プログラム再実行方法 | |
| CA2459123C (en) | Method and system for detecting potential deadlocks in computer programs | |
| JP3185873B2 (ja) | プログラム実行におけるタイミング記録装置 | |
| JPH0667942A (ja) | ログ採取方式 | |
| JP2002297416A (ja) | プロファイル情報取得装置及びプロファイル情報取得プログラム | |
| JPS6249546A (ja) | 論理型言語処理装置 | |
| JPH03132823A (ja) | プロシジャ固有データのスタック方式 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20000704 |