JPH11316696A - コンピュ―タプログラムをテストし、デバッグするための再配置可能計測タグ - Google Patents

コンピュ―タプログラムをテストし、デバッグするための再配置可能計測タグ

Info

Publication number
JPH11316696A
JPH11316696A JP11022860A JP2286099A JPH11316696A JP H11316696 A JPH11316696 A JP H11316696A JP 11022860 A JP11022860 A JP 11022860A JP 2286099 A JP2286099 A JP 2286099A JP H11316696 A JPH11316696 A JP H11316696A
Authority
JP
Japan
Prior art keywords
tagging
value
source code
variable
computer program
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.)
Granted
Application number
JP11022860A
Other languages
English (en)
Other versions
JP4249309B2 (ja
Inventor
Sidney R Maxwell
アール. マックスウェル シンディー
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.)
Applied Microsystems Corp
Original Assignee
Applied Microsystems 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 Applied Microsystems Corp filed Critical Applied Microsystems Corp
Publication of JPH11316696A publication Critical patent/JPH11316696A/ja
Application granted granted Critical
Publication of JP4249309B2 publication Critical patent/JP4249309B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/3644Software debugging by instrumenting at runtime
    • 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/3624Software debugging by performing operations on the source code, e.g. via a compiler

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)【要約】 【課題】 コンピュータプログラムをテストし、デバッ
グするための再配置可能計測タグを作成すること。 【解決手段】 タグはオフセットとベースを組み合わせ
たものに等しい値をもつ。タグオフセットの値が最初に
判断され、次にタグは計測されるソースコード内の関心
のあるエリアに挿入される。ベース値はコンピュータプ
ログラムのオブジェクトコードがリンクされて実行可能
コードが作られるときセットされる。ベース値は各タグ
が他のどのタグに対してもユニークな値をもつように解
決される。タグ付けステートメントで計測されるソース
コードは2つ以上のコンピュータに置いておくことが可
能である。計測されたソースコードは2つ以上のコンピ
ュータ上でコンパイルすることが可能である。各タグ付
けステートメントに関連づけられたユニークな値は計測
データベースに記録され、計測されたプログラムをその
実行中に容易に観察できる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はテストとデバッグの
ためにコンピュータプログラムを計測することに関し、
さらに具体的にはタグ付けステートメントを使用してコ
ンピュータプログラムを計測することに関する。
【0002】
【従来の技術】ソフトウェア開発プロセスは、多数のソ
ースコード・モジュールが集まって完全なコンピュータ
プログラムを構成しているソースコード・モジュールを
独立に作成することからなっているのが代表的である。
そのあと、これらのソースコード・モジュールはコンパ
イルされ、1つにリンクされて実行可能なコンピュータ
プログラムが作られている。複数のソフトウェア開発者
はこれらのソースコード・モジュールの1つまたは2つ
以上を書いていることがあるので、ソースコード・モジ
ュールまたはそのコンパイル済みバージョンは単一のコ
ンピュータに転送されてからリンクされているのが代表
的である。実行可能コンピュータプログラムが生成され
ると、ソフトウェア開発者は標準のテストとデバッグ手
法を使用してコンピュータプログラムをテストし、デバ
ッグすることができる。
【0003】ソースコード・モジュールは非常に多数で
あるため、その結果のコンピュータプログラムは非常に
複雑化することがよくある。コンピュータプログラムを
テストしてからデバッグすることは、どのソフトウェア
開発プロセスにおいても重要なステップであり、これら
のステップは複雑なコンピュータプログラムではますま
す重要になっている。事実、このようにデバッグを行う
こと(つまり、エラーを見つけて訂正すること)はコン
ピュータプログラムの最終ユーザが受領する前の契約上
の要件となっている場合さえある。コンピュータプログ
ラムをテストし、デバッグする難しさは、プログラムが
複雑化すると共に増加するのが一般的であり、このこと
は驚く程のことではない。また、複雑なコンピュータプ
ログラムをテストするときの困難性はソフトウェア開発
者が多くなると増加することがよくある。
【0004】コンピュータプログラムをテストすると
き、ソフトウェア開発者は各ソースコード・モジュール
が相互に独立して、その意図する機能を正しく実行する
かを確かめる共に、すべてのソースコード・モジュール
を含んでいるコンピュータプログラムもその意図する機
能を正しく実行するかを確かめる必要があるのが一般的
である。コンピュータプログラムを正しくデバッグする
ためには、ソフトウェア開発者はコンピュータプログラ
ムの実行をトレース(追跡)する必要があるのが代表的
である。実行をトレースすると、コンピュータプログラ
ムのどのステップが実行されたか、さらに、これらのス
テップが実行された順序を正確に知ることができる。
【0005】ソースコード計測は実行可能なタグ付け割
り当てステートメント、つまり、「タグ」を各所のタグ
付けポイントでコンピュータプログラムのソースコード
・モジュールの中に挿入してから、そのソースコード・
モジュールをコンパイルすることからなっているのが代
表的である。タグ付けポイントとは、機能への入口点や
出口点、選択ステートメントの代替ブランチ、およびル
ープ・ステートメントの実行といったように、ソフトウ
ェア開発者がその実行中にコンピュータプログラムのス
テート(状態)を知りたいと思っている、ソースコード
・モジュール内の関心のある場所のことである。各タグ
付けポイントで、タグ付け割り当てステートメントはタ
グ付け変数にユニークな値を割り当てているのが代表的
である。計測データベース (instrumentation database
- "IDB") は各タグ付けポイントでタグ付け変数に割り
当てられたタグ付け値のような、タグ付けポイントに関
するデータ、およびタグ付けポイントでのソースコード
・モジュールに関する情報を収めている。
【0006】そのあと、ソフトウェア開発者は、計測さ
れたコンピュータプログラムを実行し、タグ付け変数の
現在値をモニタしながらコンピュータプログラムの実行
をトレースすることができる。コンピュータプログラム
の実行中に得られたタグ付け値をセーブしておくと、コ
ンピュータプログラムの実行をトレースすることができ
る。コンピュータプログラムが実行されたあと、これら
のタグ付け値を参照すると、コンピュータプログラム内
のタグ付けポイントを知ることができる。従って、タグ
はコンピュータプログラムの特定のフラグメント(断
片)の実行を知る手段となっている。
【0007】計測は「アドレス別 (byaddress)」または
「値別 (by value)」方式を使用して実行できるのが代
表的である。アドレス別計測方式では、ユニークなアド
レスをもつユニークなメモリ・ロケーションは各タグ付
けポイント用に予約されており、タグ付けステートメン
トはタグ付け値をそのユニークなロケーションにストア
している。例えば、単一のタグ付け値が使用でき、その
タグ付け値がユニークなロケーションに書かれていれ
ば、ソフトウェア開発者はコンピュータプログラム内の
対応するタグ付けポイントが実行されたと推量すること
ができる。値別計測方式では、異なるタグ付け値が単一
のメモリ・ロケーションに書かれ、そのロケーション自
体ではなく、そのロケーションに書かれたタグ付け値が
コンピュータプログラム内の特定のタグ付けポイントに
対応している。専用プローブはこれらのタグ付け値をイ
ンターセプトし、それらをファイルに書くのが一般であ
るので、ソフトウエア開発者はそれを調べて、コンピュ
ータプログラムをデバッグするときのツールとして使用
することができる。
【0008】表1はタグで計測される前のソースコード
・モジュールの例を示したものである。ソースコード・
モジュール1は、表1に示すように、変数”A”への2
つの変数割り当てステートメント(In.4 と In.8)、"Whi
le" ループ(In.5)、関数コール(In.7)、および "if-the
n-else" ステートメント(Ins.10-16) の擬似コードを含
んでいる。ソースコード・モジュール1はタグを含んで
いないので、その実行可能コードはタグ付け値を発行し
ない(つまり、タグ付け割り当てステートメントを実行
しない)。従って、ソフトウェア開発者はソースコード
・モジュール1の発行タグ付け値の参照テーブルにアク
セスできないので、例えば、"function!" (In.7) がこ
のソースコード・モジュールによって実行されたかどう
かを確かめることができない。
【0009】
【表1】
【0010】表2は値別計測方式においてタグで計測し
た後のソースコード・モジュール1の例を示したもので
ある。インスツルメンタ (instrumenter) はタグ付け変
数"AMC Control Port" (In.2) の宣言をソースコード・
モジュール1に挿入している。(アドレス別計測方式で
は、インスツルメンタは複数のタグ付け変数の宣言を挿
入するのが代表的である。)また、インスツルメンタは
表1に示す擬似コードを含んでいるソースコード・モジ
ュール1内の各所のタグ付けポイント (Ins.7, 11, 15,
19, 21, 25) でタグ付け割り当てステートメントを挿
入している。計測されたソースコード・モジュール1を
含んでいる実行可能コンピュータプログラムは実行中に
タグを発行する。従って、ソフトウェア開発者は発行タ
グ付け値のテーブルにアクセスして、ソースコード・モ
ジュール1のどのステップが実行されたかを確かめるこ
とができる。例えば、ソフトウェア開発者は値として "
0"(In. 7) をもつタグ付け変数が発行タグ付け値のテー
ブルにストアされていることを確かめることによって、
ソースコード・モジュール1内の "function 1"(In. 8)
が実行されたかどうかを確かめることができる。"0"
がストアされていれば、ソフトウェア開発者は "functi
on 1" が実行されたと推量することができ、"0" がスト
アされていなければ、ソフトウェア開発者は "function
1" が実行されなかったと推量することができる。
【0011】
【表2】
【0012】図1は、値別ソースコード計測方式で使用
される代表的なモニタリングシステムを示す図である。
コンピュータプログラムがタグ付け割り当てステートメ
ントで計測されると、専用テスト機器はコンピュータプ
ログラムの実行をモニタする。コンピュータプログラム
がCPU 100内で実行されているとき、専用ハード
ウェア103はメモリ102内の特定のロケーションへ
のライト(write) を検出する。値別計測方式では、この
専用ハードウェアはタグ付け変数のアドレスを知ってい
る。コンピュータプログラムが実行されているとき、デ
ータはアドレス・データバス101を通してCPUとメ
モリの間で受け渡しされる。プローブ105はアドレス
バスをモニタし、タグ付け変数のアドレス・ロケーショ
ンへのデータ・ライトを探し出す。プローブはタグ付け
変数へのライトを見つけると、プローブはデータバス・
コネクション104からタグ付け値をコピーする。その
あと、プローブはタイムスタンプをタグ付け値に付けて
から、タグ付け値をコネクション106経由でデータリ
ダクション・プロセッサ (data reduction processor)
107に渡す。データリダクション・プロセッサはどの
タグ付けポイントが追加処理が必要であるかを判断す
る。例えば、データリダクション・プロセッサは関数入
口と出口タグ付け変数をペアにし、タイムスタンプの差
を計算してそれぞれの関数の実行中に消費された時間量
を判断できるようにする。そのあと、データリダクショ
ン・プロセッサはレポートを作成するが、このレポート
には、タグ付け値とそれぞれのタイムスタンプのリス
ト、「パフォーマンス」統計と共にタグ付け値で示され
た実行済み関数のリストおよびその実行を示す実行済み
タグ付け値の圧縮リスト(例えば、「カバレッジマッ
プ」)を含めることが可能である。また、このレポート
には、他の情報を含めることもできる。データリダクシ
ョン・プロセッサはこのレポートをワークステーション
に転送し、そこからレポートはグラフィカルユーザイン
タフェース (graphical user interface - "GUI") 10
8に渡される。GUI 108はデータリダクション・
プロセッサからのレポートに入っている、タグ付け値に
対応するタグ付けポイントを、IDB 109にストア
されているデータを使用して判別する。そのあと、GU
I 108は実行のフローを示すタグ付けポイントの判
別のほかに、追加情報を含めることができる複数のレポ
ートのどれかを作成する。レポートされる各タグ付けポ
イントに頻繁に付加される追加情報としては、タグ付け
割り当てステートメントがそこから実行されたソースコ
ード・モジュールの名前、タグ付け割り当てステートメ
ントを含んでいる関数の開始と終了の行番号、およびタ
グ付けポイントの性質を示す他の情報がある。ソフトウ
ェア開発者はGUIからの実行トレースレポートをモニ
タして、コンピュータプログラムが期待パラメータの範
囲内で実行されているかどうかを判断する。
【0013】あるコンピュータプログラムがその実行中
にタグ付け値を出すためには、そのコンピュータプログ
ラムは、まず、タグ付け割り当てステートメントを備え
ていなければならない。インスツルメンタはタグ付け割
り当てステートメントを、ソースコード・モジュールの
コンパイルに先立って行われる計測パス期間にコンピュ
ータプログラムのソースコード・モジュールに挿入する
のが普通である。値別タグ付け方式を使用するときは、
タグ付け割り当てステートメントは "AMC control port
= 0x12345678"のように単純形式になっているのが通常
で、そこでは、モニタされたタグ付け変数 "AMC contro
l port" はユニークなタグ付け値 "0x12345678" が割り
当てられている。図2はタグ付け値形式の例を示してい
る。この例では、値は32ビットの整数になっている。
計測パス期間に、インスツルメンタは挿入されたタグの
各々のロケーションに関する関係情報を記録し、この情
報は実行期間中のコンピュータプログラムの挙動を解釈
するためにあとで使用することができる。上述したよう
に、プローブはタグ付け変数が書かれるアドレスをモニ
タする。例えば、特定のタグが"read data" と名づけた
関数への入口を表しているとすると、実行時にコンピュ
ータプログラムがこのタグで割り当てられた特定のタグ
付け値を発行していれば、ソフトウェア開発者はコンピ
ュータプログラムが関数"read data" への入口にあるス
テートメントで実行されたものと推量することができ
る。
【0014】従来の計測方式では、コンピュータプログ
ラムを表すソースコード・モジュールは最初にコンパイ
ラのプリプロセッサによって前処理されている。このプ
リプロセッサはマクロを展開し、コメントを除去し、イ
ンクルードファイルを展開している。そのあと、インス
ツルメンタはこれらの前処理されたソースコート・モジ
ュールを受け取り、タグ付け割当ステートメントを追加
している。コンパイラは計測されたソースコード・モジ
ュールからオブジェクトコードを生成し、そのあとリン
カはオブジェクトコードを結合して実行可能コードを作
っている。
【0015】コンピュータプログラムのすべてのソース
コード・モジュールが同時に計測されるときは、インス
ツルメンタは各タグ付けポイントにユニークなタグ付け
値を割り当てることができる。しかし、種々のソースコ
ード・モジュールが(例えば、異なるソフトウェア開発
者によって)異なる時間に計測され、コンパイルされる
場合は、問題が発生することになる。具体的には、イン
スツルメンタは2つの異なるタグ付けポイントで同じタ
グ付け値を割り当てることがある。その結果、コンパイ
ラがこのタグ付け値を出したとき、これはタグ付けポイ
ントをユニークに識別していないので、ソフトウェア開
発者は実行フローをトレースすることが困難になる場合
がある。
【0016】表3は表2に示す、計測されたソースコー
ド・モジュール1を示し、表4は計測されたソースコー
ド・モジュール2を示している。これらのソースコード
・モジュールはどちらも、異なる時間期間で計測を行う
と起こるように、他方に割り当てられたタグ付け値を無
視して計測されている。従って、これらのソースコード
・モジュールの両方を含んでいるコンピュータプログラ
ムが、例えば、実行中に値が"0" であるタグを出したと
すると、ソフトウェア開発者はプログラムがソースコー
ド・モジュール1の function 1 (In. 8) へのコールを
実行したのか、あるいはプログラムがソースコード・モ
ジュール2の "if" ステートメント(In.6) を実行した
のか分からないことになる。実際には、ソースコード・
モジュール1は10個のタグ付け値をソースコード・モ
ジュール2と共有している。従って、コンピュータプロ
グラムの実行中に出されたどのタグも、それがソースコ
ード・モジュール1で出されたものかを確認することが
できず、10番目のタグに続く、ソースコード・モジュ
ール2内のタグだけがユニークな値を出すことになる。
【0017】
【表3】
【0018】
【表4】
【0019】
【発明が解決しようとする課題】いくつかのインスツル
メンタは、これから生成されるコンピュータプログラム
のバージョンでも使用される、コンピュータプログラム
の以前バージョンからソースコード・モジュールに対し
て生成されたIDBを参照するためのメソッドを用意し
ている。ソースコード・モジュールがコンピュータプロ
グラムの以前バージョン以後に変更されていなければ、
計測プロセスは変更されなかったソースコード・モジュ
ールを再計測しないことで効率化されている。しかし、
コンピュータプログラムの新バージョンの計測プロシー
ジャで割り当てられたタグ付け値がそのコンピュータプ
ログラムの新バージョンでも使用される、コンピュータ
プログラムの以前バージョンで割り当てられたタグ付け
値と矛盾していないことを確かめる注意が必要である。
【0020】いくつかの従来システムは、上記に提示し
たこの効率化された増分計測プロシージャをサポートし
ている。このアプローチでは、変更されたソースコード
・モジュールが1つだけであれば、そのソースコード・
モジュールだけを再計測し、コンパイルするだけでコン
ピュータプログラム全体をリンクし直している。しか
し、これらの従来システムには、ソフトウェア開発者が
開発サイクルのその時点までに割り当てられたすべての
タグ付け値を含んでいるIDBのセットを、インスツル
メンタに指示しなければならないという制約がある。構
成マネージャがソフトウェア開発者と協力してソースコ
ード・モジュールの制御を調整しているような集中化コ
ンパイル環境では、この制約はそれほど制限的ではな
い。このような集中化環境のソフトウェア開発者は制御
化されたプロシージャでソースコード・モジュール、オ
ブジェクトコード・ファイル、およびIDBの特定バー
ジョンを見つけることができるので、コンピュータプロ
グラムの以前バージョンからのIDBを識別することは
比較的簡単であることが想像される。しかし、このメカ
ニズムは最近の多くのソフトウェア開発プロジェクトの
典型である、大規模な非集中化環境では挫折している。
ソフトウェア開発者グループが分散化すると、各グルー
プは多数のプロジェクトで、あるいは同一プロジェクト
に属する種々ソフトウェア開発者グループのために使用
されるオブジェクトコードのダイナミックリンクライブ
ラリまたはコンパイルライブラリの構築を担当すること
になる。コンピュータ・プログラムの新バージョンの作
成に対する制御が集中化されていないと、これらのライ
ブラリの各々は独立に計測されることになるので、イン
スツルメンタによって割り当てられたタグ付け値に矛盾
が起こることになる。実行時には、これらの矛盾するタ
グ付け値は、同一タグ付け値が複数のソースコード・モ
ジュールを指すことがあるため分析プロセスを混乱さ
せ、また、コンピュータプログラムのモニタリングツー
ルはどのタグ付け値がどのソースコード・モジュールを
表しているのかが分からなくなる。
【0021】さらに、集中化コンパイルモデルはコンピ
ュータプログラムのバージョンのパラレル作成をサポー
トしていない。最近のソフトウェアプロジェクトは非常
に大規模であることが頻繁であるために、コンピュータ
プログラムのコンパイルとリンクを1台のマシンで行う
ことは実用目的に合っていない。ネットワーク環境で
は、コンパイルプロセスは多くのマシンに分散されてい
るので、これらのマシンがソースコード・モジュールを
パラレルにコンパイルすることが可能で、コンパイルは
全時間の数分の1で完了し、代表例として全時間の1/
n(ただし、nはコンパイルに関与するマシンの台数)
で完了している。従って、コンピュータプログラムのあ
るバージョンが1000個のソースコード・モジュール
からなり、ソースコード・モジュールの100個が10
台のマシンでコンパイルされるとすれば、開発者はコン
パイルが行われる10台のマシンの各々でも計測を行う
必要がある。タグ付け値の解決がこれらのマシン間で正
しく調整されていないと、その結果のコンピュータプロ
グラムは種々のソースコード・モジュールに挿入された
タグ付け値に無数の矛盾を含むことになる。
【0022】
【課題を解決するための手段】本発明の実施例は、複数
のソースコード・モジュールからなるコンピュータプロ
グラムを、タグ付け割り当てステートメントを使用して
計測する方法およびシステムを提供している。各タグ付
け割り当てステートメントにおけるタグ付け変数のユニ
ークな値は、オフセット値とベース値を組み合わせたも
のに等しい値をタグ付け変数に割り当てることによって
得られる。本発明のオフセット・タグ付けインスツルメ
ンタはタグ付け割り当てステートメントで計測しようと
する各ソースコード・モジュールごとにユニークなベー
ス変数を生成する。そのあと、オフセット・タグ付けイ
ンスツルメンタはソースコード・モジュールを調べ、計
測ポイントの個所にタグ付け割り当てステートメントを
挿入する。挿入されたタグ付け割り当てステートメント
はオフセット値と、そのソースコード・モジュールの生
成されたベース変数とを組み合わせたものに等しい値に
タグ付け変数をセットする。オフセット・タグ付けイン
スツルメンタは、ソースコード・モジュール内の各タグ
付け割り当てステートメントごとにユニークなオフセッ
ト値を生成する。コンパイラは計測されたソースコード
・モジュールからオブジェクトコードを生成する。ベー
ス値リゾルバは、生成されたオフセット値と生成された
ベース変数の値の各組み合わせが各計測ポイントをユニ
ークに識別するように、各生成されたベース変数ごとに
ユニークな値を割り当てるソースコード・ステートメン
トを生成する。コンパイラは生成されたソースコード・
ステートメントをコンパイルする。リンカはコンパイル
された計測済みソースコード・モジュールをコンパイル
された生成済みソースコード・ステートメントとリンク
し、リンクされたプログラムを作り、このリンクされた
プログラムの実行期間に、タグ付け変数が各計測ポイン
トでユニークな値にセットされるようにする。各生成済
みベース変数のベース値の判断はリンク時まで延期され
るので、ベース値リゾルバは各モジュール内の各タグ付
け割り当てステートメントがタグ付け変数を、リンクさ
れたすべてのモジュール間でユニークである値にセット
しているかを確かめることができる。
【0023】
【発明の実施形態】本発明の実施例によれば、複数のコ
ンピュータでタグ付けによるパラレル計測をサポートす
る計測タグ付け方法および装置が提供されている。本発
明の実施例によれば、タグ付け値が以前に計測されたソ
ースコード・モジュールと、または異なるコンピュータ
システムで計測されたソースコード・モジュールと矛盾
することなく、1つまたは2つ以上の変更されたソース
コード・モジュールの計測を可能にするオフセット・タ
グ付けインスツルメンタが提供されている。従来のタグ
付け割り当てステートメントを修正すれば、これらの計
測機能を拡張することが可能である。
【0024】オフセット・タグ付けインスツルメンタ
は、タグ付け値をタグ付けポイントに実際に関連づける
のを、計測されたプログラムが実行されるまで延期する
ことによって各タグ付けポイントにユニークなタグ付け
値が割り当てられることを確かめる。オフセット・タグ
付けインスツルメンタは、タグ付けベース変数とタグ付
けオフセットを組み合わせてタグ付け変数のタグ付け値
を作るようにするタグ付け割り当てステートメントを採
用している。各ソースコード・モジュールはユニークな
タグ付けベース変数をもち、各タグ付けポイントはソー
スコード・モジュール内でユニークであるタグ付けオフ
セット値をもっている。計測時に、オフセット・タグ付
けインスツルメンタは一定のタグ付けオフセット値をソ
ースコード・モジュールのベース変数と組み合わせるタ
グ付け割り当てステートメントを挿入する。リンク時
に、タグ付けベース値リゾルバは各タグ付けベース変数
ごとにユニークなベース値を生成し、各タグ付け割り当
てステートメントがユニークなタグ付け値を生成するよ
うにする。そのあと、タグ付けベース値リゾルバは各タ
グ付け変数をそのユニークな値に初期化することを実行
する。実行時に、タグ付け割り当てステートメントが実
行されると、ソースコード・モジュールのタグ付けベー
ス変数に割り当てられた値はタグ付け割り当てステート
メントに割り当てられた一定のタグ付けオフセット値と
組み合わされて、全モジュール間でユニークであるタグ
付け値が作られる。そのあと、タグ付け変数はユニーク
なタグ付け値に等しい値にセットされる。このようにす
ると、異なる時間に計測されるソースコード・モジュー
ルはタグ値に矛盾を引き起こすことなく、ひとつにリン
クすることができる。これらのタグ付け割り当てステー
トメントがリンク時「再配置可能」と呼ばれるのは、特
定のステートメントに割り当てられたタグ付け値の範囲
がリンク時に変化することがあるためである。
【0025】ユニークなタグ付け値はタグ付けオフセッ
ト値とタグ付けベース変数の値を組み合わせたものであ
る。一実施例では、各ソースコード・モジュールのオフ
セット値は"0" の値で始まっている。そのあと、オフセ
ット・タグ付けインスツルメンタは、オフセット・タグ
付けインスツルメンタが新しいタグ付け割り当てステー
トメントをソースコード・モジュールに追加するたび
に、タグ付けオフセット値を1ずつインクリメントして
いく。従って、10個のタグ付け割り当てステートメン
トを含んでいるソースコード・モジュールは0から9ま
でのタグ付け値の範囲と次のタグ付けオフセット値10
をもつことになる。次のタグ付けオフセット値は別のタ
グ付け割り当てステートメントをソースコード・モジュ
ールに挿入する必要が起こったとき使用されるタグ付け
オフセット値を示している。各ソースコード・モジュー
ルはユニークなベース変数をもっている。一実施例で
は、リンク時に判断されるときの、第1モジュールのタ
グ付けベース変数の値は0になっている。第2モジュー
ルのタグ付けベース変数の値は第1モジュールの次のタ
グ付けオフセット値に第1モジュールのタグ付けベース
値を加えたものである。例えば、第1モジュールの次の
タグ付けオフセット値が10であれば、第2モジュール
のタグ付けベース値は10(つまり、10 + 0)の値をも
つことになる。第3モジュールのタグ付けベース変数の
値は第2モジュールの次のタグ付けオフセット値に第2
モジュールのタグ付けベース値を加えたものである。例
えば、第2モジュールの次のタグ付けオフセット値が1
2であれば、第3モジュールのタグ付けベース値は22
(つまり、12 + 10)である。それ以降のモジュールのタ
グ付けベース値は先行モジュールの次のタグ付けオフセ
ット値の和に等しく、これは先行モジュールのベース値
と次のタグ付けオフセット値の和と等価である。このよ
うにすると、結果のタグ付け値はタグ付けオフセット値
がタグ付けベース変数の値に加えられるとき、各タグ付
け割り当てステートメントごとにユニークになる。図3
はリンク時再配置可能タグ付け値の生成を示している。
【0026】図4は本発明の実施例に関連するIDBの
サンプルを示す図である。これらのIDBはタグ付け値
および計測に必要な他の情報を収めている。各IDBは
1つのソースコード・モジュールを表すことができる。
IDB1 301は計測されたソースコード・モジュー
ルのタグ付けポイント0から9までを表すデータを収め
ている。IDB1はタグ付けベース変数をもち、その値
はタグ付けベース変数リゾルバによってリンク時に設定
され、0になっており、さらに次のタグ付けオフセット
値10をもっている。IDBはタグ付けベース変数の名
前を含んでいるので、タグ付けベース変数レゾルバはあ
るタグ付けベース変数に関連するIDBを見つけること
ができ、このタグ付けベース変数はIDBがリンク時再
配置可能タグを含むタイプであることを示すのに役立っ
ている。オフセット・タグ付けインスツルメンタはタグ
付けポイントのデータと次のタグ付けオフセット値をス
トアする。同様に、IDB2 302は12個のタグ付
けポイントを表すデータと次のタグ付けオフセット値1
2を収めている。IDB2は次のタグ付けオフセット値
10をもっているので、タグ付けベース値リゾルバによ
って最終的にIDB2に割り当てられたタグ付けベース
変数の値は10になっている。同様に、IDB3 30
3のタグ付けベース値が22であるのは、IDB1の次
のタグ付けオフセット値が10であり、IDB2の次の
タグ付けオフセット値が12であるためである(例え
ば、0から21までのユニークな値はIDB1とIDB
2ではすでに選択されている)。もちろん、前述したよ
うに、タグ付けベース値はそれぞれのオブジェクトコー
ド・モジュールがリンクされて実行可能コードが作られ
るまでは生成されず、ユニークなタグ付け値自体は各タ
グ付け割り当てステートメントが実行されるまでは実際
には生成されない。さらに、本発明のいくかの実施例で
は、2つ以上のタグ付けベース変数を任意のIDBにス
トアすることが可能であり、各タグ付けベース変数は異
なるタイプのタグ付けステートメントを示している。し
かし、このようなタグ付け方式はここで説明している方
式を単に拡張したものにすぎない。
【0027】表5、表6、および表7は計測されたソー
スコード・モジュール1、2、および3を示しており、
これらはそれぞれ図4のIDB1、IDB2およびID
B3に対応している。表5において計測されたソースコ
ード・モジュールを表す擬似コードの先頭に示すよう
に、オフセット・タグ付けインスツルメンタはタグ付け
変数の宣言ステートメントを挿入しており、その宣言ス
テートメントは、この例では、"AMC control port" (I
n. 3)と名づけた external volatile unsigned long変
数になっている。オフセット・タグ付けインスツルメン
タはIDB1とソースコード・モジュール1に関連づけ
られたタグ付けベース変数である、"IDB1 base" (In.
4) の宣言も挿入している。そのあと、オフセット・タ
グ付けインスツルメンタはソースコード・モジュールを
調べ、9行目のように関心のあるポイントにタグ付け割
り当てステートメントを挿入する。この特定タグ付け割
り当てステートメントはfunction 1 (In. 10) へのコー
ルが実行されることをソフトウェア開発者に警告する。
オフセット・タグ付けインスルメンタによって挿入され
たタグ付け割り当てステートメントはタグ付けベース変
数値にタグ付けオフセット値を加えたものからなり、 "
AMC control port =タグ付けベース変数 + 0x1234567
8" と類似の形式になっている。オフセット・タグ付け
インスツルメンタはその終わりに到達するまで、このソ
ースコード・モジュール内の関心のあるタグ付けポイン
トを継続する。表5に示すように、ソースコード・モジ
ュール内の最後のタグ付けポイントはそのソースコード
・モジュールの終わりに置かれており、タグ付け値 UDB
1 baseにタグ付けオフセット値9 (In. 27)を加えた値
をもつタグ付け割り当てステートメントによって表され
ている。オフセット・タグ付けインスツルメンタはこれ
らのタグ付け割り当てステートメントに関係するデータ
も、前述したようにIDB1に挿入する。
【0028】同様に、計測されたソースコード・モジュ
ール2も、表6に示すように、タグ付け変数の宣言ステ
ートメント "AMC control port" (In. 31)と変数の宣言
"IDB2 base" (in. 4) を含んでおり、これは計測され
たソースコード・モジュール2のタグ付けベース変数を
表している。そのあと、オフセット・タグ付けインスツ
ルメンタはソースコード・モジュール2を調べ、関心の
ある各所のポイントでタグ付け割り当てステートメント
をソースコード・モジュールに挿入する。例えば、"AMC
control port = IDB2 base + 1" (In. 11) で表された
タグ付け割り当てステートメントは実行されると、"if"
ステートメント ("A 12"(In. 8))の"then" 部分が
実行されたことを示している。もっと正確には、このタ
グ付けステートメントのロケーションは変数 "A"に "A
- 10" (In. 12) の値が割り当てられたことも示してい
る。ソースコード・モジュール内の最後のタグ付けポイ
ントは "AMC control port = IDB2 base + 11" (In. 2
2) である。オフセット・タグ付けインスツルメンタ
は、ソースコード・モジュール2がタグ付け割り当てス
テートメント0から11までと次のタグ付けオフセット
値12をもつことを示すデータをIDB2にストアす
る。
【0029】最後に、オフセット・タグ付けインスツル
メンタは表7に示すソースコード・モジュール3を調べ
る。前の2ソースコード・モジュールと同じように、オ
フセット・タグ付けインスツルメンタは"AMC control p
ort"変数 (In. 3) の宣言を挿入する。オフセット・タ
グ付けインスツルメンタはタグ付け変数 "IDB2 base"(I
n. 4) の宣言も挿入する。そのあと、オフセット・タグ
付けインスツルメンタはタグ付け割り当てステートメン
トの使用によって、このソースコード・モジュール内の
関心のあるタグ付けポイントを継続する。最後のタグ付
け割り当てステートメント "AMC control port = IDB3
base + 6"(In. 10) はソースコード・モジュール3の終
わりに置かれている。
【0030】
【表5】
【0031】
【表6】
【0032】
【表7】
【0033】図5は本発明の実施例によるソースコード
・モジュールの計測のためのフローチャートを示してい
る。オフセット・タグ付けインスツルメンタは各ソース
コード・モジュールを選択し、宣言ステートメントとタ
グ付け割り当てステートメントを選択したモジュールに
挿入し、データをIDBにストアする。最初に、オフセ
ット・タグ付けインスツルメンタは計測を必要とするソ
ースコード・モジュールがまだ残っているかどうかを判
断する(ステップ401)。計測を必要とするソースコ
ード・モジュールが残っていなければ、オフセット・タ
グ付けインスツルメンタは終了する。しかし、計測を必
要とするソースコード・モジュールがまだ残っていれ
ば、オフセット・タグ付けインスツルメンタは次に計測
するソースコード・モジュールを選択する(ステップ4
02)。次に、オフセット・タグ付けインスツルメンタ
はタグ付けオフセット値を0にリセットする(ステップ
403)。オフセット・タグ付けインスツルメンタは新
しい計測データベースをオープンし、その新IDBの名
前を選択する(ステップ404)。また、オフセット・
タグ付けインスツルメンタはこの選択した名前を使用し
て、計測すべきソースコード・モジュールに挿入する新
しいタグ付けベース変数の名前を生成する。そのあと、
オフセット・タグ付けインスツルメンタはソースコード
・モジュールを調べることを開始する(ステップ405
〜411)。オフセット・タグ付けインスツルメンタは
タグ付変数の宣言をソースコード・モジュールに挿入し
(ステップ405)、そのあと、このソースコード・モ
ジュールのタグ付けベース変数の宣言を挿入する(ステ
ップ406)。これらの宣言はAMC control port、IDB1
ba se、IDB2 base 、およびIDB3 base の表5、表6、
および表7に示す宣言に似ている。そのあと、オフセッ
ト・タグ付けインスツルメンタはループし、タグ付け割
り当てステートメントを挿入する(ステップ407〜4
11)。オフセット・タグ付けインスツルメンタはタグ
付けポイントがソースコード・モジュールに残っている
かどうかを判断する(ステップ407)。タグ付けポイ
ントが残っていれば、オフセット・タグ付けインスツル
メンタはソースコード・モジュール内の次のタグ付けポ
イントを見つける(ステップ408)。次のタグ付けポ
イントを見つけると、オフセット・タグ付けインスツル
メンタはタグ付け割り当てステートメントを挿入する
(ステップ409)。このタグ付け割り当てステートメ
ントは前述したように、"AMC control base = タグ付け
ベース変数プラス現タグ付けオフセット値" の形式にな
っているのが代表的である。さらに、タグ付けエントリ
が該当のIDBに作られる(ステップ411)。このタ
グ付けエントリはそのタグ付けポイントのタグ付けオフ
セット値、タグ付けポイントでのソースコードの情報、
およびインクリメントされたオフセットへの次のタグ付
けオフセット値のセット状態を収めているのが普通であ
る。そのあと、オフセット・タグ付けインスツルメンタ
はループし(ステップ407へ)、次のタグ付けオフセ
ットを処理する。このソースコード・オブジェクトの計
測を終えると、このソースコード・モジュールのIDB
はクローズされる(ステップ412)。そのあと、オフ
セット・タグ付けインスツルメンタはループし(ステッ
プ401へ)、計測の必要があるソースコード・モジュ
ールがほかにあるかどうかを判断する。
【0034】前述したように、タグ付けベース変数は計
測プロシージャ期間または計測されたソースコード・モ
ジュールのコンパイル時に値が割り当てられていない。
タグ付けベース変数の値はリンク時に割り当てられるの
で、リンク・プロシージャだけを集中化する必要があ
る。従って、このプロシージャはコンピュータプログラ
ムの新バージョンの代表的パラレルコンパイルをサポー
トしている。実行可能コンピュータプログラムをリンク
するのと同じように、一実施例における計測リンカはタ
グ付けベース値リゾルバを含んでおり、このリゾルバは
最終タグ付け値の間に矛盾が残らないように、各タグ付
けベース変数に必要な値と各オブジェクトコード・ファ
イルが必要とするタグ付け値範囲を解決する。このプロ
セスはパラレルにコンパイルできる数千のソースコード
・モジュールを含む巨大なコンピュータプログラムの計
測をサポートするので、大量の時間が節減される。オブ
ジェクトコード・ファイルのリンクが単一コンピュータ
で行われるときは、コンピュータプログラムの実行時に
割り当てられる実際のタグ付け値を最終化する計測リン
クプロセスも同じである。従って、変数 IDB1 base、ID
B2 base およびIDB3 base は、図4および表5、表6、
表7を参照して上述したように、コンピュータプログラ
ムを表すオブジェクトコード・ファイルのリンク前は固
定した値をもっていない。表8に示すように、計測リン
カは解決されたタグ付けベース変数のソースコード・ス
テートメントを準備し、これはそのあとコンパイルさ
れ、計測されたソースコード・モジュールのオブジェク
トコード・ファイルとリンクされる。表8に示すよう
に、計測リンカはIDB1のタグ付けベース変数 IDB1
baseを0の値(In. 3) にセットするソースコードを準備
する。同様に、IDB2のタグ付けベース変数 (IDB2 b
ase)は値が10 (In. 5) になり、IDB3のタグ付け
ベース変数 (IDB3 base)は値が22 (In. 7) になる。
【0035】
【表8】
【0036】タグ付けベース値リゾルバはある範囲のタ
グ付け値を回避することができる。この機能はそのいく
つかを以下で説明するが、さまざまな異なるコンテキス
トでソフトウェア開発者のために計測プロセスを単純化
する。
【0037】第一に、コンピュータプログラムはめった
に変化しない多数のソースコード・モジュールを含むこ
とが可能であり、この中には、ソースコード・モジュー
ルライブラリなどの形態のレガシコードが含まれる。
(レガシコードには、タグ付け変数を定数値にセット
し、従ってリンク時再配置可能タグ付け値の使用と互換
性のないタグ付け割り当てステートメントで計測された
コードが含まれる。)計測プロシージャはソースコード
・モジュールが変更されない限り、ソフトウェア開発者
がそのモジュールを一度計測するだけで済むならば、よ
り効率的になることは明らかである。
【0038】第二に、ソフトウェア開発者はオフセット
・タグ付けインスツルメンタを使用して計測されていな
いソースコード・モジュールのためにある範囲のタグ付
け値を残しておきたい場合がある。例えば、ソフトウェ
ア開発者は特にエラーを起こしやすいソースコード・モ
ジュールを手作業で計測し、オフセット・タグ付けイン
スツルメンタで通常挿入されるよりも、はるかに多いタ
グ付け割り当てステートメントを挿入することを望んで
いる場合がある。そのような場合には、ソフトウェア開
発者は挿入されたタグ付け割り当てステートメントに値
を割り当てるだけにしておき、そのタグ付け値がそのコ
ンピュータプログラムの他のソースコード・モジュール
のために解決されるとき、その範囲のタグ付け値を避け
るようにタグ付けベース値リゾルバに指示することがで
きる。
【0039】第三に、いくつかのソースコード・モジュ
ールはコンピュータプログラムのあるバージョンから次
のバージョンまでに変更されないことがある。これらの
ソースコード・モジュールは以前に計測されたことがあ
り、それぞれのタグ付け値はまだユニークである場合が
ある。従って、ソフトウェア開発者はこれらの以前に計
測され、現在未変更であるソースコード・モジュールに
割り当てられた範囲のタグ付け値を残しておき、変更さ
れた後でコンピュータプログラムの最新バージョンで再
計測されたソースコード・モジュールだけの新タグ付け
値を判断するようにタグ付けベース値リゾルバに指示す
るだけで、より効率的なアクションコースがとれること
を望んでいる場合がある。
【0040】第四に、上記の第3の例はコンピュータプ
ログラムのあるバージョンでの次のタグ付けオフセット
値を、追加のタグ付け割り当てステートメントがタグ付
けベース変数の再計算を必要としないで、コンピュータ
プログラムの以後のバージョンで挿入できるようにセッ
トするようにすると、さらに改善することができる。例
えば、表5を参照して上述したように、計測されたソー
スコード・モジュール1の次のタグ付けオフセット値は
10までの値にセットすると、ユニークなタグ付け値が
保証されることになる。しかし、計測されたソースコー
ド・モジュール1の次のタグ付けオフセット値が10で
なく、12にセットされていれば、2つの追加タグ付け
割り当てステートメントを、どのベース変数(例えば、
IDB2 base)の再計算も必要としないでコンピュータプロ
グラムの以後のバージョンでソースコード・モジュール
に追加することが可能になり、しかも、コンピュータプ
ログラムのユニークなタグ付け値が保証されることにな
る。
【0041】第五に、本発明のいくつかの実施例は、コ
ンピュータプログラムの第1バージョンのときに、計測
リンカがコンピュータプログラムの計測されたソースコ
ード・モジュールのタグ付けベース変数を判断するだけ
でなく、各タグ付け割り当てステートメントの実際のタ
グ付け値も判断するように構成することができる。(前
述したように、実際のタグ付け値はコンピュータプログ
ラムの実行時に判断されるのが代表的である。)この実
施例では、そのあと計測リンカは、各計測されたソース
コード・モジュールのそれぞれのIDBにその値範囲を
保存しておくといったように、その実際のタグ付け値範
囲を保存しておく。コンピュータプログラムの以後のバ
ージョンの計測プロシージャでは、オフセット・タグ付
けイスツルメンタは各計測されたソースコード・モジュ
ールを調べて、その計測されたソースコード・モジュー
ルがコンピュータプログラムの以前バージョンから変更
されたかどうかを判断する。あるソースコード・モジュ
ールが変更されていなければ、オフセット・タグ付けイ
ンスツルメンタはそのソースコード・モジュールの実際
のタグ付け値範囲をリトリーブし、「タグ付け変数=ベ
ース変数およびタグ付けオフセット値」形式のタグ付け
割り当てステートメントを「タグ付け変数=実際のタグ
付け値」形式のタグ付け割り当てステートメントで置き
換える。未変更のソースコード・モジュールに対してこ
の単純化されたタグ付け割り当てステートメントを使用
すると、それぞれのタグ付け値範囲をコンピュータプロ
グラムの実行時にではなく、コンパイルプロセス時に割
り当てることが可能になる。もちろん、この実施例が正
しく動作するためには、タグ付けベース値リゾルバは予
約されたタグ付け値範囲を受け取って、それぞれのタグ
付け値範囲が予約タグ付け値にオーバラップしないよう
にタグ付けベース変数を解決できなければならない。
【0042】図6および図7は本発明の実施例のための
タグ付けベース変数値解決プロシージャのフローチャー
トを示す図である。このプロシージャは各モジュールを
選択し、予約値範囲が使用されないようにして、選択し
たモジュールのタグ付けベース変数の値を割り当てる。
最初のステップとして、プロシージャはコンピュータプ
ログラムのこのバージョンで旧IDBがリンクされるか
どうかをチェックする(ステップ501)。このような
旧IDBが存在することはそのタグ付け値がリンク時再
配置可能でない、計測されたソースコード・モジュール
であること表しているのが一般である。上述した理由に
より、これらの旧IDBはすでにタグ付け値が割り当て
られているので、必要なことはそのタグ付け値範囲用に
スペースが予約されることだけである。旧IDBが存在
していれば(ステップ502)、プロシージャはこれら
の旧IDBを選択する(ステップ503)。プロシージ
ャは各IDB用に予約するタグ付け値範囲のレコードを
作成する(ステップ504)。プロシージャは旧IDB
が存在すると、予約フラグ値を真にセットする(ステッ
プ505)。プロシージャはスペースを予約する必要の
ある旧IDBがなくなるまで続行する。必要なスペース
すべてが予約されると、プロシージャは累積タグ付けオ
フセット値をゼロにセットする(ステップ506)。そ
のあと、プロシージャはループして、リンク時再配置可
能タグ付け値を使用する各モジュールごとにタグ付けベ
ース値を割り当てる(ステップ507−516)。プロ
シージャは次の新IDBを選択する(ステップ50
7)。新IDBのすべてがすでに選択されていれば、プ
ロシージャは終了する(ステップ508)。そうでなけ
れば、プロシージャはタグ付けベース変数を累積タグ付
けオフセット値に等しい値セットする(ステップ50
9)。次に、プロシージャはこのIDBの次のタグ付け
オフセット値をリトリーブする(ステップ510)。そ
のあと、プロシージャはタグ付けベース変数の提案値と
このIDBの次のタグ付けオフセット値をチェックし、
その提案タグ付け値範囲が予約タグ付け値のどれかと矛
盾しているかどうかを判断する。もちろん、このステッ
プは予約値フラグが真にセットされたことがなければス
キップすることができる(ステップ511)。提案範囲
に矛盾がなければ、タグ付けベース値リゾルバは提案値
をタグ付けベース変数に割り当てるソースコード・ステ
ートメントを準備する(ステップ514)。タグ付けベ
ース変数のために提案値を使用すると矛盾が起こる場合
は、タグ付けベース値リゾルバはタグ付けベース変数用
に別の値を選択し、このIDB用のタグ付け値範囲が予
約されたタグ付け値範囲と矛盾しないようにする(ステ
ップ513)。タグ付けベース変数用の値が判断される
と、タグ付けベース値リゾルバはそのIDBのタグ付け
値をマスタIDBにストアし、このマスタIDBは最終
的にはコンピュータプログラムのすべてのタグ付け値を
収容することになり、プログラム実行時にワークステー
ションGUI(例えば、図1のワークステーションGU
I)によって参照することができる(ステップ51
5)。次に、プロシージャは累積タグ付けオフセット値
を最後にリトリーブした次のタグ付けオフセット値だけ
インクリメントする(ステップ516)。そのあと、プ
ロシージャはループし(ステップ507へ)次のIDB
を選択する。従って、タグ付けベース値リゾルバはID
Bのすべてからの情報を合体しているマスタIDBを作
成することも可能である。このマスタIDBは旧スタイ
ルのIDBのフォーマットになっている(例えば、タグ
付けベース変数の名前を収めていないIDB)。代替実
施例として、タグ付けベース値リゾルバは値がそのタグ
付けベース変数に割り当てられた後で、各IDB用に旧
スタイルのIDBを作成するが可能である。
【0043】図8は本発明の実施例の計測プロセスを示
す図である。4個のソースコード・モジュール600
a、600b、600c、および600dは計測前のコ
ンピュータプログラムを表している。ソースコード・プ
リプロセッサ601はコメントを取り除き、これらのソ
ースコード・モジュールからのマクロを展開する。オフ
セット・タグ付けインスツルメンタは、次に、ソースコ
ード・モジュールを検査し、図5に示すように該当のタ
グ付けポイントを探し出す。オフセット・タグ付けイン
スツルメンタはその検査プロシージャ期間にIDB 6
03a、603b、603c、および603dを作成す
る。代表例として、オフセット・タグ付けインスツルメ
ンタは図8に示すように、各ソースコード・モジュール
ごとに1つのIDBを作成する。別の例として、複数の
ソースコード・モジュールのデータを1つのIDBにス
トアすることも可能である。オフセット・タグ付けイン
スツルメンタは計測されたソースコード・モジュール6
04も作成する。代替実施例では、オフセット・タグ付
けインスツルメンタは検査された各ソースコード・モジ
ュールごとに計測済みソースコード・モジュールを作成
することもできる。コンパイラ605は計測されたソー
スコードからオブジェクトコードを生成する。リンカ6
06のタグ付けベース値リゾルバは図6および図7に示
すようにタグ付けベース変数の値を判断し、タグ付けベ
ース変数を初期化するソースコード・ステートメントを
生成する。生成されたソースコード・ステートメントは
コンパイルされ、コンパイル済みコードとリンクされて
実行可能コード610が作られる。その結果の実行可能
コード610はコンピュータプログラムをテストするた
めに使用できる。
【0044】図9はソースコード・モジュールが2台以
上のコンピュータで計測され、コンパイルされるようし
た本発明の実施例を示す図である。第1ソースコード・
モジュール701aはコンピューティングマシン1上に
置かれている。オフセット・タグ付けインスツルメンタ
702aはこのソースコードを使用してIDB 704
aとコンパイル済みコード705aを作成する。同じよ
うに、コンピューティングマシン2には、2つのソース
コード・モジュール701bと701cが置かれてい
る。これらのソースコード・モジュールはオフセット・
タグ付けインスツルメンタ702a用に用意されたもの
で、IDB2 704bとIDB3 704cをコンパ
イル済みコード705cと一緒に作成する。同様に、コ
ンピューティングマシン3では、オフセット・タグ付け
インスツルメンタはソースコード・モジュール4 70
1dを使用してIDB4 704dとコンパイル済みコ
ード705cを作成する。コンパイル済みコードを表す
オブジェクトファイルの各々はコンピューティングマシ
ンNに渡される。このコンピューティングマシンNはど
の該当コンピューティングマシンにすることも可能であ
り、前述の3コンピューティングマシンの1つであって
も構わない。同様に、3コンピューティングマシンで作
成されたIDBのすべてはコンピューティングマシンN
に渡される。リンカ710は各コンピューティングマシ
ンで作成されたオブジェクトコードを使用して実行可能
コードを生成する。リンカのタグ付けベース値リゾルバ
は前述したように、IDBで表されたタグ付け値の各々
ごとにタグ付けベース変数の値を解決し、その結果の実
行可能コードがユニークなタグ付け値を含むようにす
る。最後に、図10は本発明の代替実施例を示す図であ
る。オフセット・タグ付けインスツルメンタがIDBを
作成するとき、あらかじめ決めたパッディング範囲を組
み込むことも可能である。IDB 800、801およ
び803は各々がそのようなパッディング範囲が組み込
まれている。このパッディング範囲を使用すると、追加
のタグ付け割り当てステートメントを、そのIDBで表
されたタグ付け値の最大範囲を変更することなく特定の
IDBに組み入れることが可能になる。大きなコンピュ
ータプログラムが以前に計測された種々のソースコード
・モジュールのすべてを含んでいて、ソフトウェア設計
者が最初のソースコード・モジュールに1行分のコード
だけを追加したため、タグ付け割り当てステートメント
が1つ追加されたときは、このIDBと他のすべてのI
DB用のタグ付けベース変数の値は、この新しいタグ付
け割り当てステートメントがパッディング値で与えられ
た範囲内にまだ収まっているので、変更されることがな
い。従って、このプロシージャを使用すると、計測・リ
ンクプロセスが高速化する。
【0045】図11は本発明によって提供されるタグ付
け値の代替実施例を示し、タグ付けオフセット値と連結
されたタグ付けベース変数からなっている。上述したタ
グ付け値はタグ付けベース変数プラスタグ付けオフセッ
ト値を含んでいる。代替実施例では、タグ付け値はタグ
付けオフセット値に連結されたタグ付けベース変数を含
んでいる。例えば、タグ付け値は64ビットにすること
ができる。最初の32ビットはタグ付けオフセット値を
表し、次の32ビットはタグ付けベース変数を表すこと
ができる。この実施例でも、タグ付けオフセット値とタ
グ付けベース変数の値は前述したように判断することが
できる。しかし、前記実施例で上述したように2つの値
を加えるのではなく、2つの値は連結されるようになっ
ている。従って、リンカは各ソースコード・モジュール
にユニークなタグ付けベース値を割り当てるだけでよ
く、これらの値は各ソースコード・モジュール内のタグ
付け割り当てステートメントの数に基づく必要がない。
このようにして作成されたタグ付け値はユニークのまま
であるので、コンピュータプログラマはその結果のコン
ピュータプログラムの実行をトレースすることができ
る。
【0046】上述した説明から理解されるように、本発
明の理解を容易にするために特定実施例を説明してきた
が、これらの実施例は本発明の精神と範囲を逸脱しない
限り種々態様に変更することが可能である。例えば、リ
ンカを変更すれば、タグ付け値をリンク時に計算させ、
タグ付け割り当てステートメントでタグ付け変数に割り
当てられるタグ付け値を定数としてストアすることが可
能になる。コンパイラはオブジェクトコード内の各タグ
付け割り当てステートメントのロケーションの標識を出
力することが可能になる。そのあと、リンカは各タグ付
け割り当てステートメント内のユニークな定数値をスト
アし、定数値とタグ付けポイントとのマッピングをID
Bにストアしておくことができる。また、ここで言うモ
ジュールという用語はコンピュータプログラムの任意の
部分を意味し、ここには、完全なソースコード・ファイ
ル、ソースコード・ファイルの一部、関数、プロシージ
ャまたはコンピュータプログラムを形成するその他のス
テートメントの集まりが含まれる。従って、本発明は特
許請求の範囲に記載されている事項にのみ限定されるも
のである。
【図面の簡単な説明】
【図1】ソフトウェアのテストとデバッグのための計測
タグ付け方式に関連する代表的なモニタリングシステム
を示す図である。
【図2】計測データベースに挿入されている従来のタグ
付け値を示す図である。
【図3】本発明の実施例によって提供される新規のタグ
付け値を示す図であり、そこではタグ付け値はタグ付け
ベース変数プラスタグ付けオフセット値から構成されて
いる。
【図4】本発明の実施例に関連する代表的な計測データ
ベースを示す図である。
【図5】本発明の実施例によるソースコード・モジュー
ルの計測フローチャートを示す図である。
【図6】本発明の実施例に関連するタグ付けベース変数
値解決プロシージャのフローチャートである。
【図7】本発明の実施例に関連するタグ付けベース変数
値解決プロシージャのフローチャートである。
【図8】本発明の実施例に関連する計測プロシージャの
例を示す図である。
【図9】ソースコード・モジュールが2代以上のコンピ
ュータで計測されるようにした本発明の実施例による計
測プロシージャの例を示す図である。
【図10】本発明で使用されるIDBの代替実施例を示
す図である。
【図11】本発明の実施例によって提供されるタグ付け
値の代替実施例を示す図であり、そこではタグ付け値は
タグ付けオフセットに連結されたタグ付けベース変数か
らなっている。
【符号の説明】
600 ソースコード・モジュール 601 ソースコード・プリプロセッサ 603 計測データベース(IDB) 604 計測されたソースコード・モジュール 605 コンパイラ 606 リンカ 610 実行可能コード 701 ソースコード・モジュール 702 オフセット・タグ付けインスツルメンタ 704 IDB 705 コンパイル済みコード 710 リンカ 711 実行可能コード
フロントページの続き (71)出願人 596133474 5020 148th Avenue N.E. Redmond,Washington 98052 United States of America

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータシステムにおいて複数のソ
    ースコード・モジュールからなるコンピュータプログラ
    ムを計測する方法であって、該方法は、 各ソースコード・モジュールごとにソースコード・モジ
    ュールにユニークである名前をもつベース変数を生成
    し、 ソースコード・モジュール内の各計測ポイントごとに、 ソースコード・モジュール内で計測ポイントにユニーク
    であるオフセット値を生成し、 タグ付け変数を生成されたオフセット値とベース変数の
    値を組み合わせたものにセットするための、タグ付け割
    り当てステートメントを計測ポイントの個所に挿入し、 計測されたソースコード・モジュールをコンパイルし、 各生成されたベース変数ごとに、生成されたオフセット
    値とベース変数の値を組み合わせたものが各計測ポイン
    トをユニークに識別するようにベース変数をユニークな
    値にセットするソースコード・ステートメントを生成
    し、 生成されたソースコード・ステートメントをコンパイル
    し、 コンパイルされた計測済みソースコード・モジュールを
    コンパイルされた生成済みソースコード・ステートメン
    トとリンクしてリンク済みプログラムを作成し、リンク
    済みプログラムの実行中にタグ付け変数が各計測ポイン
    トでユニークな値にセットされるようにすることを特徴
    とする方法。
  2. 【請求項2】 請求項1に記載の方法において、生成済
    みベース変数のための宣言ステートメントを各ソースコ
    ード・モジュール内に挿入することをさらに含み、前記
    宣言ステートメントは生成済みベース変数がソースコー
    ド・モジュールの外部に定義されていることを示してい
    ることを特徴とする方法。
  3. 【請求項3】 請求項1に記載の方法において、タグ付
    け変数のための宣言ステートメントを各ソースコード・
    モジュール内に挿入することをさらに含み、前記宣言ス
    テートメントはタグ付け変数がソースコード・モジュー
    ルの外部に定義されていることを示していることを特徴
    とする方法。
  4. 【請求項4】 請求項1に記載の方法において、生成済
    みベース変数の名前を情報データリポジトリにストアす
    ることをさらに含むことを特徴とする方法。
  5. 【請求項5】 請求項1に記載の方法において、ユニー
    クな値をベース変数に割り当てることは、各計測ポイン
    トでのタグ付け変数のユニークな値があらかじめ決めた
    値範囲を回避するように値をベース変数に割り当てるこ
    とを含むことを特徴とする方法。
  6. 【請求項6】 複数のソースコード・モジュールからな
    るコンピュータプログラムを複数のタグ付け割り当てス
    テートメントで計測するシステムであって、各タグ付け
    割り当てステートメントはオフセット値をベース値と組
    み合わせることによってタグ付け変数に対してユニーク
    な値を指定するためのものであるものにおいて、該シス
    テムは、 タグ付け割り当てステートメントをコンピュータプログ
    ラムのソースコード・モジュールの中に挿入し、各タグ
    付け割り当てステートメントごとにオフセット値を生成
    するオフセット・タグ付けインスツルメンタと、 タグ付け変数の値が各タグ付けステートメントでユニー
    クになるように、複数のソースコード・モジュールの各
    ソースコード・モジュールごとにベース値を生成するベ
    ース値リゾルバとを備えたことを特徴とするシステム。
  7. 【請求項7】 請求項6に記載のシステムにおいて、オ
    フセット・タグ付けインスツルメンタは第1コンピュー
    タ上に置かれているコンピュータプログラムの第1ソー
    スコード・モジュールに少なくとも1つのタグ付け変数
    割り当てステートメントを挿入し、第2コンピュータ上
    に置かれているコンピュータプログラムの第2ソースコ
    ード・モジュールに少なくとも1つの他のタグ付け変数
    割り当てステートメントを挿入することを特徴とするシ
    ステム。
  8. 【請求項8】 請求項6に記載のシステムにおいて、タ
    グ付けオフセット・インスツルメンタは各タグ付け割り
    当てステートメントを計測データレポジトリに格納する
    ことを特徴とするシステム。
  9. 【請求項9】 請求項6に記載のシステムにおいて、ベ
    ース値リゾルバはタグ付け変数のための以前に割り当て
    られた値範囲をリトリーブし、各タグ付け変数割り当て
    ステートメントでのタグ付け変数の値がタグ付け変数の
    ための以前に割り当てられた値範囲を回避するようにベ
    ース値を判断することを特徴とするシステム。
  10. 【請求項10】 コンピュータプログラムを計測するた
    めに使用されるタグ付け変数のための複数のユニークな
    値を生成する方法であって、該方法は、 コンピュータプログラム内の各計測ポイントごとに、タ
    グ付け変数をある値にセットするタグ付け割り当てステ
    ートメントを挿入し、 挿入されたタグ付け割り当てステートメントと共にコン
    ピュータプログラムのオブジェクトコードを生成し、 コンピュータプログラムのオブジェクトコードがリンク
    されて実行可能コードが作られたとき、各タグ付け割り
    当てステートメントがタグ付け変数をユニークな値にセ
    ットするようにコンピュータプログラムを調整すること
    を特徴とする方法。
  11. 【請求項11】 請求項10に記載の方法において、タ
    グ付け割り当てステートメントはタグ付けオフセット値
    をタグ付けベース値と組み合わせることを特徴とする方
    法。
  12. 【請求項12】 請求項10に記載の方法において、コ
    ンピュータプログラムの調整はタグ付けベース値を設定
    することを含むことを特徴とする方法。
  13. 【請求項13】 請求項10に記載の方法において、コ
    ンピュータプログラムは複数のモジュールを含み、タグ
    付け割り当てステートメントはタグ付けオフセット値を
    タグ付けベース値と組み合わせて、その組み合わせが各
    計測ポイントをユニークに識別するように値を生成し、
    各モジュールのベース値はコンピュータプログラムが調
    整されるとき設定されることを特徴とする方法。
  14. 【請求項14】 請求項10に記載の方法において、タ
    グ付け割り当てステートメントはタグ付け変数を定数値
    にセットし、コンピュータプログラムの調整は各タグ付
    け割り当てステートメントの定数値をユニークな値にセ
    ットすることを特徴とする方法。
  15. 【請求項15】 コンピュータプログラムの複数のソー
    スコード・モジュールをタグ付け割り当てステートメン
    トで計測し、コンピュータプログラムのテストをサポー
    トする方法であって、該方法は、 タグ付け割り当てステートメントのオフセット値をセッ
    トし、 セットされたオフセット値とベース値を組み合わせたも
    のをタグ付け変数に割り当てるタグ付け割り当てステー
    トメントをソースコード・モジュールの中に挿入し、 コンピュータプログラムを表すオブジェクトコードがリ
    ンクされて実行可能コードが作られるときタグ付け割り
    当てステートメントのベース値をセットすることからな
    り、ベース値はタグ付け変数割り当てステートメントの
    中のタグ付け変数の値がユニークになるように解決され
    ることを特徴とする方法。
  16. 【請求項16】 請求項15に記載の方法において、各
    ソースコード・モジュール内のオフセット値の最高値は
    あらかじめ決めた数の新しいタグ付け割り当てステート
    メントがあとで挿入できるように十分に大きくセットさ
    れ、コンピュータプログラム内のすべてのタグ付け割り
    当てステートメントの中のタグ付け変数の値がユニーク
    に保たれるようにすることを特徴とする方法。
  17. 【請求項17】 請求項15に記載の方法において、タ
    グ付け割り当てステートメントのオフセット値は計測デ
    ータレポジトリに格納されることを特徴とする方法。
  18. 【請求項18】 コンピュータプログラムを計測するた
    めに使用されるタグ付け変数のために複数のユニークな
    値をコンピュータシステムに生成させるための命令を収
    めているコンピュータ読み取り可能媒体であって、その
    計測は、 コンピュータプログラム内の各計測ポイントごとに、タ
    グ付け変数をある値にセットするタグ付け割り当てステ
    ートメントを挿入し、 挿入されたタグ付け割り当てステートメントと共にコン
    ピュータプログラムのオブジェクトコードを生成し、 コンピュータプログラムのオブジェクトコードがリンク
    されて実行可能コードが作られるとき、各タグ付け割り
    当てステートメントがタグ付け変数をユニークな値にセ
    ットするようにコンピュータプログラムを調整すること
    によって行われることを特徴とするコンピュータ読み取
    り可能媒体。
  19. 【請求項19】 請求項18に記載のコンピュータ読み
    取り可能媒体において、タグ付け割り当てステートメン
    トはタグ付けオフセット値をタグ付けベース値と組み合
    わせることを特徴とするコンピュータ読み取り可能媒
    体。
  20. 【請求項20】 請求項18に記載のコンピュータ読み
    取り可能媒体において、コンピュータプログラムの調整
    はタグ付けベース値を設定することを含むことを特徴と
    するコンピュータ読み取り可能媒体。
  21. 【請求項21】 請求項18に記載のコンピュータ読み
    取り可能媒体において、コンピュータプログラムは複数
    のモジュールを含み、タグ付け割り当てステートメント
    はタグ付けオフセット値をタグ付けベース値と組み合わ
    せて、その組み合わせが各計測ポイントをユニークに識
    別するように値を生成し、各モジュールのベース値はコ
    ンピュータプログラムが調整されるとき設定されること
    を特徴とするコンピュータ読み取り可能媒体。
  22. 【請求項22】 請求項18に記載のコンピュータ読み
    取り可能媒体において、タグ付け割り当てステートメン
    トはタグ付け変数を定数値にセットし、コンピュータプ
    ログラムの調整は各タグ付け割り当てステートメントの
    定数値をユニークな値にセットすることを特徴とするコ
    ンピュータ読み取り可能媒体。
JP02286099A 1998-01-29 1999-01-29 コンピュータプログラムをテストし、デバッグするための再配置可能計測タグ Expired - Fee Related JP4249309B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/015,256 1998-01-29
US09/015,256 US6106571A (en) 1998-01-29 1998-01-29 Relocatable instrumentation tags for testing and debugging a computer program

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2005259199A Division JP2006012193A (ja) 1998-01-29 2005-09-07 コンピュータプログラムをテストし、デバッグするための再配置可能計測タグ

Publications (2)

Publication Number Publication Date
JPH11316696A true JPH11316696A (ja) 1999-11-16
JP4249309B2 JP4249309B2 (ja) 2009-04-02

Family

ID=21770380

Family Applications (2)

Application Number Title Priority Date Filing Date
JP02286099A Expired - Fee Related JP4249309B2 (ja) 1998-01-29 1999-01-29 コンピュータプログラムをテストし、デバッグするための再配置可能計測タグ
JP2005259199A Pending JP2006012193A (ja) 1998-01-29 2005-09-07 コンピュータプログラムをテストし、デバッグするための再配置可能計測タグ

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2005259199A Pending JP2006012193A (ja) 1998-01-29 2005-09-07 コンピュータプログラムをテストし、デバッグするための再配置可能計測タグ

Country Status (5)

Country Link
US (1) US6106571A (ja)
EP (1) EP0933707B1 (ja)
JP (2) JP4249309B2 (ja)
AT (1) ATE333677T1 (ja)
DE (1) DE69932371T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7877743B2 (en) 2005-11-11 2011-01-25 Panasonic Corporation Program translation method and notifying instruction inserting method

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6311327B1 (en) * 1998-03-02 2001-10-30 Applied Microsystems Corp. Method and apparatus for analyzing software in a language-independent manner
US6308315B1 (en) * 1998-10-14 2001-10-23 Sun Microsystems, Inc. System and method for automatically and selectively promoting object variables to method fields and variables in a digital computer system
US6973417B1 (en) * 1999-11-05 2005-12-06 Metrowerks Corporation Method and system for simulating execution of a target program in a simulated target system
US6745383B1 (en) * 1999-12-29 2004-06-01 Veritas Operating Corporation Early warning mechanism for enhancing enterprise availability
US7100152B1 (en) 2000-01-31 2006-08-29 Freescale Semiconductor, Inc. Software analysis system having an apparatus for selectively collecting analysis data from a target system executing software instrumented with tag statements and method for use thereof
US6996808B1 (en) * 2000-02-12 2006-02-07 Microsoft Corporation Function injector
AU2001234042A1 (en) * 2000-02-14 2001-08-20 Nextnine Ltd. Support network
US7409318B2 (en) * 2000-02-14 2008-08-05 Nextnine Ltd. Support network
US7076400B2 (en) * 2000-02-14 2006-07-11 Nextnine Ltd. Support network
US6715141B1 (en) 2000-06-15 2004-03-30 Bruce Hodge Multiphase single pass interpreter
WO2001097027A1 (en) * 2000-06-15 2001-12-20 Bruce Hodge Multiphase single pass interpreter
US6961927B1 (en) * 2000-11-27 2005-11-01 Microsoft Corporation Lossless, context-free compression system and method
US6993750B2 (en) * 2001-12-13 2006-01-31 Hewlett-Packard Development Company, L.P. Dynamic registration of dynamically generated code and corresponding unwind information
US6996810B2 (en) * 2001-12-13 2006-02-07 Hewlett-Packard Development Company, L.P. Lazy and precise update of unwind information for dynamically generated code
US7484205B2 (en) * 2002-12-12 2009-01-27 Microsoft Corporation Preprocessor-based source code instrumentation
US7644409B2 (en) * 2004-06-04 2010-01-05 Sun Microsystems, Inc. Techniques for accessing a shared resource using an improved synchronization mechanism
US7594234B1 (en) 2004-06-04 2009-09-22 Sun Microsystems, Inc. Adaptive spin-then-block mutual exclusion in multi-threaded processing
US7475397B1 (en) 2004-07-28 2009-01-06 Sun Microsystems, Inc. Methods and apparatus for providing a remote serialization guarantee
US8185868B1 (en) 2004-12-20 2012-05-22 The Mathworks, Inc. System and method for cell-based code editing and publishing
US7509244B1 (en) 2004-12-22 2009-03-24 The Mathworks, Inc. Distributed model compilation
US8266608B2 (en) * 2005-02-18 2012-09-11 Green Hills Software, Inc. Post-compile instrumentation of object code for generating execution trace data
US9152531B2 (en) * 2005-02-18 2015-10-06 Green Hills Sofware, Inc. Post-compile instrumentation of object code for generating execution trace data
US7357332B2 (en) * 2005-04-29 2008-04-15 International Business Machines Corporation Providing diagnostic information on the processing of variables in source code
US7996442B2 (en) * 2005-10-17 2011-08-09 Oracle International Corporation Method and system for comparing and re-comparing data item definitions
US20070250810A1 (en) * 2006-04-20 2007-10-25 Tittizer Abigail A Systems and methods for managing data associated with computer code
US8341604B2 (en) * 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US8370806B2 (en) * 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
US8380966B2 (en) * 2006-11-15 2013-02-19 Qualcomm Incorporated Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US8533530B2 (en) * 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted digital signal processor debugging operations
US8762956B1 (en) * 2007-01-31 2014-06-24 The Mathworks, Inc. Generating a report document from code
US8484516B2 (en) * 2007-04-11 2013-07-09 Qualcomm Incorporated Inter-thread trace alignment method and system for a multi-threaded processor
GB2451253A (en) * 2007-07-24 2009-01-28 Ezurio Ltd Indicating the position of a next declaration statement in object code when declaring a variable object code
US8381192B1 (en) * 2007-08-03 2013-02-19 Google Inc. Software testing using taint analysis and execution path alteration
US8589880B2 (en) * 2009-02-17 2013-11-19 International Business Machines Corporation Identifying a software developer based on debugging information
US8370354B2 (en) 2010-06-30 2013-02-05 International Business Machines Corporation Acceleration of legacy to service oriented (L2SOA) architecture renovations
US8978018B2 (en) 2010-12-02 2015-03-10 International Business Machines Corporation Reversibly instrumenting a computer software application
US20130179867A1 (en) * 2012-01-11 2013-07-11 International Business Machines Corporation Program Code Analysis System
US9274911B2 (en) 2013-02-21 2016-03-01 Advantest Corporation Using shared pins in a concurrent test execution environment
US9411708B2 (en) * 2013-04-12 2016-08-09 Wipro Limited Systems and methods for log generation and log obfuscation using SDKs
US9785542B2 (en) * 2013-04-16 2017-10-10 Advantest Corporation Implementing edit and update functionality within a development environment used to compile test plans for automated semiconductor device testing
US9785526B2 (en) 2013-04-30 2017-10-10 Advantest Corporation Automated generation of a test class pre-header from an interactive graphical user interface
US10269029B1 (en) 2013-06-25 2019-04-23 Amazon Technologies, Inc. Application monetization based on application and lifestyle fingerprinting
JP6481515B2 (ja) * 2015-05-29 2019-03-13 富士通株式会社 情報処理装置、コンパイル方法、及びコンパイラプログラム
US10558553B2 (en) * 2016-11-30 2020-02-11 International Business Machines Corporation Enabling non-blocking runtime application debugging for a single threaded server environment
US10346285B2 (en) * 2017-06-09 2019-07-09 Microsoft Technology Licensing, Llc Instrumentation of user actions in software applications
US10725894B2 (en) * 2017-10-04 2020-07-28 International Business Machines Corporation Measuring and improving test coverage
US20230229581A1 (en) * 2022-01-18 2023-07-20 International Business Machines Corporation Identifying regression test failures

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4144493A (en) * 1976-06-30 1979-03-13 International Business Machines Corporation Integrated circuit test structure
US4445192A (en) * 1980-11-25 1984-04-24 Hewlett-Packard Company Logic state analyzer with time and event count measurement between states
US4590581A (en) * 1983-05-09 1986-05-20 Valid Logic Systems, Inc. Method and apparatus for modeling systems of complex circuits
US5103394A (en) * 1984-04-30 1992-04-07 Hewlett-Packard Company Software performance analyzer
US4845615A (en) * 1984-04-30 1989-07-04 Hewlett-Packard Company Software performance analyzer
US4720778A (en) * 1985-01-31 1988-01-19 Hewlett Packard Company Software debugging analyzer
US4937740A (en) * 1985-09-18 1990-06-26 Cadre Technologies, Inc. Real time software analyzing system for storing selective m-bit addresses based upon correspondingly generated n-bit tags
US5047919A (en) * 1986-04-03 1991-09-10 Harris Corporation Method and apparatus for monitoring software execution in a parallel multiprocessor computer system
US5062055A (en) * 1986-09-02 1991-10-29 Digital Equipment Corporation Data processor performance advisor
US4849879A (en) * 1986-09-02 1989-07-18 Digital Equipment Corp Data processor performance advisor
GB2197506A (en) * 1986-10-27 1988-05-18 Burr Brown Ltd Providing and handling break points in a software monitor
US4811345A (en) * 1986-12-16 1989-03-07 Advanced Micro Devices, Inc. Methods and apparatus for providing a user oriented microprocessor test interface for a complex, single chip, general purpose central processing unit
US4989134A (en) * 1987-03-20 1991-01-29 Hewlett-Packard Company Method and apparatus for enhancing data storage efficiency
US4819233A (en) * 1987-04-08 1989-04-04 Westinghouse Electric Corp. Verification of computer software
US5329471A (en) * 1987-06-02 1994-07-12 Texas Instruments Incorporated Emulation devices, systems and methods utilizing state machines
US5006992A (en) * 1987-09-30 1991-04-09 Du Pont De Nemours And Company Process control system with reconfigurable expert rules and control modules
US4864569A (en) * 1987-11-25 1989-09-05 Westinghouse Electric Corp. Software verification and validation configuration management system
US5121489A (en) * 1988-08-02 1992-06-09 International Business Machines Corporation Tracing method for identifying program execution paths using a trace points bit map with one-to-one correspondence with embedded trace points
CN1045655A (zh) * 1988-11-23 1990-09-26 约翰弗兰克制造公司 系统自动诊断的内核测试接口和方法
US5134701A (en) * 1989-02-10 1992-07-28 Hewlett-Packard Co. Test apparatus performing runtime replacement of program instructions with breakpoint instructions for processor having multiple instruction fetch capabilities
CA1286803C (en) * 1989-02-28 1991-07-23 Benoit Nadeau-Dostie Serial testing technique for embedded memories
US5267277A (en) * 1989-11-02 1993-11-30 Combustion Engineering, Inc. Indicator system for advanced nuclear plant control complex
US5121501A (en) * 1989-12-27 1992-06-09 International Business Machines Corporation First processor inserting hooks into software and sending unique identifications to output bus and second processor associating data frames and time with these unique identifications
US5410685A (en) * 1990-06-12 1995-04-25 Regents Of The University Of Michigan Non-intrinsive method and system for recovering the state of a computer system and non-intrusive debugging method and system utilizing same
US5361351A (en) * 1990-09-21 1994-11-01 Hewlett-Packard Company System and method for supporting run-time data type identification of objects within a computer program
AU8966391A (en) * 1990-12-24 1992-06-25 Ball Corporation System for analysis of embedded computer systems
US5355369A (en) * 1991-04-26 1994-10-11 At&T Bell Laboratories High-speed integrated circuit testing with JTAG
US5321828A (en) * 1991-06-07 1994-06-14 Step Engineering High speed microcomputer in-circuit emulator
US5450586A (en) * 1991-08-14 1995-09-12 Hewlett-Packard Company System for analyzing and debugging embedded software through dynamic and interactive use of code markers
US5265254A (en) * 1991-08-14 1993-11-23 Hewlett-Packard Company System of debugging software through use of code markers inserted into spaces in the source code during and after compilation
US5259766A (en) * 1991-12-13 1993-11-09 Educational Testing Service Method and system for interactive computer science testing, anaylsis and feedback
AU4598593A (en) * 1992-06-05 1994-01-04 Convex Computer Corporation Computer program debugging in the presence of compiler synthesized variables
US5367683A (en) * 1992-06-26 1994-11-22 Digital Equipment Corporation Smart recompilation of performing matchup/difference after code generation
US5307498A (en) * 1992-12-04 1994-04-26 International Business Machines Corporation Automated method for adding hooks to software
US5408650A (en) * 1993-06-29 1995-04-18 Digital Equipment Corporation Memory analysis system for dynamically displaying memory allocation and de-allocation events associated with an application program
US5539907A (en) * 1994-03-01 1996-07-23 Digital Equipment Corporation System for monitoring computer system performance
US5553286A (en) * 1994-03-17 1996-09-03 International Business Machines Corporation System and method for preparing a computer program for execution
US5533192A (en) * 1994-04-21 1996-07-02 Apple Computer, Inc. Computer program debugging system and method
US5828884A (en) * 1996-05-23 1998-10-27 Advanced Micro Devices, Inc. Method for compiling a software program and executing on a system which converts data between different endian formats

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7877743B2 (en) 2005-11-11 2011-01-25 Panasonic Corporation Program translation method and notifying instruction inserting method
US8402445B2 (en) 2005-11-11 2013-03-19 Panasonic Corporation Program translation method and notifying instruction inserting method

Also Published As

Publication number Publication date
ATE333677T1 (de) 2006-08-15
EP0933707A3 (en) 2004-04-14
EP0933707B1 (en) 2006-07-19
JP4249309B2 (ja) 2009-04-02
US6106571A (en) 2000-08-22
EP0933707A2 (en) 1999-08-04
JP2006012193A (ja) 2006-01-12
DE69932371D1 (de) 2006-08-31
DE69932371T2 (de) 2006-11-30

Similar Documents

Publication Publication Date Title
JP4249309B2 (ja) コンピュータプログラムをテストし、デバッグするための再配置可能計測タグ
US6430741B1 (en) System and method for data coverage analysis of a computer program
CN101739339B (zh) 一种基于程序动态依赖关系的软件故障定位方法
US5987250A (en) Transparent instrumentation for computer program behavior analysis
US7661094B2 (en) Real-time software diagnostic tracing
US5528753A (en) System and method for enabling stripped object software monitoring in a computer system
US8924937B1 (en) Method and system for generating verification information and tests for software
US8060869B1 (en) Method and system for detecting memory problems in user programs
EP1130518A1 (en) Software analysis system having an apparatus for selectively collecting analysis data from a target system executing software instrumented with tag statements and method for use thereof
EP0753814A2 (en) Determining dynamic properties of programs
US9183114B2 (en) Error detection on the stack
US8533683B2 (en) Stack walking enhancements using sensorpoints
US20080127119A1 (en) Method and system for dynamic debugging of software
JPH0855045A (ja) データを自己記述式に符号化するための方法および装置
US7409677B1 (en) Method and system for creation and use of embedded trace description
US8949103B2 (en) Program code simulator
US20080127061A1 (en) Method and system for editing code
TWI402750B (zh) 具有軟體程式儲存於其中之電腦可讀取媒體及用以產生軟體程式的方法
CN113742215A (zh) 一种自动配置和调用测试工具进行测试分析的方法及系统
US20020129336A1 (en) Automatic symbol table selection in a multi-cell environment
JP5269450B2 (ja) 試験システム及びバックアノテーション方法
CN108614704B (zh) 代码编译方法及装置
JP2004287869A (ja) プログラム実行監視装置および方法
EP1151382A1 (en) Instrumentation of calls to routines for which source code is unavailable
JP3745968B2 (ja) 試験システム及び試験方法及び試験プログラム及び試験プログラムを記録した計算機で読み取り可能な記録媒体

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040720

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040803

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041104

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20041104

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20041209

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20041209

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20041209

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050510

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20050808

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20050808

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050907

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050915

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20050916

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20051111

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080827

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080901

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081201

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090115

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120123

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130123

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees