JP2516255B2 - 追跡方法 - Google Patents

追跡方法

Info

Publication number
JP2516255B2
JP2516255B2 JP1149777A JP14977789A JP2516255B2 JP 2516255 B2 JP2516255 B2 JP 2516255B2 JP 1149777 A JP1149777 A JP 1149777A JP 14977789 A JP14977789 A JP 14977789A JP 2516255 B2 JP2516255 B2 JP 2516255B2
Authority
JP
Japan
Prior art keywords
program
bit
tracking
trace
execution
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.)
Expired - Lifetime
Application number
JP1149777A
Other languages
English (en)
Other versions
JPH02236643A (ja
Inventor
ポール・ノーマン・アンドリユーズ
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH02236643A publication Critical patent/JPH02236643A/ja
Application granted granted Critical
Publication of JP2516255B2 publication Critical patent/JP2516255B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment

Description

【発明の詳細な説明】 A.産業上の利用分野 本発明は、コンピュータ・プログラムの実行中に使用
されるプログラム経路を追跡する改良された方法に関す
る。さらに、本発明は、この追跡方法に基づいて動作す
る組込み追跡プログラム、及びこうした自己追跡機能を
プログラムに導入する方法を含む。
B.従来技術及びその課題 コンピュータ・システムでのプログラムの実行中に使
用される経路を知ることは、プログラムを設計すること
及びプログラムを現場で使用したときに発生するエラー
を診断することに役立つ。実行中に使用される経路の知
識に関連するプログラムを、本明細書では「目標」プロ
グラムと呼ぶ。こうした知識を得るための1つの方法
を、本明細書では、「予測」法と呼ぶ。予測法には、目
標プログラムの可能な実行経路のすべてを分析する個別
プログラムなどの手段が含まれる。こうした予測法の例
は、IBMテクニカル・ディスクロージャ・ブルテン(IBM
Technical Disclosure Bulletin)Vol.14、No.4、1971
年9月、pp.1016−1019に所載のK.ソウル(Soule)の論
文に開示されている。予測法は、プログラム開発中にき
わめて有益となり得る。というのは、予測法を用いて、
プログラマはその予期される使用中に目標プログラムの
可能な様々な環境をシミュレートできるからである。予
測法は、目標プログラムの可能な実行経路を分析する必
要があるために時間がかかるが、そこから得られる知識
が多大であるので、プログラム開発に適している。しか
し、プログラムを現場で使用する段になると、予測法
は、プログラム・エラーまたは障害を分析するのに不十
分である。プログラム・エラーが発生すると、そのプロ
グラムの可能なすべての実行経路を予測しても何の利益
も得られない。重要なのは、エラーをもたらした実際の
実行経路を知って、その経路を訂正できるようにするこ
とである。顧客のプログラムを良好な状態に維持する必
要があるので、効率を高める必要が一層大きくなる。す
なわち、効率を高めるには予測法を使って将来起こり得
るエラーを予測できる能力よりも、目標プログラムの実
行で使用される、エラーをもたらす経路を決定できる能
力がしばしば必要になる。
目標プログラムの実行で使用される経路を決定するこ
とは、プログラムの「追跡」と呼ばれる。プログラム実
行の追跡は、ハードウェアによってもソフトウェアによ
っても実現できる。ハードウェアによる追跡は、目標プ
ログラムによって制御されるコンピュータ・システムの
論理回路に、記憶装置を、その論理回路が使用されるか
否かが決定できるように物理的に配線することによって
行なわれる。ハードウェア追跡方法は、IBMテクニカル
・ディスクロージャ・ブルテン、Vol.15、No.4、1972年
9月、pp.1377−1378に所載のD.G.イースト(East)等
の論文、及びIBMテクニカル・ディスクロージャ・ブル
テン、Vol.26、No.11、1984年4月、pp.6217−6220に所
載のC.P.ギア(Geer)等の論文に開示されている。ハー
ドウェア追跡方法を伴う第1の問題は、記憶装置を目標
プログラムによって制御される論理回路に適切に接続す
ることにある。ますます複雑になってきている現代のコ
ンピュータ・システムでは、その回路がコンピュータ・
システム間で著しく変わり、記憶装置の接続を簡単な仕
事にすることはほとんど不可能である。
ソフトウェア追跡方法は多くの形があり、しばしば目
標プログラムと一緒に動作する親プログラムまたは子プ
ログラムを含んでいる。親プログラムは、実際に目標プ
ログラムの実行を管理し、実行の進行中にそれを監視す
る。子プログラムは、目標プログラムのある追跡点が実
行中に参照されるとき、目標プログラムによって呼び出
される。「参照される」とは、可能な実行経路の1つで
特定の追跡点に達するという意味である。親プログラム
または子プログラムを使用する追跡方法は、親プログラ
ムまたは子プログラムが目標プログラムの実行を中断す
るので、実行時間が著しく増加するため、効率が悪い。
すなわち、プログラム実行追跡手段が組み込まれたプロ
グラムが好ましい。
追跡方法は、記録された情報の種類別に分類すること
もできる。追跡方法の種類の1つは、規則的な間隔を置
いて取ったコンピュータ・システムの「スナップショッ
ト」を使うものである。スナップショットは、それが取
られたちょうどその時間の、または1つ前の間隔以降の
コンピュータ・システムの状況を示す。たとえば、ある
間隔の真中の追跡点の一時的参照は、直前の間隔以降の
状況を示すスナップショットによって検出されるはずで
ある。なぜなら、実際にその間隔中に追跡点が参照され
たからである。しかし、一時的参照は、それが取られた
ちょうどその時間の状況を示すスナップショットによっ
ては検出されないことになる。なぜなら、その時点では
追跡点は参照されないからである。スナップショット追
跡方法は、各追跡点の状況が目標プログラムの実行中に
何回も記録されるので、実行時間が著しく増加するた
め、効率が悪い。
他の追跡方法も知られているが、すべて1つまたはい
くつかの欠点をもっている。ある種の追跡方法は、あら
ゆるプログラム命令を記録するもので、したがってシス
テム及びプログラムの性能が大幅に低下する。それと類
似の追跡方法で、最近に実行された命令だけを記録する
ことによって、この問題を克服しようと試みるものもあ
る。この方法は、上記の追跡方法に比べてシステム及び
プログラムの性能が向上するが、目標プログラムの実行
中に使用された経路の記録に焦点を絞っていないので、
依然として効率が悪い。この方法は、プログラム分岐点
で取られた方法を示す命令だけでなく、最近使用された
命令をすべて記録する。分岐点とは、そこから2つ以上
の直接実行経路が出ているプログラム中の位置をいう。
たとえば、バウアー(Bauer)等(IBMテクニカル・ディ
スクロージャ・ブルテン、Vol.21、No.12、1979年5
月、pp.4783−4785)は、単に最近の多段割込みの追跡
を開示している。
他の追跡方法には、いくつかの主要事象だけを記録す
ることによって、システム及びプログラムの性能の低下
を抑えているものがある。たとえば、モース(Morse)
等(IBMテクニカル・ディスクロージャ・ブルテン、Vo
l.14、No.3、1971年8月、pp.855−856)は、単に入出
力動作などの主要事象の追跡を開示している。主要事象
だけに追跡を制限すると、以前の追跡方法に比べてそれ
らの性能は向上するが、目標プログラムの実行経路の記
録に焦点を絞っていない点でやはり効率が悪い。たとえ
ば、モース等では、目標プログラムの実行に使用される
経路を追跡するのに実際に必要ではない、大量の性能本
位のデータを記録する。この余分な情報の記録により実
行時間がかなり増す。ルツィスカ(Ruzicka)(IBMテク
ニカル・ディスクロージャ・ブルテン、Vol.12、No.6、
1969年11月、pp.771−772)によって開示されたそれと
類似の追跡方法では、各追跡点ごとに別々のレコードを
記録するので性能が低下する。
さらに他の追跡方法には、順次追跡情報の記録を行な
うものがある。順次追跡方法では、時間にかまわず単に
どの追跡点が参照されたかではなく、プログラム実行中
に追跡点が参照された順序を記録する。たとえば、ハワ
ード(Harward)(IBMテクニカル・ディスクロージャ・
ブルテン、Vol.13、No.4、1970年9月、pp.855−857)
は、目標プログラムの分岐点に配置された追跡点の参照
を記録することを含む追跡方法を開示している。順次追
跡情報は、各追跡点で異なる記号を記録することによっ
て得られる。したがって、記録された記号の順序が、追
跡点が参照された順序を表す。しかし、各追跡点で異な
る記号を生成し記録するのに時間と空間が必要なため、
性能が低下する。
効率のことを考えると、追跡方法は、目標プログラム
が現場で実行される際に、連続的に機能する必要があ
る。こうした連続動作がない場合、非追跡期間中に発生
するエラーを分析するのに、目標プログラムの再実行が
必要になる。さらに、タイミングの考慮によって生じる
違いなど、追跡を伴うプログラム実行と追跡を伴わない
プログラム実行の違いのために、通常なら隠れているエ
ラーが追跡または露出されて、ある種のエラーの分析が
覆い隠されてしまうことがあり得る。
上記のことに鑑みて、本発明の主目的は、コンピュー
タ・プログラムの実行で使用される経路を追跡する方法
を改良することである。
本発明の他の目的は、目標プログラムの性能の低下を
最小限に抑える追跡方法を提供することである。
本発明の他の目的は、プログラムの現場での実行を連
続的に追跡する方法を提供することである。
本発明の他の目的は、目標プログラムに組み込まれた
改良された追跡手段を提供することである。
本発明の他の目的は、目標プログラム中に組込み追跡
機能を導入する改良された方法を提供することである。
本発明の他の目的は、目標プログラム中に、目標プロ
グラム中の無限の追跡点に対処できる組込み追跡機能を
導入する方法を提供することである。
C.課題を解決するための手段 上記目的を達成するため、複数の追跡点を含むプログ
ラムの実行中に使用される経路を追跡する本発明の方法
は、(a)各々が上記追跡点の1つに関連しかつ個別的
にアクセス可能な複数のビットを有する少なくとも1つ
のビットマップを生成するステップと、(b)各ビット
を既知の状態に置くステップと、(c)所定の追跡期間
中に追跡点が参照されたときにその追跡点に関連するビ
ットの状態を参照状態に設定するステップと、を有する
ことを特徴とする。
以下、本発明の作用を実施例とともに説明する。
D.実施例 本発明の上記及びその他の目的は、単一ビットの状態
で、目標プログラム中で実行上意味をもつ追跡点が参照
されることを示す追跡方法によって達成される。追跡点
は、プログラムの1つの分岐点付近に論理的に配置され
ている。1つまたは複数のビット・マップが、プログラ
ム実行の開始時に既知の状態に初期化され、関連する追
跡点が参照されるとき、1つのビット・マップの特定の
ビットの状態が設定される。各ビットは、そのビット・
マップ中の位置に応じて特定の追跡点と関連づけられて
いる。プログラム実行後、または他の何らかの追跡間隔
後、ビット・マップは永久記憶装置に記憶される。次い
でビット・マップがソース・リストと比較され、どの追
跡点が参照されたかが決定される。単一ビットを使って
追跡点の参照を示すため、目標プログラムの性能の低下
が最小限に抑えられる。ビット・マップは、各プログラ
ム実行の開始時に既知の状態に初期化され、各プログラ
ム実行の終了時に永久記憶装置に転送されるので、追跡
が連続的に行なわれる。
ビット・マップを作成するためのシステム・メモリ空
間を確保し、ビット・マップを既知の状態に初期化し、
関連する追跡点が参照されたときにビット・マップ中の
ビットの状態を設定するなど、追跡方法の各ステップを
実行する命令を目標プログラムに入れることにより、追
跡手段が、目標プログラムに組み込まれる。組込み追跡
機能を目標プログラムに導入する方法は、プログラム中
の追跡点の数を決定すること、以前の決定に応じて既知
の状態のビット・マップを作成する命令をプログラムに
挿入すること、関連する追跡点の参照に応じてビットの
状態を設定する命令のプログラムに挿入することを含ん
でいる。
この追跡方法は、目標プログラムの実行中に行なわれ
る3つの基本ステップを含んでいる。第1のステップ
は、システム・メモリの確保により、1つまたは複数の
ビット・マップを作成することである。ビット・マップ
は、追跡情報を実際に表すビットのアレイを含む。ビッ
トは、プログラムの実行中に追跡点が参照されたときセ
ットされる。確保される記憶空間は、マップ名とそれに
含まれたビットを記憶するのに十分な大きさでなければ
ならない。1つのビット・マップ中の各ビットは、目標
プログラム中の異なる追跡点と関連づけられている。す
なわち、目標プログラムの実行後、1つのビット・マッ
プ中の特定のビットのある状態(すなわち、論理0また
は1)が、関連する追跡点が参照されたことを示し、同
じビットの他の状態が、関連する追跡点が参照されなか
ったことを示す。プログラム実行中に追跡点が参照され
たときにビット・マップが変更されることが必要なの
で、ビット・マップを記憶するためのシステム・メモリ
空間の確保はその前に行なわなければならない。
この追跡方法の次の基本ステップは、システム・メモ
リに以前に記憶されたビット・マップ中のそれぞれのビ
ットをクリアすることである。本明細書では、ビットを
クリアするとは、それらのビットを既知のデータ状態に
初期化することを指す。システム・メモリ空間の確保だ
けでその中のすべてのビットが初期化されるシステムも
あれば、システム・メモリ空間の確保によってそこに記
憶されたデータが初期化されないシステムもある。後者
のシステムでは、ビット・マップに記憶されたデータを
既知の状態に初期化することが必要である。初期化すべ
き既知のデータ状態は、通常はすべて論理0の状態であ
るが、すべて論理1など任意の既知データ状態が実際に
使用できる。本発明の好ましい実施例では、インターナ
ショナル・ビジネス・マシーンズ社から市販されている
データ機能階層記憶管理プログラム(DFHSM)がある。
これは、ソフトウェアを追跡するためのものであるが、
初期化データ状態はすべて論理0である。すなわち、DF
HSMソフトウェアの実行後、1つのビット・マップ中の
特定のビットが論理1状態の場合、関連する追跡点が参
照されたことを示し、同じビットが論理0状態の場合
は、関連する追跡点が参照されなかったことを示す。ビ
ット・マップをクリアする基本ステップは、ビット・マ
ップを作成する前記の基本ステップと組み合わせること
ができるということに留意されたい。
本追跡方法の第3のステップは、実際には、一連の類
似した動作である。これらの動作は、目標プログラムの
実行中に関連する追跡点が参照されたとき、ビット・マ
ップ中のビットを論理0から論理1に実際に変更するも
のである。本発明の別の実施例では、ビットの初期化状
態が0でなくてもよいので、実際にはビットを0から1
に変更することは必ずしも必要ではなく、既知の状態か
ら異なる参照状態へ変更するだけでよい。プログラム実
行中に関連する追跡点が最初に参照されたとき、特定の
ビットの状態が変更され、その後の現プログラム実行中
には変更した状態のままとなる。同じ追跡点がその後に
参照されても、変更済みのビットは変更されたり他の形
で影響を受けることはない。そうした切替えは、追跡の
妨げになるだけである。なぜなら、そうした場合、特定
のビットの状態が、関連する追跡点がかつて参照された
かどうかをもはや示さなくなるからである。たとえば、
最初の関連する参照で論理1に変更され、次の関連する
参照で論理0に戻されたビットは、(関連する参照がな
かったため)変更されなかったビットと区別できなくな
る。すなわち、本発明では、あるビットの状態を「設定
する」とは、プログラム実行中に状態が1回だけ変更さ
れることをいい、同じプログラムのその後の実行中など
に、ビットが再度変更されることはないとの意味ではな
い。また、ビットの状態を「設定する」とは、その現在
の状態(これは設定前には検査されない)がどうである
かに関わらず、そのビットを特定の参照状態にすること
をいう。そのビットが既に参照状態にある場合、それを
設定することはトランスペアレントである(すなわち、
状態の変化は起こらない)。このようにして、目標プロ
グラムの実行中のある時点で各追跡点が参照された(ま
たは参照されない)ことを示す、1つまたは一連のビッ
ト・マップが作成できる。
個々のプログラム・モジュールの実行中など完全なプ
ログラム実行より短い期間中に使用される経路を追跡す
ることが望ましい場合がある。こうした期間を、以後
「追跡間隔」と呼ぶ。追跡間隔中にセットされたビット
は、その間隔の残りの間ずっと変更されないままである
が、その後の間隔中に再初期化されリセットされる。し
たがって、当然のことながら、本明細書でプログラム実
行などに言及するとき、追跡の期間は実際には追跡間隔
である場合がある。
参照された追跡点に関連するビットをセットするに
は、とくにその固有な追跡点に対して生成されたビット
名を利用する。ビット名は、それを識別する3つの連結
修飾子を含む。これらの修飾子は、ビット・マップの名
前、ビット・マップ内のバイト・オフセット、及びその
バイト内のビット位置である。追跡点が参照されると、
関連する名前付きビットがアドレスされセットされる。
ビット・マップのレコードは、当業者に周知の追跡記
録機能を用いて作成する。追跡記録機能は、目標プログ
ラムの実行中またはその後に、システム・メモリに記憶
されたビット・マップを永久記憶装置に転送する。永久
記憶装置への転送は、サブルーチン、モジュール、反復
ループ、その他の論理区分の終了時など様々な時点で行
なえ、プログラム実行中に規則的な間隔で行なうことも
できる。好ましい実施例では、ビット・マップは、目標
プログラムの各論理区分の実行中またはその後にシステ
ム・メモリ中で作成され、規則的な大きな間隔で永久メ
モリに転送され、したがってそれに伴う性能を低下が最
小限に抑えられる。本発明で使用できる追跡記録機能の
例は、T.A.ハント(Hunt)等(IBMテクニカル・ディス
クロージャ・ブルテン、Vol.15、No.8、1973年1月、p
p.2446−2448)、クライン(Klein)等(IBMテクニカル
・ディスクロージャ・ブルテン、Vol.30、No.10、1988
年3月、pp251−253)及びガム(Gum)等の米国特許第4
598364号明細書に開示されている。これらの開示をすべ
て引用により本明細書に組み込む。
プログラム実行跡、ビット・マップの0と1が、目標
プログラムのソース・リストを用いてその関連する追跡
点の突き合わされる。最初のビットは、プログラム中の
第1の追跡点が実行中に参照されたかどうかを示し、第
2のビットは、プログラム中の第2の追跡点が実行中に
参照されたかどうかを示し、以下同様である。さらに、
ビットとそれに関連する追跡点の突合せは、プログラミ
ングを行なって自動的に実施してもよく、追跡機能に記
憶されたビット・マップを人間が読める形で出力した後
で手動で実施してもよい。好ましい実施例では、突合せ
は手動でまたはオフ・ライン比較プログラムによって行
ない、したがって自動突合せを可能にするための追加情
報の記憶及び検索によって生じる目標プログラムまたは
システムの性能の低下が防止される。
特定ビットの状態は、関連する追跡点が少なくとも一
度参照されたかどうか(すなわち、プログラム実行がど
こへ進行したか)を示すが、一般に順序情報は提供しな
い。目標プログラム中の追跡点は、プログラム分岐、ル
ープ化などのため、必ずしもソース・リストに出てくる
順序では参照されない。ビット・マップは、プログラム
実行中の参照順序ではなく、目標プログラムのソース・
リストに追跡点が現われる順序で配列されているので、
2つの参照された追跡点のどちらが最初または最後に参
照されたかを決定することは一般的に不可能である。関
連する追跡点の参照時間の数字表示を記憶したり、関連
する追跡点の参照順序に応じてビット・マップを配列す
ることにより、順次追跡情報を記憶できる能力を設ける
と、その追跡を実施するのに必要なシステム・メモリ空
間と時間がかなり増大することになる。前述のように、
特定のビットの状態は、一般にどんな定量情報(すなわ
ち、関連する追跡点が何回参照されたか)も示さず、そ
れが参照されたかどうかだけを示す。
上記の順次的定量情報は一般にビット・マップに記憶
されないが、こうした情報の一部分は、本発明の適用で
得ることができる。たとえば、目標プログラム実行中に
追跡記録機能の動作を繰り返して、順次情報を生成する
ことができる。追跡記録機能が規則的な間隔でビット・
マップを永久記憶装置に転送する場合、ビット・マップ
を比較すると、特定の追跡点が参照された間隔がわか
る。比較的早い間隔中に参照された追跡点は、明らかに
比較的遅い間隔中に参照された追跡点より前に参照され
たことになる。それでも、どの単一ビット・マップから
もわずかの順次情報しか利用できない。複数ビット・マ
ップの使用によって獲得できる順次的定量情報もある。
プログラム実行中に複数回入るサブルーチンまたはモジ
ュールを含み、分岐点をもつプログラムでは、個別に記
録されたビット・マップを使って、サブルーチンまたは
モジュールに入る度にその実行経路を追跡することがで
きる。これは、サブルーチンまたはモジュールの実行と
等価な追跡間隔を用いて実施される。論理ユニットに入
る度に、ビット・マップを作成し、クリアし、設定する
基本追跡ステップが繰り返されて、その結果、その論理
ユニットを通過する各経路ごとに個別の記録ビット・マ
ップが永久記憶装置で作成される。また、1回入るだけ
であるがサイクルが無限の大きく複雑なループをもつプ
ログラムでは、1つのビット・マップを使って、プログ
ラムを全体的に追跡し、個別のビット・マップを使っ
て、各サイクルでの個別の実行経路を記憶することがで
きるはずである。
この追跡方法では、目標プログラムの性能低下が最小
限に抑えられる。単一ビットを使って追跡点の参照を示
すので、追跡情報を記憶するのに必要なメモリ空間と時
間が最小限に抑えられる。順次的または定量的な追跡情
報を記憶する処理によって性能が低下することはない。
しかし、記録された追跡情報は、多くのプログラム・エ
ラーの分析速度をかなり上げるのに十分である。さら
に、目標プログラムの実行が呼び出される度に(または
各追跡間隔ごとに)機械的実行によってビット・マップ
をクリアできるため、連続的組込み追跡が可能となり、
したがって、予期せずしてプログラム実行エラーが発生
したとき、追跡はすでに完了しており、そのため、シス
テムをリセットして別の追跡機能でプログラムの実行を
繰り返す必要がなくなる。
追跡方法に応じた組込み追跡プログラム及びプログラ
ムにそのような組込み追跡機能を導入する方法 組込み追跡プログラムは、前述のように、追跡方法の
3つの基本ステップを実施する命令を目標プログラム中
に単純に挿入することによって作成される。この場合
も、基本ステップは、ビット・マップを作成するための
システム・メモリ空間を確保し、ビット・マップをクリ
アし、関連する追跡点が参照されたときビット・マップ
中のビットの状態を設定することである。目標プログラ
ムの一般的な特徴(その長さ、目的など)は本発明にと
って重要ではない。必要な命令がシステムにとって使用
可能な形で挿入される限り、プログラム実行中に追跡が
行なわれる。
上記の追跡機能を目標プログラムに導入する1つの方
法は、使用中のプログラム・コンパイラにとって使用可
能な形で命令をプログラムに単純に手動で挿入するもの
である。これは、目標プログラムの実際の作成中に行な
ってよい。しかし、多数の追跡点が必要な場合は、関連
する追跡点が参照されたときビット・マップ中のビット
の状態を設定する命令(及びその他の命令)を繰り返し
挿入するのは冗長である。より容易な導入方法では、プ
ログラム・コンパイラには直ちに理解できないが、各キ
ーワードを必要な完全な命令で置換するマクロを使って
解釈される、単純なキーワードのソース・リストを目標
プログラムに手動で挿入する必要がある。この好ましい
導入方法は、退屈な手動挿入を最小限に抑え、最初の作
成以後でも、どの目標プログラムにも容易に使用でき
る。
第1図ないし第4図を参照して、上記の追跡機能を目
標プログラムに導入する好ましい方法を説明する。追跡
機能の挿入は、目標プログラムでコンパイルされたマク
ロを使って実施する。3つのキーワード、CREATE、CLEA
R及びSETを、プログラム・ソース・リストに手動で入力
する。これらのキーワードはそれ自体プログラム・コン
パイラには使用できないので、コンパイル中にそれに達
したとき、マクロを呼び出してキーワードを処理し使用
可能な形に変換する。すべてのキーワードが残りのソー
ス・リストと共に処理された後、コンパイラは、前記の
ように追跡を実施する命令を含む、目標プログラム用の
機械語コードを出す。
第1図は、追跡マクロの実行の基本的流れを示す。コ
ンパイラは接続点Aでマクロにキーワードを入力する。
キーワードを受け取ると、マクロは、そのキーワードが
CREATEか、CLEARか、それともSETかを判定する。そのキ
ーワードがこれらのどれでもないとマクロが判定した場
合、エラー・メッセージがソース・リストに挿入され
て、コンパイルが停止する。3つのキーワードのうちの
1つが見つかった場合、マクロは、接続点B、C及びD
を介して第2図ないし第4図に従って進む。キーワード
を処理した後で、マクロは、ソース・リストに入力する
ために生成されたステートメントを接続点Eを介してコ
ンパイラに出力する。
キーワードがCREATEキーワードであることがわかった
場合、マクロは、接続点Bに進む。マクロはCREATEキー
ワードを使って、ビット・マップ・ヘッダ及びその中の
各個別のビットを宣言するステートメントをソース・リ
ストに挿入する。これは、プログラムの実際の動作で
は、CREATEキーワードによって生成されたステートメン
トに達したとき、システムが追跡用のビット・マップに
必要な量のシステム・メモリ空間を確保するよう指令さ
れることを意味する。さらに、システムは、ビット・マ
ップ中の各ビットの名前に関して指令を受ける。これら
の宣言ステートメントがソース・リストに挿入され、機
械コードにコンパイルされて、システムをそれぞれ応じ
て動作させる。
CREATEキーワードを手動で入力するとき、ユーザは、
ソース・リスト中の最初の追跡点の前に手動で入力され
たマップ名とビット長を伴うキーワードを挿入するか、
それともソース・リストの最後の追跡点の後に追加情報
を伴わないキーワードを挿入するかを選ぶことができ
る。CREATEキーワードは、マクロに追加情報が必要な処
置を取らせる。キーワードを最初の追跡点の前に入れる
場合、ユーザは、マクロにその情報を与えなければなら
ない。したがって、ユーザは目標プログラムに入力され
た追跡点の数を数えておく必要がある。ユーザがそのよ
うなカウントをしたくない場合、キーワードを最後の追
跡点の後に入力して、マクロに追跡点をカウントさせ追
加情報を生成させることができる。この特徴により、ユ
ーザが時間をかけて各アプリケーションごとに正確な数
を手動でカウントせずとも、マクロを使って目標プログ
ラム中の様々な数の追跡点を扱うことができる。
必要な宣言ステートメントをソース・リストに挿入さ
せるために、マクロは、まずCREATEキーワードが手動で
入力されたマップ名及びビット長を伴っているかどうか
を判定しなければならない。名前と長さが存在する場
合、マクロはすべてのビット・マップに必要な全システ
ム・メモリ空間を計算して、名前アレイ及びカウント・
アレイと本明細書で呼ぶ2つのアレイを作成する。名前
アレイは各ビット・マップの名前を記憶し、カウント・
アレイは各ビット・マップのビット長を含む。この2つ
のアレイ中の情報から、マクロは、ビット・マップ中の
固有のビット名を決定する。前述のように、各ビット名
は、それを識別するための3つの修飾子を含む。これら
の修飾子は、ビット・マップの名前、ビット・マップ内
のバイト・オフセット及びバイト内のビット位置であ
る。ビット・マップ名は、名前アレイから知ることがで
きる。ビット・マップ内のバイト・オフセットは、ビッ
ト・マップの現ビット・カウントを8で割ることによっ
て算出される。この割り算の余りを使って、バイト内の
ビット・オフセット/位置が決定できる。次いで、その
ビット・マップの第1の追跡点が、そのビット・マップ
の第1バイトの最初のビット位置と関連づけられる。次
の追跡点がそのビット・マップの同じバイトの次のビッ
ト位置と関連づけられ、以下同様である。上記のすべて
が与えられると、マクロは必要な宣言ステートメントを
生成することができる。
CREATEキーワードが、手動で入力されたビット・マッ
プ名とビット長を伴っていない場合、こうしたキーワー
ドはソース・リスト中の最後の追跡点の後に挿入された
と仮定される。手動による追加入力がない場合、マクロ
は、ビット・マップまたはビット・マップ名にどれくら
いのシステム・メモリ空間を割り当てる必要があるかに
ついての知識を直接得ることができず、したがって必要
な宣言ステートメントを生成できない。その代わりに、
マクロは、必要な知識を獲得するためにSETキーワード
によって生成される大域アレイを通ってループする。大
域アレイの生成については後で説明する。大域アレイを
通るループにより、マクロは、ビット・マップにどれぐ
らいのシステム・メモリ空間を割り当てる必要があるか
を決定し、名前アレイとカウント・アレイを作成するこ
とができる。そこから、マクロはビット・マップ名と各
マップ中のビット数を決定することができる。上記のも
のが与えられた場合、マクロは、必要な宣言ステートメ
ントを生成できる。
マクロは、あるキーワードがCREATEキーワードでない
と判定した場合、続いてそのキーワードがCLEARキーワ
ードであるかどうか判定する。キーワードがCLEARキー
ワードである場合、マクロは接続点Cに進む。CLEARキ
ーワードが存在すると、目標プログラムの実行中に、マ
クロは、特定のビット・マップ中のビットをゼロにしシ
ステム・メモリ中でビット・マップのマップ名を設定す
るようにシステムに指令するステートメントを生成す
る。ビット・マップのビットをゼロにすることによっ
て、ビット・マップの初期状態が既知になる。ビット・
マップのマップ名を設定することにより、それらのマッ
プがラベルされ、追跡記録機能がそれらのビット・マッ
プを識別し当該のヘッダと突合せできるようになる。生
成されたステートメントは、ソース・リストに挿入さ
れ、機械コードにコンパイルされてシステムをそれに応
じて動作させる。
マクロは、キーワードがCREATEでもCLEARでもないと
判定した場合、続いて、そのキーワードがSETキーワー
ドであるかどうか判定する。SETキーワードはソース・
リストの望ましい追跡点に入れられ、手動で入力された
マップ名を含む。キーワードがSETキーワードである場
合、マクロは接続点Dに進む。マクロは、マップ名を読
み取り、こうしたビット・マップ名が大域アレイに現在
あるかどうか判定する。大域アレイとは、マップ名と、
コンパイル中のその時点まで計算された名ビット・マッ
プの総ビット・カウントのアレイである。ビット・マッ
プ名が大域アレイ中で見つからなかった場合、マクロ
は、SETキーワードが新しいビット・マップを参照した
と仮定して、そのマップ名を大域アレイに挿入し、その
ビット・マップのビット・カウントをゼロに初期化す
る。マップ名が大域アレイ中で見つかった場合、マクロ
は、大域アレイにマップ名を挿入せず、ビット・カウン
トをゼロに初期化しない。どちらの場合も、マクロは続
いて、SETキーワードを伴う手動入力で名前が付けられ
たビット・マップ中の現在のビット・カウントに関連す
るビット名を計算し続ける。前述のように、各ビット名
はそれを識別する3つの修飾子を含んでいる。それらの
修飾子は、ビット・マップ名、ビット・マップ中のバイ
ト・オフセット及びバイト内のビット位置である。ビッ
ト・マップ名は手動入力から知られる。ビット・マップ
中のバイト・オフセットは、ビット・マップの現ビット
・カウントを8で割ることによって計算される。この割
り算の余りを使って、バイト内のビット位置が決定でき
る。次にマクロは、プログラム実行中にステートメント
に達したとき、識別されたビットを論理1に設定させる
ステートメントを、ソース・リストに挿入する。最後
に、マクロは、大域アレイ中の関連するビット・カウン
トを1だけ増分して、当該ビット・マップ中の次に利用
できるビット位置を示す。
SETキーワードは、好ましい追跡点を作成するために
目標プログラムの任意の位置に手動で挿入できる。たと
えば、追跡点を周囲の論理から独立した位置に置くこと
ができる。ただしプログラム実行の一定のアーキテクチ
ャ上のキーポイントに関連する位置である。好ましい実
施例では、各追跡点は異なるプログラム分岐点の近くに
論理的に配置される。「近く」とは、分岐点の直前また
は直後を意味するものではなく、単に、追跡点と分岐点
の間で基本的に1対1対応が成立するような、実行で使
用される可能な各経路に沿った分岐点の間という意味で
ある。分岐点の近くに追跡点を入れることにより、呼び
出されたサブルーチン、モジュールまたはその他の論理
セクションが識別できる。各追跡点は単一マシン命令か
ら構成されるので、分岐点の近くに追跡点を入れるだけ
で、得られる追跡情報の量が最大になり、プログラム性
能の低下が最小になる。
マクロの動作中に、マクロが実行する比較的重要でな
いタスクがいくつかあるが、便宜上図には示していな
い。これらのタスクは、エラー・メッセージの生成に関
するものである。たとえば、CREATEキーワードに応答し
て、マクロは、適切なマップ名とビット長が指定されて
いるかどうか検査する。マップ名とビット長が必要であ
る(CREATEキーワードが最初の追跡点の前にくる)が、
手動で入力されていない場合、またはマップ名とビット
長が存在するが正確に指定されていない場合、マクロ
は、エラー・メッセージをソース・リストに挿入させ
て、コンパイルを停止する。同様に、マクロは、SETキ
ーワードに応答して適切なマップ名が指定されたかどう
か検査する。
本発明を好ましい実施例に関して説明したが、当業者
には容易に理解できるように、本発明の精神、範囲及び
教示から逸脱することなく、細部に様々な変更を加える
ことが可能である。たとえば、マクロを、ビット・マッ
プの生成を支援するデータを記憶する3つの個別のアレ
イを作成するものとして説明したが、追加アレイの使用
など、データを記憶するための他の実施例も使用でき
る。
E.発明の効果 以上説明したように本発明によれば、従来に比し効率
の良い追跡が可能となる。
【図面の簡単な説明】
第1図は、目標プログラムに追跡機能を導入するのに使
用されるマクロを簡単に示す流れ図である。 第2図は、第1図に示したCREATEキーワードの流れ図で
ある。 第3図は、第1図に示したCLEARキーワードの流れ図で
ある。 第4図は、第1図に示したSETキーワードの流れ図であ
る。
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 昭58−29056(JP,A) 特開 昭58−56049(JP,A) 特開 昭61−198340(JP,A) 特開 昭60−120446(JP,A) 特開 昭59−229654(JP,A)

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】プログラムの実行中に使用される経路を追
    跡する方法であって、 複数の追跡点を各々の分岐点に論理的に近接して設ける
    ステップと、 各ビットが前記追跡点の一つに対応し、かつ、個別的に
    アクセス可能なビットマップを生成するステップと、 前記ビットを既知の状態にするステップと、 所定の追跡期間中に前記追跡点が参照された時にその追
    跡点に対応する前記一のビットの状態を参照状態に設定
    することにより追跡情報を前記ビットマップに記録する
    ステップと、 を含む追跡方法。
  2. 【請求項2】プログラムの実行中に使用される経路を追
    跡するための追跡点をプログラム中に設ける方法であっ
    て、 追跡点の数及び種類がプログラムにマニュアル入力され
    たかどうかを判断するステップと、 もし是ならば、個別的にアクセス可能な複数のビットを
    有する少なくとも一つのビットマップであって、各々の
    ビットが一つの追跡点と論理的に対応付けられており、
    その数とサイズがマニュアル入力によってすでに決定さ
    れている前記ビットマップを生成する手段をプログラム
    に挿入するステップと、 もし否ならば、追跡点の数を勘定する手段と、個別的に
    アクセス可能な複数のビットを有する少なくとも一つの
    ビットマップであって、各々のビットが一つの追跡点と
    論理的に対応付けられており、その数とサイズが前記勘
    定する手段の結果によって決定される前記ビットマップ
    を生成する手段をプログラムに挿入するステップと、 各ビットを既知の状態におく手段をプログラム中に挿入
    するステップと、 所定の追跡期間中に追跡点が参照された時にその追跡点
    に関連するビットの状態を参照状態に設定する手段をプ
    ログラム中に挿入するステップと、 を有する方法。
JP1149777A 1988-08-02 1989-06-14 追跡方法 Expired - Lifetime JP2516255B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US227844 1988-08-02
US07/227,844 US5067073A (en) 1988-08-02 1988-08-02 Embedded tracing method for identifying program executed paths

Publications (2)

Publication Number Publication Date
JPH02236643A JPH02236643A (ja) 1990-09-19
JP2516255B2 true JP2516255B2 (ja) 1996-07-24

Family

ID=22854698

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1149777A Expired - Lifetime JP2516255B2 (ja) 1988-08-02 1989-06-14 追跡方法

Country Status (4)

Country Link
US (1) US5067073A (ja)
EP (1) EP0353886B1 (ja)
JP (1) JP2516255B2 (ja)
DE (1) DE68924736T2 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02199548A (ja) * 1988-11-09 1990-08-07 Asea Brown Boveri Ag 電算機系で作成されるオブジエクト・プログラムの時間経過を観察する方法とこの方法を実行する観測器具
US5136710A (en) * 1990-06-21 1992-08-04 International Business Machines Corporation Dynamic inactivation of program exits of the application program while the system program is running
US5517629A (en) * 1992-08-26 1996-05-14 Boland; R. Nick K. Methods for analyzing computer program performance
US5513317A (en) * 1992-09-10 1996-04-30 International Business Machines Corporation System and method for permitting rapid refinement of data output from a debugger
JPH06161822A (ja) * 1992-11-20 1994-06-10 Mitsubishi Electric Corp マイクロプロセッサ
US5488688A (en) * 1994-03-30 1996-01-30 Motorola, Inc. Data processor with real-time diagnostic capability
US6006033A (en) * 1994-08-15 1999-12-21 International Business Machines Corporation Method and system for reordering the instructions of a computer program to optimize its execution
US5758061A (en) * 1995-12-15 1998-05-26 Plum; Thomas S. Computer software testing method and apparatus
US6182244B1 (en) * 1997-09-10 2001-01-30 International Business Machines Corporation System and method for automatically initiating a tracing facility and dynamically changing the levels of tracing currently active
US6754891B1 (en) 1998-08-31 2004-06-22 Red Hat, Inc. Debugger system using tracepoints for computer software
US6327699B1 (en) * 1999-04-30 2001-12-04 Microsoft Corporation Whole program path profiling
US7185367B2 (en) 1999-05-11 2007-02-27 Cylant, Inc. Method and system for establishing normal software system behavior and departures from normal behavior
US6681331B1 (en) * 1999-05-11 2004-01-20 Cylant, Inc. Dynamic software system intrusion detection
US7096499B2 (en) * 1999-05-11 2006-08-22 Cylant, Inc. Method and system for simplifying the structure of dynamic execution profiles
US6539501B1 (en) 1999-12-16 2003-03-25 International Business Machines Corporation Method, system, and program for logging statements to monitor execution of a program
US7120904B1 (en) * 2000-04-19 2006-10-10 Intel Corporation Data-flow method for optimizing exception-handling instructions in programs
GB2366879B (en) * 2000-09-16 2005-02-16 Ibm Tracing the execution path of a computer program
US7401322B1 (en) * 2001-09-25 2008-07-15 Emc Corporation Software debugging tool
US7441234B2 (en) * 2004-02-13 2008-10-21 Microsoft Corporation Correlating trace events
US20090271663A1 (en) * 2008-04-24 2009-10-29 Vining Robert G Providing detailed program state information for error analysis
US10761841B2 (en) 2018-10-17 2020-09-01 Denso International America, Inc. Systems and methods for identifying source code from binaries using machine learning

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3427443A (en) * 1965-04-08 1969-02-11 Ibm Instruction execution marker for testing computer programs
US3707725A (en) * 1970-06-19 1972-12-26 Ibm Program execution tracing system improvements
DE2246863C3 (de) * 1972-09-23 1979-01-11 Ibm Deutschland Gmbh, 7000 Stuttgart Einrichtung zur Protokollierung des Programmablaufs in einer Datenverarbeitungsanlage
US3955180A (en) * 1974-01-02 1976-05-04 Honeywell Information Systems Inc. Table driven emulation system
US4205370A (en) * 1975-04-16 1980-05-27 Honeywell Information Systems Inc. Trace method and apparatus for use in a data processing system
JPS5755456A (en) * 1980-09-19 1982-04-02 Hitachi Ltd Career recording system
JPS5829056A (ja) * 1981-08-14 1983-02-21 Nec Corp 制御記憶装置
JPS5856049A (ja) * 1981-09-30 1983-04-02 Fujitsu Ltd プログラムデバツグ方式
JPS5886648A (ja) * 1981-11-18 1983-05-24 Mitsubishi Electric Corp トレ−ス装置
US4453093A (en) * 1982-04-02 1984-06-05 Honeywell Information Systems Inc. Multiple comparison circuitry for providing a software error trace signal
US4462077A (en) * 1982-06-24 1984-07-24 Bell Telephone Laboratories, Incorporated Trace facility for use in multiprocessing environment
US4636940A (en) * 1983-03-31 1987-01-13 Hewlett-Packard Company Logic analyzer using source program or other user defined symbols in the trace specification and the trace listing
JPS603756A (ja) * 1983-06-21 1985-01-10 Meidensha Electric Mfg Co Ltd プログラム試験装置
US4598364A (en) * 1983-06-29 1986-07-01 International Business Machines Corporation Efficient trace method adaptable to multiprocessors
JPS61264447A (ja) * 1985-05-20 1986-11-22 Hitachi Ltd 命令実行事象記録装置
GB2197506A (en) * 1986-10-27 1988-05-18 Burr Brown Ltd Providing and handling break points in a software monitor

Also Published As

Publication number Publication date
US5067073A (en) 1991-11-19
EP0353886A2 (en) 1990-02-07
EP0353886A3 (en) 1991-07-10
EP0353886B1 (en) 1995-11-08
DE68924736T2 (de) 1996-06-20
JPH02236643A (ja) 1990-09-19
DE68924736D1 (de) 1995-12-14

Similar Documents

Publication Publication Date Title
JP2516255B2 (ja) 追跡方法
US5121489A (en) Tracing method for identifying program execution paths using a trace points bit map with one-to-one correspondence with embedded trace points
US7178134B2 (en) Method and apparatus for resolving memory allocation trace data in a computer system
US5950009A (en) Method and apparatus for profile-based reordering of program portions in a computer program
US7353427B2 (en) Method and apparatus for breakpoint analysis of computer programming code using unexpected code path conditions
US6205555B1 (en) Processor power consumption estimating system, processor power consumption estimating method, and storage medium storing program for executing the processor power consumption estimating method
Ulrich Exclusive simulation of activity in digital networks
US7509632B2 (en) Method and apparatus for analyzing call history data derived from execution of a computer program
US6922827B2 (en) Iterative software development environment with prioritized build rules
JP2980178B2 (ja) 並列プロセッサで処理する並列な命令ストリームを同期させる方法
US7827532B2 (en) Finite state model-based testing user interface
US5412799A (en) Efficient data processor instrumentation for systematic program debugging and development
US5799143A (en) Multiple context software analysis
US7328429B2 (en) Instruction operand tracing for software debug
US20060038811A1 (en) Fast multi-pass partitioning via priority based scheduling
US5838949A (en) System and method for execution-sequenced processing of electronic design simulation results
JPH02217926A (ja) コード生成方法
JPH08320808A (ja) エミュレーション方式
US6360360B1 (en) Object-oriented compiler mechanism for automatically selecting among multiple implementations of objects
Timmer et al. Execution interval analysis under resource constraints
JPH07334395A (ja) データ処理速度の評価方法
US20050289514A1 (en) Multi-view history mark with cycle-specific display
US20020059544A1 (en) Methods and systems for determining and displaying activities of concurrent processes
US6385763B1 (en) Methodology for mapping use cases to operations for operational profile development
US8826233B2 (en) Graphical representation of a JAVA bytecode