JPH09218800A - 組込みシステム中で実行されるソフトウェアを分析するための方法および装置 - Google Patents
組込みシステム中で実行されるソフトウェアを分析するための方法および装置Info
- Publication number
- JPH09218800A JPH09218800A JP8240782A JP24078296A JPH09218800A JP H09218800 A JPH09218800 A JP H09218800A JP 8240782 A JP8240782 A JP 8240782A JP 24078296 A JP24078296 A JP 24078296A JP H09218800 A JPH09218800 A JP H09218800A
- Authority
- JP
- Japan
- Prior art keywords
- tag
- software
- data
- statement
- location
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/362—Debugging of software
- G06F11/3636—Debugging of software by tracing the execution of the program
- G06F11/364—Debugging of software by tracing the execution of the program tracing values on a bus
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/362—Debugging of software
- G06F11/3624—Debugging of software by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/25—Testing of logic operation, e.g. by logic analysers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
るタグ・ステートメントによって生成されたタグをキャ
プチャするためのソフトウェア分析システムである。 【解決手段】 ソフトウェア分析システムは、ターゲッ
ト・システムのアドレス・バスとデータ・バスをモニタ
するプローブを含んでいる。タグ・ステートメントがタ
ーゲット・システムで実行されると、タグはターゲット
・システムのアドレス空間内のあらかじめ定められたロ
ケーションに書き出される。タグは、タグを生成したタ
グ・ステートメントがソース・コードに置かれているロ
ケーションを示すタグ値を含んでいる。あらかじめ定め
られたアドレスをモニタすることにより、プローブはタ
グがターゲット・システムのデータ・バス上に書き出さ
れたときタグをキャプチャすることができる。ソース・
コードを正しくインストルメント化することにより、ソ
フトウェア分析システムは、コード・カバレッジ、関数
とタスクの実行時間、メモリ割当て、コール・ペア、お
よびプログラム・トレーシングを含む種々の分析関数を
基本的にリアル・タイムで実行することができる。
Description
関し、具体的には組込みシステムで実行されるソフトウ
ェアの多種多様の基準を分析する方法および装置に関す
る。
イクロプロセッサを含むプロセッサの動作を制御するた
めに書かれている。ソフトウェアが複雑化し、長くなっ
ていくと、ソフトウェア・エラー、つまり、「バグ」の
発生確率が増加していく。さらに、このようにソフトウ
ェアが長くなり、複雑化すると共に、ソウトウェア・バ
グを見つけることの困難さが増大する。ソフトウェアの
実行を妨げるバグはすぐに分かるが、他のタイプのバグ
は、ソフトウェアの実行を妨げることなく、ソフトウェ
アのパフォーマンスや効率に影響するだけである。ソフ
トウェアの実行に影響するだけのソフトウェア・バグは
見過ごされやすいために、ソフトウェアの効率がいつま
でも影響されることになる。例えば、ソフトウェアによ
るメモリ資源割当ての仕方が非効率であると、ソフトウ
ェアが最適速度で実行されないことになる。しかし、ソ
フトウェアは実行を続けるので、これらのメモリ割当て
エラーの存在が見過ごされることになる。
影響するソフトウェア・バグを含めて、ソフトウェア・
バグを見つける試みとしてソフトウェアのパフォーマン
スを分析する方法は、すでにいくつかが開発されてい
る。従来の手法の1つとして、インストルメント化ソー
ス・コード(instrumented source code)があり、そこで
は実行可能タグ・ステートメントがソース・コードの各
所のブランチとロケーションに挿入され、これによって
ソース・コードを「インストルメント化」している。ソ
ース・コードがコンパイルされ、リンクされると、タグ
・ステートメントはそのコードと一緒に実行される。各
タグ・ステートメントが実行されると、そのタグはオペ
レーション(命令、演算など)を実行するが、そのオペ
レーションは分析デバイスによって検出することも、将
来の検査に備えて記録しておくことも可能になってい
る。例えば、各タグ・ステートメントは値をそれぞれの
アドレスに書き込んでおき、その値を収めているアドレ
スのID(identity)が、どのタグ・ステートメントが実
行されたかの表示を提供している。別の例として、各タ
グ・ステートメントはタグ識別データ(tag identifying
data)をディスク・ファイルに印刷することが可能にな
っている。さらに別の例として、配列(array) をメモリ
に予約しておき、タグに対応する各配列要素(array ele
ment) がソース・コード内のそれぞれのロケーションに
挿入されるようにしている。各タグが実行されると、そ
のタグは配列内の対応するビットをセットする。インス
トルメント化コードを使用してソフトウェアを分析する
1つのアプローチは米国特許第5,265,254 号(Blasciak
他)に記載されている。
多種多様なソフトウェア・パラメータの分析が可能であ
る。インストルメント化コードによると、どのブランチ
が実行されたかを判別できるだけでなく、実行可能タグ
・ステートメントをブランチまたは関数の入口点と出口
点に挿入しておくことにより、ブランチまたは関数の実
行時間を判別することもできる。これらのタグ・ステー
トメントは実行されると、タイムスタンプされたそれぞ
れのタグを生成し、複数のタグ・ステートメントを実行
する間の経過時間が分かるようにしている。
り、「ホスト」)コンピュータ・システムでソフトウェ
アのパフォーマンスを分析する有用な手法となっている
ことがよくあるが、組込みシステムでソフトウェアの実
行を分析する場合にはあまり適切ではない。組込みシス
テム(embedded system) とは、一般的な計算形関数(com
putational functions) を実行するのではなく、特殊な
関数を実行することを主目的としたシステムのことであ
る。例えば、マイクロプロセッサ・ベースのマイクロウ
ェーブ・オーブン・コントローラ、マイクロプロセッサ
・ベースの自動車点火システム、マイクロプロセッサ・
ベースの電話交換システムはいずれも組込みシステムで
ある。組込みシステムがインストルメント化コードに役
立たない理由にはいくつかがある。第一に、組込みシス
テムは、ディスク・ストレージ(記憶装置)のように、
タグ・ステートメントの実行結果をストアしておく大量
記憶デバイスをもたないのが一般である。タグ・ステー
トメントの実行結果はオンボード・ランダム・アクセス
・メモリ(on-board random access memory) にストアし
ておくことも可能であるが、かかる情報を外部から取り
出す(retrieve)ことが困難であることがよくある。さら
に、タグ・ステートメントの実行結果をシステムメモリ
にストアすると、システムメモリ資源が消費されるた
め、ターゲットがソフトウェアを正常に実行するのを妨
げることになる。一般に望まれていることは、ソフトウ
ェアが正常に実行されるのと同じ条件で組込みシステム
のソフトウェアのパフォーマンスをテストすることであ
る。従って、理想的なソフトウェア分析手法とは、ター
ゲット・システムから透過的(transparent) にし、ター
ゲット・システムがソフトウェアを実行するときの仕方
に影響しないようにするものである。以上のような理由
から、インストルメント化コードは、一般的に、組込み
システムでソフトウェアを分析するのには適していな
い。
手法(例えば、インストルメント化コード)のほかに、
ハードウェア・ベースの手法がすでに開発され、組込み
システムで実行されるソフトウェアを分析している。例
えば、ロジック・プローブ(logic probe) がマイクロプ
ロセッサのアドレス・バスとデータ・バスのラインに挿
入されて、組込みシステムでのソウトウェア実行を観測
することを試みている。しかし、ロジック・アナライザ
を使用してソフトウェア実行をモニタすることは非常に
困難であり、ロジック・アナライザの出力からのデータ
簡約法(data reduction)が欠如しているため、この手法
は非常に時間がかかっている。さらに、どの命令が実行
中であるかを、ロジック・アナライザを使用して判別す
ることは常に可能であるとは限らない。例えば、内部キ
ャッシュメモリから命令を実行するプロセッサをロジッ
ク・プローブを使用してモニタすることは不可能であ
る。なぜならば、これらの命令の実行が外部からアクセ
ス可能なバスに反映されないからである。
マンスを分析する、別のハードウェア・ベース手法で
は、インストルメント化コードと共にエミュレータを使
用している。基本的に、この手法はエミュレータを使用
してタグ・ステートメントの実行をモニタすることによ
って、システム・メモリ資源を消費する必要性を除去
し、タグ実行データを抽出する手段を提供する。この手
法の一例として、米国特許第4,914,659 号(Erickson)に
記載されているものがある。Erickson特許に記載されて
いるように、タグ・ステートメントはソース・コード中
に挿入され、ターゲット・システムに接続されたエミュ
レータで実行されている。タグ・ステートメントの各々
は変数をそれぞれのユニーク・アドレスに書き込んでい
る。エミュレータはエミュレートされたプロセッサのア
ドレス・バスをモニタし、それぞれのタグ・ステートメ
ントに対応するアドレス・バス上のアドレスを検出して
いる。Erickson特許に記載されている手法は、確かにタ
グ実行データを抽出してシステム資源を消費しないよう
にしているが、それにもかかわらず、この手法にはいく
つかの制約がある。例えば、各タグ・ステートメント用
にユニークアドレスが予約されるようにすると、オーバ
レイ・メモリ手法を採用する必要があるため、ターゲッ
ト・システムのアドレス空間が大量に消費されることに
なる。
を分析するハードウェア・アプローチのもう1つの手法
として、米国特許第4,937,740 号(Agarwal 他)に記載
されているものがある。Agarwal 他の特許にはソフトウ
ェア分析システムが開示され、そこではハードウェア・
プローブがターゲット・システムのアドレス・バスをモ
ニタしてアドレスをキャプチャ(capture) するようにし
ている。Agarwal 他の特許に開示されているシステム
は、ユーザによって選択された、それぞれのアドレス
(最高256個)がプローブによってキャプチャされる
ときタグを生成する内部タグ・ジェネレータ(internal
tag generator)を備えている。Agarwal 他のシステムは
インストルメント化コード手法を使用していないか、あ
るいは他の方法を使用して、キャプチャされたアドレス
から生成されたタグをそれぞれのソフトウェア・ロケー
ションと相関づけているので、Agarwal 他のシステムで
は、ソフトウェア実行に関する情報の使用と理解が容易
になっていない。
みシステムがオンボード・データ・ストレージおよび/
または出力ポート機能をもたなくても、ターゲット・シ
ステムのメモリ、プロセッサ時間および入出力資源を含
むシステム資源を消費しないような形で組込みシステム
でのソフトウェア実行を分析できるようにする方法と装
置が要望されている。
装置は、データ・バスとアドレス・バスをもつターゲッ
ト・システムで実行される組込みソフトウェアを分析す
るものである。複数の実行可能タグ・ステートメントは
まずソース・コードに挿入される。タグ・ステートメン
トの各々が実行されると、ターゲット・システムはター
ゲット・システムのアドレス空間内のあらかじめ定めら
れたロケーションにタグを書き出す。タグはそれぞれの
タグ値を収めているので、タグ・ステートメントをソー
ス・コードに正しく挿入することにより、タグを生成す
るタグ・ステートメントのソース・コード中のそれぞれ
のロケーションを、そのタグ値が識別するようになって
いる。ソース・コードはインストルメント化されると、
コンパイルされてオブジェクト・コードが得られる。こ
のオブジェクト・コードはターゲット・システムで実行
されるものである。オブジェクト・コードが実行されて
いる間、ターゲット・システムのアドレス・バスがモニ
タされ、ターゲット・システムのアドレス空間内のあら
かじめ定められたロケーションがいつアドレスされるか
を検出する。ターゲット・システムのデータ・バスもモ
ニタされ、あらかじめ定められたロケーションがアドレ
スされたことが検出されたとき、データ・バス上のタグ
をキャプチャする。キャプチャされたタグのそれぞれの
タグ値に基づいて、本発明による方法と装置は実行中の
ソース・コード・ロケーションを判別することができ
る。
生成されるタグには2種類がある。制御タグ(control t
ag) とデータ・タグ(data tag)である。制御タグは、上
述したように、タグを生成するタグ・ステートメントの
ソース・コード中のロケーションに対応するタグ値をも
つデータ・フィールドを含んでいる。データ・タグは常
に特定の制御タグと関連づけられており、そのデータ・
タグが関連づけられている制御タグが示すイベント(eve
nt) に関する情報を収めているデータ・フィールドをも
っている。制御タグはどの分析関数のためにタグが使用
されているかを示すタグ・タイプ・フィールドをもつこ
とも可能である。
るソフトウェア分析関数を実行することが可能である。
パフォーマンス分析は、第1タグと第2タグのそれぞれ
がデータ・バスに現れたときの第1時間と第2時間を記
録することにより行うことができる。第1タグと第2タ
グは、第1タグと第2タグを生成する第1と第2タグ・
ステートメントのソース・コード中のロケーションに対
応する第1タグ値と第2タグ値をそれぞれもっている。
第1ロケーションと第2ロケーションの間でソフトウェ
アを実行するために必要な時間は、第1時間と第2時間
との差に基づいて判断される。
当てステートメントと一緒に実行させるロケーション
で、制御タグ・ステートメントをソース・コードに挿入
することによって行うことができる。実行可能データ・
タグ・ステートメントも各制御タグと一緒に挿入され、
ターゲット・システムのアドレス空間内のあらかじめ定
められた第2ロケーションにデータ・タグを書き出すよ
うにしている。データ・タグのデータ値はメモリ割当て
ステートメントによって割当てられるメモリを示してい
る。本発明による方法と装置は、ターゲット・システム
のアドレス空間内のあらかじめ定められた第2ロケーシ
ョンがいつアドレスされて、データ・バス上のデータ・
タグをキャプチャするかを検出する。メモリ割当てステ
ートメントから得られたメモリ割当ては、キャプチャさ
れたデータ・タグのデータ値に基づいて判断される。
れぞれのタグ・ステートメントを関数コール・ステート
メントと一緒に実行させるロケーションで、タグ・ステ
ートメントをソース・コードに挿入することによって分
析することができる。本発明による方法と装置は、あら
かじめ定められたロケーションがアドレスされたことが
検出されたときタグがキャプチャされる順序に基づい
て、ソース・コードのどの関数がソース・コードの他の
関数とリンクされているかを判断する。
グ・ステートメントをソース・コードの基本ブロックに
挿入し、タグ・ステートメントが基本ブロックと一緒に
実行されるようにすることによってコード・カバレッジ
分析(code coverage analysis)を行う。本発明による方
法と装置は、あらかじめ定められたロケーションがアド
レスされたことが検出されたとき、キャプチャされたタ
グのタグ値に基づいてソース・コードのどの基本ブロッ
クが実行されたかを判断する。
ア分析システム10の一実施例を示す図である。システ
ム10はプローブ・チップ(probe tip) 12を備え、こ
れは従来と同じようにターゲット・システムのマイクロ
プロセッサ(図示せず)上にクリップされている。これ
により、ターゲット・システム・マイクロプロセッサの
外部コネクタ・ピンは、そのデータ・バスとアドレス・
バスを含めて、プローブ・チップ12へアクセス可能に
なっている。プローブ・チップは従来のリボン・コンダ
クタ18を通してプローブ・シャーシ20に接続されて
おり、そこには、システム10の電子回路の大部分が搭
載されている。プローブ・シャーシ20の方は、イーサ
ネット・ケーブルなどの適当なケーブル30を通してホ
スト・システム40に接続されている。ホスト・システ
ム40は、基本的には、ディスク・ドライブ44をもつ
プロセッサ・シャーシ42、ディスプレイ・スクリーン
48付きCRTモニタ46およびキーボード50を装備
した従来のコンピュータである。ホスト・システム40
は、好ましくは、Unix(登録商標)またはWindows(登録
商標)ユーザ・インタフェースとオペレーティング・シ
ステムを使用している。アプリケーション専用ソフトウ
ェア(application specific software) がディスク・ド
ライブ44からロードされると、ホスト・システム40
がプローブ・シャーシ20とのインタフェースとなっ
て、キーボード50からの適当な構成コマンドと操作コ
マンドを受け取り、分析結果をスクリーン48に表示す
る。
に使用されるかを示したのが図2である。ターゲット・
システムで実行するように書かれたソース・コード60
は、まず、ユーザが分析したいと思っている各所のロケ
ーションで、タグ・ステートメント62をソース・コー
ド10に挿入することによりインストルメント化され
る。例えば、ユーザの関心がコード・カバレッジ(code
coverage) を判断することにあるならば、ユーザはソー
ス・コード60の各ブランチにタグ・ステートメント6
2を挿入しておけば、システム10はどのブランチが実
行されたかを、各タグ・ステートメントが実行されたか
どうかに基づいて判断する。その他の分析関数について
は、以下で詳しく説明する。タグ・ステートメント62
をソース・コード60に挿入すると、インストルメント
化ソース・コード64が得られる。インストルメント化
コード64が生成されるとき、シンボル・データベース
(symbol database) 65も作成され、そこで、タグ・ス
テートメントの各々をそれらのソース・コード10中の
ロケーションと関係づけているレコードを提供してい
る。インストルメント化ソース・コード64は従来と同
じように66でコンパイルされ、実行可能コード68が
得られる。実行可能コード68は適当な手段によってタ
ーゲット・システムTにロードされる。例えば、実行可
能コードはターゲット・システムTに実装されているプ
ログラマブル・リードオンリ・メモリ(“PROM”)
にストアしておくことが可能である。また、実行可能コ
ード68は従来のエミュレータ(図示せず)を通してタ
ーゲット・システムTで実行させることも可能である。
実行可能コード68がどのようにターゲットTにロード
されるかに関係なく、ターゲットTはコードを実行する
ことができる。プローブ・チップ12は従来と同じよう
にターゲット・システムT上にクリップされると、ター
ゲット・システムTの少なくともアドレス・バスおよび
データ・バスと電気的に接触することになる。タグ・ス
テートメント62の実行によって生成され、プローブ・
チップによって収集されたタグは、リボン・ケーブル1
8を介してプローブ・シャーシ20へ転送される。プロ
ーブ・シャーシ20はプローブ・チップ12からのデー
タについて種々の作表関数(tabulation function) とデ
ータ簡約関数(data reduction function) を実行したあ
と、ローカル・エリア・ネットワーク・ケーブル30を
経由して適切なデータをホスト・システム40へ出力す
る。ホスト・アプリケーション・ソフトウェア70はデ
ータをデータ・ファイル74にストアし、そこからデー
タを取り出す処理ルーチン72を備え、またホスト・ア
プリケーション・ソフトウェア70は、X-11や Microso
ft Windows(登録商標)インタフェースなどのように、
処理ルーチン72と一緒に働いてデータ・ファイル74
に操作を加え、分析データの種々のディスプレイが得ら
れるようにするグラフィカル・ユーザ・インタフェース
75も備えている。処理ルーチン72はシンボル・デー
タベース65も受け取るので、データ・ファイル74内
のタグ実行データがソース・コード65に置かれている
タグ・ステートメントのロケーションと相関づけられ
て、ソース・コードのロケーションとブランチに関する
パフォーマンスを示すレポートとディスプレイを提供す
るようにしている。シンボル・データベース65は、好
ましくは、ディスク・ドライブ44からホストにロード
される(図1)。ホスト・アプリケーション・ソフトウ
ェア70は分析データをストアし、処理するためのデー
タ構造76と、ターゲット・アクセス・プローブ20と
通信を提供する通信ソフトウェア78も備えている。
ント62の各々は、ソース・コード60内のタグ・ステ
ートメントのロケーションにユニークになっているのが
一般である「タグ値」をもつデータフィールドを収めて
いる、それぞれのタグを生成する。従って、例えば、第
1ブランチには、タグ値が1であるタグ・ステートメン
トを置くことができ、第2ブランチには、タグ値が2で
あるタグ・ステートメントを置くことができ、以下同様
である。タグ・ステートメント62がターゲットTによ
って実行されるとき、ターゲットTのプロセッサは、タ
グ値を収めているタグをターゲット・システムTのアド
レス空間内のあらかじめ定められたロケーションに書き
出す。以下で詳しく説明するように、タグ62は、その
関数またはソース・コード60内の関連のタグ・ステー
トメント62のロケーションに関する情報を提供する、
他のフィールドを少なくとも1つ含めることが可能であ
る。具体的に説明すると、タグ・ステートメント62
は、好ましくは、32ビットからなるタグを書き出し、
このタグはタグ値をもつデータ・フィールド・ワードだ
けでなく、タグのタイプまたはカテゴリを定義する複数
のビットも含んでいる。例えば、異なるタグ・タイプに
は、関数入口点と出口点を指定するもの、ブランチ点を
指定するもの、メモリ割当てステートメントを指定する
ものがある。タグ・タイプを識別するタグ・タイプ・フ
ィールドをもつタグは「制御タグ」と呼ばれる。システ
ム10の好適実施例では、すべての制御タグはターゲッ
トのアドレス空間内の同一ロケーションに書き出され
る。制御タグのほかに、システム10はデータ・タグも
利用している。データ・タグは制御タグに付随し、ター
ゲットのアドレス空間内の第2のロケーションに書き出
され、特定の制御タグに関する追加情報を提供するよう
にする。例えば、制御タグはメモリ割当てが行われてい
ることを示すことができ、また、制御タグに付随する2
つのデータ・タグは、それぞれメモリ割当てのサイズと
その割当てに関連するメモリ・ポインタを示すことがで
きる。ターゲット・システムのアドレス空間内の単一ロ
ケーションだけが制御タグ用に使用され、データ・タグ
用に使用されるロケーションは相対的に少ないことが好
ましいので、本発明によるシステム10はターゲット・
システムのメモリ資源を大量に使用することがなく、分
析システムはターゲット・システムに対して実質的に透
過的になっている。
ドレス・バスとデータ・バスをモニタしており、ターゲ
ット・システムTのアドレス空間内のあらかじめ定めら
れたロケーションを、プロセッサがいつアドレスするか
を判断する。そのあと、プローブ・チップ12は現在デ
ータ・バス上にあるタグ値をキャプチャする。その結
果、そのときキャプチャされたタグ値はソース・コード
60の中で現在実行されているロケーションを示してい
る。さらに、システム10は、プローブ20がタグ値の
各々を、そのキャプチャと同時に受信してから基本的に
リアル・タイムで、ターゲットTでのソフトウェアの実
行をモニタし、タグ値を使用して種々の関数を実行す
る。例えば、ある種のソフトウェア分析関数では、プロ
ーブ20は実行時間をタグ値と関連づけて、ペアのタグ
・ステートメント間の実行時間が判断できるようにす
る。プローブ・シャーシ20は、例えば、コールペアの
分析(つまり、他の関数によってコールされた関数に関
する統計の生成)割当てなどのように、タグ値について
種々のデータ簡約オペレーションを実行することも可能
である。基本的には、システム10は関数とタスク実行
時間の判断、カバレッジ分析、つまり、ソース・コード
の実行された部分と実行されなかった部分の識別、メモ
リ割当て分析(つまり、ソース・コード中の各割当てス
テートメントがどれだけのメモリを割当て、特定の割当
てが誤ったかの識別)、およびプログラム・トレーシン
グ(つまり、ソース・コードの実行の順次ヒストリの作
成)を行なう機能を備えている。この場合も、プローブ
・シャーシ20はこれらの関数を基本的にリアル・タイ
ムで実行する。最後に、プローブ・シャーシ20はホス
ト40と通信してデータをアップロードし、ホストによ
りそのデータを表示できるようにする。
は、図3のブロック図に詳しく示されている。図3に示
すように、プローブ・チップ12はXilinx社から市販さ
れている従来のLCAを含んでおり、これはホスト40
からプローブ・シャーシ20を経由してダウンロードさ
れた情報によって、アドレス・バス上の1つまたは2つ
以上の、あらかじめ定められたアドレスをモニタするよ
うにプログラムされている。プローブ・チップ12は、
あらかじめ定められたアドレスの1つがアクティブであ
ることを検出すると、データ・バス上のタグをクロック
をとってプローブ・チップ12に入れる。プローブ・チ
ップ12はターゲット・システムTで使用されている特
定のマイクロプロセッサとのインタフェースとならなけ
ればならないので、プローブ・チップはターゲットTで
使用されている特定のマイクロプロセッサに専用化して
いるのが通常である。しかし、プローブ・チップ12は
システム10のうち、唯一のターゲット・プロセッサ専
用部分になっている。プローブ・チップ12は、プロー
ブ・チップ12のステータス・バスもモニタして、あら
かじめ定められたアドレスの1つへのwrite(書込み)関
数を検出できるようにしておくことが好ましい。
ャすると、そのタグをタグ・プリプロセッサ100に渡
すが、このプリプロセッサは、タイム・スタンプ・ジェ
ネレータ102からタイム・スタンプも受取っている。
タグ・プリプロセッサ100はタイム・スタンプ・ジェ
ネレータ102からの現在のタイム・スタンプ値を、プ
ローブ・チップ12から受け取ったタグ値とペアにす
る。また、タグ・プリプロセッサはタイム・スタンプ・
タグ値をどこへ送るべきかを、タグ・タイプに基づいて
判断する。上述したように、タグ・タイプはプローブ・
チップ12から受け取ったタグ内のタグ・タイプ・フィ
ールドの値によって定義されている。具体的には、その
タグが、ブランチが実行されるかどうかを判断するため
にソース・コードのブランチに置かれたタグ・ステート
メントによって生成されたカバレッジ分析タグであれ
ば、そのタグはコード・カバレッジ・データ簡約プロセ
ッサとデータベース110へ直接に送られる。カバレッ
ジ分析タグを除き、すべてのタグ・タイプはタグ・バッ
ファ112に渡される。カバレッジ・タグは他のタグ・
タイプよりも頻繁に現れるのが一般であるので、コード
・カバレッジ・タグは他のタイプから切り離して処理す
るのが望ましい。タグ・プリプロセッサ100は、タグ
をタグ・バッファ112またはコード・カバレッジ・デ
ータ簡約プロセッサとデータベース110に渡す前に、
タグについてある種の限定(qualification) を行うよう
にすることが好ましい。具体的には、タグ・プリプロセ
ッサ100は、測定が行われているタグだけを渡すよう
にすることが好ましく、そうすれば、処理すべきタグ数
が最小限になるので、下流側の回路のスピードを最大限
にすることができる。タグ・プリプロセッサ100はXi
linx社から市販されている従来のLCAを使用して実現
することが好ましい。なお、このLCAはホスト40か
らプローブ・シャーシ20を経由してダウンロードされ
た情報によって、上述した関数を実行するようにプログ
ラムされている。
サとデータベース110はハードワイヤード(hard-wire
d)ロジック回路にすることが好ましいが、マイクロプロ
セッサとその関連回路を使用して実現することも可能で
ある。コード・カバレッジ・データ簡約プロセッサとデ
ータベース110はキャプチャしたコード・カバレッジ
・タグを、コード・カバレッジ・データベース配列の中
のインデックスに変換する。配列の中の各ビットは対応
するタグ・ステートメントが62(図2)で挿入された
ソース・コード60内のロケーションに対応する単一タ
グ値を表している。従って、配列の内容はホスト40に
ダウンロードすることが可能であるので、実行されたソ
ース・コードのすべてのインストルメント化ブランチの
表示を提供することができる。
セッサ100から送られてきたタグを一時的にストアし
ておく高速バッファである。そのあと、タグはデータ簡
約プロセッサ114に引き渡される。タグ・バッファ1
12は、データ簡約プロセッサ114により処理される
以上の速いレートで、バーストで受信されたタグを収容
しておくためにめに使用される。タグ・バッファ112
は、タグ・プリプロセッサ100から渡されたタグの平
均レートがデータ簡約プロセッサ114の処理レートを
越えていない限り、タグ・プリプロセッサ100からの
高速バーストのタグを収容しておくことも可能である。
れている。プローブ・シャーシ20とホスト40間のイ
ンタフェースは標準イーサネット通信チャネルからなっ
ている。イーサネット伝送ステータス信号は通信ポート
130を経由してステータス・ポート132へ送られ
る。通信ポート130は、Motorola MC68340制御プロセ
ッサを使用して実現されていることが好ましい。
ッサ134はホスト・ソフトウェアからのコマンドとプ
ローブ・シャーシ20の初期化を取り扱う。制御プロセ
ッサ134は通信ポート130と制御メモリ136に直
接にアクセスすることも可能である。制御プロセッサ1
30は MC68340マイクロプロセッサにすることが好まし
い。制御メモリ136は制御プロセッサ134のソフト
ウェアに対する命令をストアしていると同時に、制御プ
ロセッサ134のデータもストアしている。制御メモリ
136は不揮発性メモリ(non-volatile memory) である
ことが好ましい。例えば、コードのストレッジにはフラ
ッシュ・メモリを使用し、データのストレッジにはDR
AMを使用することが好ましい。以下で詳しく説明する
ように、制御プロセッサ134は、デュアル・ポートか
らデータベース・メモリ118とデータベース110に
アクセスして、データを制御メモリ136に転送する。
く示されている。データ簡約プロセッサ114は、デー
タベース・メモリ118(図3)に接続されたデータ・
バス142、アドレス・バス144および制御/ステー
タス・バス146をもつデータ簡約マイクロプロセッサ
140を含んでいる。データ簡約マイクロプロセッサ1
40は、これらのバス142、144、および146を
通してデータ/コード記憶メモリ150、タグ・バッフ
ァ112および入出力ポート160にも接続されてい
る。データ簡約マイクロプロセッサ140は、上述した
ように、コード記憶メモリ150からの命令の制御の下
でタグ・バッファ112(図3)からのタグを処理す
る。データ簡約マイクロプロセッサ140は、入出力ポ
ート160とデコーダ132を使用して制御プロセッサ
134(図4)とも通信している。制御プロセッサは、
データ簡約マイクロプロセッサ140のDMAチャネル
と割込みチャネルの制御の下で、データベース・メモリ
118内のデータを入出力ポート160を通してアクセ
スする。データ簡約マイクロプロセッサ140のDMA
チャネルは、制御プロセッサ134が入出力ポート16
0に対して読み書きするたびに、データベース・メモリ
118との間と入出力ポート160との間でデータを受
け渡しする。これにより、制御プロセッサ134はデュ
アル・ポートからデータベース・メモリ118をアクセ
スすることが可能になる。この結果、データ簡約マイク
ロプロセッサ140と制御プロセッサ134との間のデ
ュアル・ポート・メモリとして、比較的安価なDRAM
をデータベース・メモリ118に使用することが可能で
ある。さらに、制御プロセッサ134は相対的に低速で
あるので、データ簡約マイクロプロセッサ140のシン
グル・バス・サイクルだけを使用してデータベース・メ
モリを効率的にアクセスできるので、データ簡約計算に
対する遅延が最小限になる。
・シャーシ20における関数の大部分を実行する。デー
タ簡約プロセッサ114はタグ・バッファ112からの
タグを処理し、メモリ割当て、実行時間、リアル・タイ
ム・トレースといった、種々タイプのパフォーマンス分
析を行なうために、処理結果のデータを構造化形式でデ
ータベース・メモリ118にストアしておく。従って、
データベース・メモリ118には、コード・カバレッジ
・タグ以外のすべてのタグをキャプチャした結果のデー
タがストアされる。関係のあるデータをタグから抜き出
してそれをセーブ(save)しておき、そのあとでタグを破
棄することにより、データベース・メモリ118に要求
される容量を相対的に小さくすることができる。また、
必要なメモリ容量は、モニタされる関数またはタスク・
インスタンスの個数に依存するだけであり、タグ・バッ
ファ112から受け取るタグの個数には依存しない。こ
のようなデータベース構造の結果として(つまり、デー
タベースのサイズはイベントの発生回数ではなく、モニ
タされるイベントの数に比例している)、ソフトウェア
・プログラムの分析を無期限の期間にわたって行うこと
により、ソフトウェアが充分にテストされ、しかもデー
タが欠測していないことを確かめることができる。つま
り、測定はサンプリングされない。
トウェア・プログラムについて意味のある測定を行うた
めには、ソフトウェア実行コンテキスト(software exec
ution context)を追跡しなければならない。最新の組込
みプログラムは大部分がある種のリアル・タイム・オペ
レーティング・システム(“RTOS”)を使用してい
るので、このことはデータ簡約プロセッサ114がRT
OS実行コンテキストを知っていなければならないこと
を意味する。
トを追跡することが必要である。それはタスクが作成さ
れるとき、タスクが削除されるとき、およびタスク切替
え(スワップ)が行われるときである。これを行うため
には、第2のインストルメント化ステップ(アプリケー
ション・プログラム・ソースのインストルメント化ステ
ップを越えたもの)が必要である。最新の市販RTOS
の大部分は、特定のRTOSイベントが行われたとき、
ユーザが用意したソフトウェア関数が都合よく実行され
るようにするコール・アウト(call out)を備えている。
上記3つのRTOSイベントに対する適当なコール・ア
ウトにリンクされる単純な関数は、RTOSイベントの
種類を示す適当な制御タグと、その影響を受けたRTO
Sタスク(1つまたは複数)をユニークに識別する1つ
または2つ以上のデータ・タグを出力している。同じよ
うに、カスタムメードのRTOSも適当なタグを送出す
るように変更することが容易になっている。
OSタグを受け取ったかに応じて異なるアクションをと
る。「タスク作成(task create) 」タグを受け取ったと
きは、データ簡約プロセッサ114は、そのタスク用の
スタック・エリアをメモリに設定する。「タスク削除(t
ask delete) 」タグを受け取ったときは、データ簡約プ
ロセッサ114は、残りの測定結果があれば、それを作
表して適当なデータベースに入れたあとでタスクを削除
する。「タスク切替え(task switch) 」タグを受け取っ
たときは、データ簡約プロセッサ114は、現在のタス
ク・スタックの測定活動を一時中止し、(データ・タグ
として)受け取ったタスクIDに対応する別のスタック
に切り替える。
口点と出口点から送出されたタグを使用して、各タスク
内の関数レベルでコンテキストも追跡する。タスクへの
切替えが行われると、データ簡約プロセッサ114はタ
スク内の最初の関数から関数入口タグを受け取り、その
入口をスタック上に記録する(例えば、関数“A”)。
第2の関数(“8”)入口タグが関数Aの出口タグより
先に受信されたときは、関数Bの入口タグがスタック上
に記録され、関数のネスティングが行われたこと、つま
り、AがBをコールしたことがデータ簡約プロセッサ1
14に「知らされる」。パフォーマンス測定の目的上、
各タグに対応するタイム・スタンプもスタック上に記録
される。
からタスク“Z”へ)のようにコンテキスト変更が行わ
れたときは、現在の時間がYのスタックに記録されるの
で、プログラムが他のタスクを実行している間、それ以
後の実行時間がYのスタックに帰せられることがない。
そのあと、データ簡約プロセッサ114はタスクZに対
応するスタックに切り替わり、タスクZを実行している
間に送出された各タグの時間追跡を開始する。RTOS
がタスクYに戻るようにスワップしたときは、タスクZ
の時間と関数ネスティングは、タスクYで上述したよう
に、「凍結(freeze)」される。そのあと、データ簡約プ
ロセッサ114はYのスタックを再び指すように戻り、
適当なタイマが中断した個所で時間のカウントを再開す
る。タスクYの関数階層コンテキスト(function hierar
chy context)はYのスタック上に残されているので、シ
ステムはタスクYの活動の継続を正確に追跡することが
できる。「タスク削除」が受信されたときは、タスクの
スタックに残されている実行情報は最終的に作表され
て、適当なデータベースに入れられる。
トウェア実行コンテキストに基づいてプログラム測定の
多数の精密化した限定をすることが可能である。パフォ
ーマンス測定は、プログラムが特定のタスクを実行して
いるときだけ関数実行時間が追跡されるように限定でき
るので、2つまたは3つ以上のタスク間で共有される関
数の異なるコンテキストからの実行を除去することがで
きる。パフォーマンス測定を代表例として説明してきた
が、他の測定の限定も等しく可能であり、そうすること
が望ましい。例えば、トレース・ヒストリ測定は、タグ
が特定のタスク、または特定の関数ネスティング階層で
実行されているときトレース・バッファにのみストアさ
れるように、ソフトウェア・コンテキストによって限定
することも可能である。メモリ割当ては、プログラムが
特定のタスク・コンテキストなどで実行されているとき
だけ追跡されるようにすることも可能である。
関数と被コール側関数のソース・コード内のそれぞれの
タグ・ステートメントによって生成された連続する関数
入口タグを識別することによって、どの関数が他の関数
をコールしたかを追跡することによってコール・ペアの
測定を行う。データ簡約プロセッサ114は新しい関数
入口タグが受信されるたびにこの情報を更新する。その
結果のデータは、各コール・ペアの実行のカウントとし
てストアしておくことも、各コール・ペアの少なくとも
一回の実行を示すフラグとしてストアしておくことも可
能である。
ソース・コード内の割当てステートメントに挿入された
タグ・ステートメントによって生成されたメモリ割当て
タグをタグ・バッファ112から受信することに基づい
て、メモリ割当ての測定を行う。これらのメモリ割当て
タグ(制御タグとデータ・タグを含む)は、メモリ割当
て関数への各コールによってメモリがどれだけ割当てら
れたか、あるいは解放されたかを示している。
く行われた割当てと割当て解除、この中には、元の割当
てサイズとサイト(コール側ID)が含まれる、と割当
てエラー、この中には、ブロックの上書き(block overw
rite) 、ブロックの下書き(block underwrite)、ヒープ
破壊(heap corruption) (つまり、境界参照の外に出る
書込み)、割当て解除されたブロックへの書込み、イン
タフェース・ルーチンへの正しくない引数(例えば、ワ
イルド・ポインタ)が含まれる、を記録することであ
る。
tagging) の実現には、エラー検査メモリ・アロケータ
(error-checking memory allocator) とそのアロケータ
とのインストルメント化インタフェース、ユーザ・コー
ドを修正するときのインストルメント化ルールのセッ
ト、および標準メモリ割当てルーチンに置き換わるルー
チンのセットが含まれる。エラー検査メモリ・アロケー
タは単純なヒープ・ベースのメモリ・アロケータをベー
スにしている。アロケータとのインタフェースは標準メ
モリ割当てルーチンをベースにしており、メモリ管理タ
グを追加することにより拡張されている(例えば、拡張
版malloc)。このタグはメモリ割当て(割当て解除)コ
ールの種類(例えば、malloc、 realloc、 free など)と
コール側識別子(caller identifier) をコード化してい
る。各割当てに関する情報、この中には要求されたサイ
ズおよび割当てサイトのコール側IDが含まれるが、こ
れは、ブロックが割当て解除されるときやブロックにエ
ラーが見つかったときあとで参照するように保存されて
いる。
ータ・タグと制御タグは、割当てが行われたこと、この
中には、割当てられたブロックのサイズ(データ・タ
グ)および割当ての種類とコール側ID(制御タグ)が
含まれるが、これを知らせるように書き込まれる。ブロ
ックが正しく割当て解除されたときは、データ・タグと
制御タグは正しく割当てが行われた場合と同じように書
き出され、この中には、割当てられたブロックのサイ
ズ、割当て解除の種類、および割当てのコール側IDが
含まれている。
ラー検査で拡張されており、この中には、割当てルーチ
ンと割当て解除ルーチンへの引数の検証、ヒープに存在
する各ブロックの整合性(integrity) 、これは現在割当
てられているか、解放されているかに関係ないものであ
り、およびヒープ全体の整合性が含まれている。エラー
が認められると、データ・タグと制御タグのセットはそ
のエラーを示すように書き込まれる。タグに存在する情
報としては、エラー識別子(error identifier)、エラー
のあるブロックのアドレスとそのサイズ(もしあれ
ば)、ブロックのアロケータとデアロケータのコール側
ID(もしあれば)、およびエラーが発見されたとき試
みだされるアロケータ・コールの種類がある。
ンストルメント化Cコードは、オリジナルのコールを対
応するインストルメント化インタフェースへのコールで
置き換えるように変更され、上述したように、メモリ管
理タグが追加できるようにしている。標準メモリ割当て
ルーチン(例えば、事前コンパイル・ライブラリ)をコ
ールする非インストルメント化Cコードは、標準ルーチ
ンと同じシグネチャ(signature) をもっているが、対応
するインストルメント化インタフェースをコールして、
「未知の」コール側IDを引き渡すルーチン群に用意さ
れている。
ほかに、インストルメント化 C++コードも、グローバル
・バージョンのオペレータnew とdeleteの使用を扱える
ようになっていなければならない。
コールするインストルメント化 C++コードでは、ファイ
ルのローカル定義は配置シンタックス(placement synta
x)を使用して与えられ、標準オペレータnew のシグネチ
ャをメモリ管理タグの引数で拡張している。デフォルト
・オペレータnew の使用は拡張バージョンへのコールで
置き換えられているので、その定義はアロケータとのイ
ンストルメント化インタフェース(つまり、拡張版mall
oc)をコールするだけである。非インストルメント化C
++コードでは、デフォルト・バージョンのグローバル・
オペレータnewが用意されており、これは拡張版malloc
を「未知の」コール側IDを使用してコールしている。
るインストルメント化C++コードでは、デフォルトdele
teオペレータのファイル・ローカル定義が用意されてい
るが、これはなにも行わない。(現在では、なにも行わ
ない)オペレータdeleteをコールすると、これに続い
て、インストルメント化インタフェース(つまり拡張版
free)が適当なメモリ割当てタグと一緒にコールされ
る。非インストルメント化C++コードでは、デフォルト
・バージョンのオペレータnew が用意されており、これ
は拡張版freeを「未知の」コール側IDを使用してコー
ルしている。
ーシ20は通信/制御回路120を通してホスト40と
通信している。ホスト・プロセッサ40のコマンドを受
けて、通信/制御回路120はデータベース・メモリ1
18またはコード・カバレッジ・データ簡約プロセッサ
とデータベース110にストアされたデータを直接にア
クセスできるので、このデータをホスト40に転送して
別の処理を行い、表示することが可能になっている。通
信/制御回路120はホスト40からのコマンドをプロ
ーブ・シャーシ20へも転送して、実行すべき関数およ
び収集すべきタグ・タイプの指定といった、プローブ・
オペレーションのモードを選択する。
簡約プロセッサ114とのインタフェースと共に図6に
示されている。上述したように、タグは、マイクロプロ
セッサ140の最大処理レートを越えるレートで、プロ
ーブ・チップ12によってバーストでキャプチャされる
ことがよくある。タグ・キャプチャ・レートを平均化す
る1つの方法として、先入れ先出し(“FIFO”)バ
ッファを使用することが知られている。しかし、高速レ
ートで動作し、非常に多数のタグをストアするだけの容
量をもつFIFOバッファは相対的に高価である。図6
に示すタグ・バッファ112は、従来設計の、高速で、
低容量のFIFOバッファ170を使用して、大容量
で、高速のFIFOバッファを効果的に実現することが
できる。FIFOバッファ170はタグ・プロセッサ1
00(図3)からタグを受け取り、そのタグを順にマイ
クロプロセッサ140に出力していくのが通常である。
これを受けて、マイクロプロセッサ140はデータ簡約
と処理を待っている間、これらのタグをDRAM150
にストアしておくようになっている。しかし、相対的に
低容量のFIFOバッファ170がいっぱいになるよう
なことが起こると、マイクロプロセッサ140のダイレ
クトメモリアクセス(direct memory access -DMA)
の入力にビットを出力している。そのあと、マイクロプ
ロセッサ140はFIFOバッファ170がデータをD
RAM150に直接に書くことを可能にし、これによっ
てDRAM150におけるデータ書込みを高速化してい
る。
00はプローブ・チップ12から受け取ったタグを、タ
イム・スタンプ・ジェネレータ102から受け取ったタ
イム・スタンプと結合して、それらをデータ簡約プロセ
ッサ114へ転送するか、あるいはコード・カバレッジ
・データ簡約プロセッサとデータベース110へ転送す
る。タグ・プリプロセッサ100は図7にその詳細が示
されている。クロック/制御回路180はタイム・スタ
ンプ・ジェネレータ(図3)とのインタフェースとなっ
て、クロック信号をプローブ・チップ12から受信し、
制御ビットをデータ簡約プロセッサ114から受信す
る。そのあと、クロック/制御回路180はタグ・プロ
セッサ100内の他のコンポーネントのオペレーション
を制御する。タグ・プリプロセッサ100はプローブ・
チップ・ラッチ182を含んでおり、これはクロック/
制御回路180によってトリガされると、タグ・タイプ
・フィールドとタグ値をタグ・プリプロセッサ100に
ラッチするようになっている。タグ・タイプに基づい
て、コード・カバレッジ・タグ・スプリッタ(splitter)
184はタグをバス188経由でコード・カバレッジ・
データ簡約プロセッサ110(図3)へ転送するか、あ
るいはバス192経由でタグ・マルチプレクサ190へ
転送する。タグ・プリプロセッサ100は内部タグ・ジ
ェネレータ194も含んでおり、これは内部タグをタグ
・マルチプレクサ190へ入力できるようになってい
る。データ簡約プロセッサ114は、バス196上の内
部タグまたはバス192上のプローブ・チップ12から
のタグをタグ・バッファ112に入力するようにタグ・
マルチプレクサ190を制御する。最後に、同期(sync
h) ラッチ198はクロック/制御回路180の制御を
受けて適当な時刻にタイム・スタンプをラッチして、タ
イム・スタンプが現在キャプチャされたタグと同期され
るようにする。
ェースは、図8に示すユーザ・インタフェース・コマン
ド・バーを参照して最もよく説明される。ソフトウェア
分析システム10が動作している間、モニタ46(図
1)のディスプレイ・スクリーン48には、タイトルバ
ー230がスクリーンの上部に表示されている。コマン
ドをシステム10に入力するためのコマンドバー232
はタイトルバー230の下に位置している。最後に、コ
マンドバー232から利用できるコマンドを直接に入力
できるようにするツールバー234はコマンドバー23
2の下に位置している。コマンドバー232から利用で
きるファイル・コマンドの大部分は、マウスなどのポイ
ンティング・デバイスを使用してツールバー234の適
当なアイコンをクリックすることで、直接に選択するこ
とが可能である。new file(新ファイル)アイコン24
0は、システムに未セーブのデータをセーブし、スクリ
ーン上でオープンしているビューがあるとそれをクロー
ズさせ、構成(configuration) ダイアログを呼び出し
て、新しいタスク用に構成できるようにさせる。"open"
アイコン242は、以前のテストでセーブされていた分
析結果をロードし、表示するためのダイアログを呼び出
す。"save"アイコン244は、テストで得た分析データ
をセーブするファイル・セーブ(file save) ダイアログ
を呼び出す。セーブ・コマンドでは、データにはファイ
ル名がすでに与えられているものと想定している。まだ
与えられていなければ、ファイル・セーブ・ダイアログ
は、ファイル・データをセーブするときのファイル名を
入力するようにユーザに要求する。"print" アイコン2
46は、プリント・ダイアログを呼び出すので、分析デ
ータまたはデータのサブセットを示す報告書をソフトウ
ェア分析システムに印刷させることができる。print pr
eview アイコン248は、ビュアー(viewer)が印刷され
たドキュメントがどのように現われるかをスクリーン上
で見ることができるようにする。ユーザは印刷ドキュメ
ントがどのような体裁になっているかをスクリーン上で
見ることができる。ユーザは、exitバー250をダブル
クリックするか、あるいはコマンドバー232のファイ
ル・コマンドとして"exit"を選択することで、Windows
ソフトウェアから出ることができる。
ンドは1つのコマンド、つまり、"copy"(コピー)コマ
ンドだけである。このコマンドはツール・バー234か
ら"copy"アイコン260を選択することで入力できる
が、選択したデータをクリップボード(つまり、一時的
記憶領域)にコピーして、スプレッドシート・プログラ
ムのような別のアプリケーションにペーストできるよう
にする。
つかのrun(実行)コマンドは、ツール・バー234から
入力することも可能である。"run" アイコン270は、
以前に収集されたデータがあればそれを消去し、分析関
数を実行している間にプローブ12からのデータ収集を
開始する。"halt"(中止)アイコン272は、resume
(再開)アイコン274が選択されるまでプローブから
のデータ収集を中止する。コマンド・バー232から、
あるいはツール・バー234から選択できるデータ・コ
マンドは非常に多数ある。"sort ascending"(昇順ソー
ト)アイコン280は、分析から収集されたアクティブ
・データを、選択されたカラム(column)の値の昇順にソ
ートする。同様に、"sort descending"(降順ソート)ア
イコン282を選択すると、収集データは降順にソート
される。"sort multiple" アイコン284を選択する
と、マルチレベル・ソートをセットアップするsort(ソ
ート)ダイアログが呼び出される。
と、アクティブ・ビューのデータ・フィルタをセットア
ップするfilter(フィルタ)ダイアログが呼び出され
る。ディスプレイをフィルタにかけると、選択された測
定結果だけが、つまり、関心のある関数だけが表示され
る。"apply current filter"アイコン288の選択は、
システムが、以前に指定されたフィルタをアクティブ・
データ・ビューに適用するようにさせる。"show all"ア
イコン290は、データ・フィルタを取り除き、収集デ
ータのすべてがアクティブ・ビューに表示される。"fin
d"アイコン292は、アクティブ・ビュー内のサーチを
セットアップするfind(探索)ダイアログを呼び出す。
ー232から、あるいはツール・バー234から直接に
入力することができる。"function performance"アイコ
ン300を選択すると、関数パフォーマンス・テーブル
が呼び出され、そこには、プローブから収集されたか、
あるいは前の分析からストアされていたファイルからロ
ードされた関数パフォーマンス・データが表示され
る。"task performance"コマンドはコマンド・バー23
2のビュー・メニューから選択できるが、対応するアイ
コンはツール・バーにはない。"task performance"コマ
ンドは、プローブまたはファイルからの以前に収集され
たタスク・パフォーマンス・データを表示する。"call
linkage"パフォーマンス・アイコン302は、コール・
リンケージ・テーブルを呼び出し、プローブからの、あ
るいは以前のテストで収集されたコールペア・データの
ファイルからのコールペア・データを表示する。"branc
h coverage" アイコン304を選択すると、ブランチ・
カバレッジ・テーブルが呼び出され、そこには、プロー
ブからの、あるいは前のテストからセーブされていたフ
ァイルからのカバレッジ・データが表示される。"cover
age summary graph"アイコン306を選択すると、カバ
レッジ・サマリグラフが呼び出され、そこには、プロー
ブからの、あるいは前の分析からストアされていたファ
イルからのカバレッジ・データの統計レコードが表示さ
れる。"memory allocation" アイコン308を選択する
と、メモリ割当てテーブルが呼び出され、そこには、プ
ローブから収集された、あるいは前のテストからセーブ
されていたファイルからのメモリ割当てデータが表示さ
れる。最後に、"trace analysis"アイコン310は、デ
ィスプレイ・ウィンドウにトレース・ビューを呼び出
し、プローブから収集された、あるいは前のテストから
セーブされていたファイルからのトレース・データを表
示する。
34の隠蔽または表示、オープン・ビュー・ウィンドウ
のカスケード(cascading) またはタイリング(tiling)、
アイコンの配置などの標準Windows(登録商標)コマンド
を使用することも可能である。ツール・バー234には
インデックス・アイコン251も含むので、そこからト
ップレベルのコンテンツ・ページを呼び出して、システ
ム10の操作に関するオンライン・ヘルプを得ることが
でき、また、ディスプレイ上の任意のアイテムに「ドラ
ッグ」または「ドロップ」してそのアイテムに関するヘ
ルプを得ることができる、第2の "help" アイコン23
2も含まれている。従って、Windows(登録商標)ユーザ
・インタフェースは、比較的経験のない人によるソフト
ウェア分析システムの容易かつ迅速な操作をさせること
ができる。X-11ウィンドウ・システムを利用するUNIX
(登録商標)ワークステーション上で稼働する同種のユ
ーザ・インタフェースも、使用する上で同じように容易
かつ、高速化されている。
タスク・パフォーマンスと関数パフォーマンスの両方の
場合について図9に示されている。関数パフォーマンス
・ディスプレイ310には、ソース・コードによって実
行された種々の関数をリストしている第1カラム(colum
n)312があり、これらの関数の各々が実行された回数
を示しているカラム314がそのあとに続いている。そ
のあとに続いて、時間カラム316,318,320
は、カラム312にリストされた関数の各々を実行する
ために必要であった最小時間、最大時間および平均時間
をそれぞれ示している。関数の各々を実行する際に消費
された累積時間(つまり、実行回数と平均時間の積)は
カラム322に表示される。最後に、カラム324は第
1カラム312にリストされた関数の各々がどれだけの
時間実行されていたかをパーセントで示している。カラ
ム324のデータは、カラム322の各エントリとカラ
ム322のエントリの総和との比率として計算すること
ができる。
イ・スクリーン330は関数パフォーマンス分析のディ
スプレイ・スクリーン310と大体同じであるので、簡
略化するために、その説明は省略することにする。カラ
ム324に表示されるパフォーマンス分析の比率はバー
・グラフ・ヒストグラムで表示することも可能である。
ム10は、メモリ割当てを動的に分析することも可能で
あり、そのような分析から得たデータのディスプレイ例
を示したのが図10である。メモリ割当てスクリーン3
50は、メモリ割当てステートメントを含んでいる関数
の各々をリストしている第1カラム352を含んでい
る。第2カラム354はこれらの関数の各々のソース・
ファイルをリストしている。次のカラム356はこれら
の関数の各々が実行された回数をリストしており、次の
3カラム358,360,362はそれぞれ最小メモリ
割当て、最大メモリ割当ておよび平均メモリ割当てをリ
ストしている。最後のカラム364は、現在割当てられ
ているメモリ・バイト数のバー・グラフとディジタル・
ディスプレイを含んでいる。カラム364のバーグラフ
を見ると、オペレータはソフトウェアが実行されている
ときの、ターゲット・システムのメモリ割当てをほぼリ
アル・タイムで調べることができる。メモリ割当てディ
スプレイ330と一緒に、メモリ・エラー・ディスプレ
イ370も表示され、そこには、メモリ割当て分析を行
っている途中で見つかったメモリ・エラーがリストされ
ている。
ンケージ・テーブルの例は図11に示されている。コー
ル・リンケージ・ディスプレイ380は複数の関数リン
ケージを動的に追跡したもので、コール側関数を第1カ
ラム382に、被コール側関数を第2カラム384にリ
ストしている。コール側関数の各々が被コール側関数を
コールした回数は、ディジタル形式とバー・グラフ形式
で第3カラム386にリストされている。
ステートメントを各ブランチに置くことによりインスト
ルメント化して、コール・カバレッジ、つまり、実行さ
れたブランチの数および各ブランチの実行頻度を評価す
ることができる。コード・カバレッジ・ディスプレイ4
00の例はh〜図12に示されている。コード・カバレ
ッジ・ディスプレイ400は、テスト期間中に達成され
た全体レベルのカバレッジを示すバー・グラフ402を
含んでいる。関数は100分率の範囲別に分類されて縦
軸に示され、各範囲のグループに属する関数の数は横軸
に示されている。実行されなかった関数とタスクの総数
は404に示すようにディスプレイの一番下にリストさ
れている。このリスト404は、オペレータに、実行さ
れていないように思われるソフトウェア部分を警告する
ことができる。もう1つのコード・カバレッジ・ディス
プレイ408は、図13に示すように、テストを実施し
ている期間に達成されたカバレッジのパーセントを示す
線グラフ410からなっている。図13のコード・カバ
レッジ・グラフ410は、コードの15%が最初の1分
間に実行され、コード・カバレッジのレートが次の2分
間にわずかであるが増加し、そのあと、コード・カバレ
ッジのレートが40%に平準化されるまで、次の2分間
に速度を速めて増加していることを示している。
の異なるモードで表示することができる。図14に示す
ハイレベル・トレース・ディスプレイ420は、トレー
ス・モードに入ったとき表示されるデフォルト・ビュー
であることが好ましい。このディスプレイ420は、ネ
ストされた関数入口点と出口点およびRTOSタスク・
イベントを時間順に配列したリストからなっている。デ
ィスプレイは、ソフトウェアのソース・ファイルを示し
ているカラム422、関数を実行順に示しているカラム
424、その関数の行番号(line number) を示している
カラム426、トレースされた関数が入口点であった
か、出口点であったかを示しているカラム428を含ん
でいる。各関数の相対的タイム・スタンプは右側のカラ
ム430にリストされている。別の方法として、トレー
スの結果は図15に示す制御フロー・ディスプレイ44
0に表示することも可能である。制御フロー・ディスプ
レイは、すべての関数点(function points) 、実行され
たブランチおよびトレース・バッファに入っているリア
ル・タイム・オペレーティング・システムのイベントを
時間順に配列したリストを表示する。ハイ・レベル・デ
ィスプレイ420の場合と同様に、制御フロー・ディス
プレイは、ソース・ファイルを第1カラム442に、タ
スク、関数、およびブランチ点を実行順に第3カラム4
44に、関数が出口点であるか、入口点であるか、ブラ
ンチであるかをカラム446に、その点の行番号をカラ
ム448に表示する。前記と同じように、右側のカラム
450には、各点の相対的タイム・スタンプがリストさ
れる。最後に、トレースの結果は図16に示すソース・
ビュー・ディスプレイ460に表示することができる。
ソース・ビュー・ディスプレイは、ループが拡大または
つぶされている(collapse)ことがあっても、実行された
ソフトウェアのすべての行を表示する。このディスプレ
イ460は、実行されたと推定されるソース行を間に挿
入している。この実行の判断は、各ブランチ・タグが置
かれている基本ブロックを構成しているソース・コード
行を検索することにより行なわれる。関数の入口と出
口、ブランチ、RTOSイベントおよび関心のあるソフ
トウェアの中のその他の実行された行は、カラーでコー
ディングされていることが好ましい。図14と図15に
示す他のトレース・ディスプレイの場合と同様に、ソー
ス・ビュー・ディスプレイ460はソースファイルを第
1カラム462に、関数を実行順に第3カラム464
に、関数が出口点であるか、入口点であるか、ブランチ
であるかをカラム466に、その点の行番号をカラム4
68に、各点の相対的タイム・スタンプをカラム470
に表示する。
に、ソフトウェア分析システム10が表示することがで
きる種々の分析関数は、図9〜図15に示すものとは異
なる、別のディスプレイに表示することが可能である。
さらに、上述した説明から認められるように、説明の便
宜上、本発明の特定の実施例を説明してきたが、本発明
の精神と範囲を逸脱しない限り、種々態様に変更するこ
とが可能である。従って、本発明は、特許請求の範囲の
欄に記載されている事項以外によって限定されるもので
はない。
実施例を示す等角図である。
用態様を示す概略ブロック図である。
ロック図である。
ブロック図である。
を示すブロック図である。
ブロック図である。図7は、図3のブロック図に示すタ
グ・プロセッサを示すブロック図である。
すブロック図である。
ウィンドウのスクリーン・ディスプレイを示す図であ
る。
された2つの異なるタイプのソフトウェア・パフォーマ
ンス分析の結果を表示しているスクリーン・ディスプレ
イを示す図である。
行されたメモリ割当て分析の結果を表示しているスクリ
ーン・ディスプレイを示す図である。
行されたコール・リンケージ分析の結果を表示している
スクリーン・ディスプレイを示す図である。
行されたコード・カバレッジ分析の結果を表示している
スクリーン・ディスプレイを示す図である。
行されたコード・カバレッジ分析の結果の別のプレゼン
テーションを表示しているスクリーン・ディスプレイを
示す図である。
行されたハイ・レベル・トレース分析の結果を表示して
いるスクリーン・ディスプレイを示す図である。
行された詳細トレース分析の結果を表示しているスクリ
ーン・ディスプレイを示す図である。
行された別の詳細トレース分析の結果を表示しているス
クリーン・ディスプレイを示す図である。
よびデータベース 112 タグ・バッファ 114 データ簡約プロセッサ 134 制御プロセッサ 136 制御メモリ 140 データ簡約マイクロプロセッサ 142 データ・バス 144 アドレス・バス 146 制御/ステータス・バス 170 FIFOバッファ 182 プローブ・チップ・ラッチ 190 タグ・マルチプレクサ 198 同期ラッチ
Claims (30)
- 【請求項1】 データ・バスおよびアドレス・バスをも
つターゲット・システムで実行されるソフトウェアを分
析するシステムであって、前記ソフトウェアは、実行さ
れると、前記ターゲット・システムが該ターゲット・シ
ステムのアドレス空間内のそれぞれのあらかじめ定めら
れたロケーションに少なくとも1つのタグを書き出すよ
うにする複数の実行可能タグ・ステートメントを含んで
おり、前記タグは該タグを生成するタグ・ステートメン
トの前記ソフトウェアに置かれているロケーションに対
応するそれぞれのタグ値を含んでいる該システムにおい
て、 該ターゲット・システムが該ソフトウェアを実行してい
る間該ターゲット・システムのアドレス・バスおよびデ
ータ・バスに接続されたプローブであって、該プローブ
は、該ターゲット・システムのアドレス空間内の前記あ
らかじめ定められたロケーションがいつアドレスされる
かを検出し、該プローブは、該あらかじめ定められたロ
ケーションがアドレスされたことを該プローブが検出し
たとき該ターゲット・システムのデータ・バス上のタグ
をキャプチャするものと、 該プローブに接続されたプロセッサであって、該プロセ
ッサは実行されたソフトウェア・ロケーションを、前記
キャプチャされたタグのそれぞれのタグ値に基づいて判
断するものとを備えたことを特徴とするシステム。 - 【請求項2】 請求項1記載のシステムにおいて、 前記プローブに接続されたタイム・タグ・ジェネレータ
であって、該タイム・タグ・ジェネレータは、前記プロ
ーブが前記ターゲット・システムのデータ・バス上の前
記タグをキャプチャしたときのそれぞれの時間を記録す
るものと、 前記プロセッサに接続されたソフトウェア・パフォーマ
ンス・アナライザであって、該ソフトウェア・パフォー
マンス・アナライザは、第1ロケーションと第2ロケー
ションとの間で前記ソフトウェアを実行するのに必要な
時間を、第1タグおよび第2タグが前記データ・バスか
らキャプチャされたとき記録された第1時間と第2時間
との差に基づいて判断するものとをさらに備えたことを
特徴とするシステム。 - 【請求項3】 請求項1記載のシステムにおいて、前記
タグの少なくとも一部は、該タグが使用されたときの分
析関数に対応するタグ・タイプ・フィールドをもち、前
記プロセッサは、前記タグ・タイプ・フィールド内のそ
れぞれの値に基づいて、それぞれの分析関数に応じて該
タグを異なるように処理する手段を含んでいることを特
徴とするシステム。 - 【請求項4】 請求項1記載のシステムにおいて、前記
タグ・ステートメントの少なくとも1つは、該タグ・ス
テートメントを前記メモリ割当てステートメントと一緒
に実行させるロケーションで前記ソフトウェアに挿入さ
れ、実行可能データ・タグ・ステートメントは、前記メ
モリ割当てステートメントと一緒に実行されるロケーシ
ョンで該ソフトウェアに挿入され、前記データ・タグ・
ステートメントは、実行されると、前記ターゲット・シ
ステムが該ターゲット・システムのアドレス空間内のあ
らかじめ定められた第2のロケーションにデータ・タグ
を書き出すようにし、前記データ・タグは、該メモリ割
当てステートメントによって割当てられるメモリを示し
ているデータ値を含んでおり、該システムは前記プロセ
ッサに接続されたメモリ割当てアナライザをさらに含ん
でおり、該メモリ割当てアナライザは該メモリ割当てス
テートメントから得られたメモリ割当てを、前記プロー
ブによってキャプチャされた前記データ・タグのデータ
値に基づいて判断することを特徴とするシステム。 - 【請求項5】 請求項4記載のシステムにおいて、前記
メモリ割当てアナライザは、前記メモリ割当てステート
メントによって割当てられたメモリのランニング・アカ
ウントを、前記プローブによってキャプチャされたそれ
ぞれのデータ・タグのデータ値に基づいて維持する手段
をさらに含んでいることを特徴とするシステム。 - 【請求項6】 請求項5記載のシステムにおいて、前記
メモリ割当てアナライザは割当てられたメモリの量のグ
ラフを前記ランニング・アカウントに基づいて基本的に
リアル・タイムで生成する手段をさらに含んでいること
を特徴とするシステム。 - 【請求項7】 請求項1記載のシステムにおいて、前記
タグ・ステートメントは、それぞれのタグ・ステートメ
ントを複数の関数コール・ステートメントと一緒に実行
させるロケーションで前記ソフトウェアに挿入され、該
システムは該ソフトウェアのどの関数が前記ソース・コ
ードの他の関数とリンクされているかを、前記プローブ
が前記タグをキャプチャしたときの順序に基づいて判断
するコール・ペア・アナライザをさらに含んでいること
を特徴とするシステム。 - 【請求項8】 請求項7記載のシステムにおいて、前記
コール・ペア・アナライザは、特定の被コール側関数が
特定のコール側関数によってコールされる回数のレコー
ドをコンパイルする手段をさらに含んでいることを特徴
とするシステム。 - 【請求項9】 請求項7記載のシステムにおいて、前記
コール・ペア・アナライザは、特定の被コール側関数が
特定のコール側関数によってコールされる相対的頻度の
統計的レコードをコンパイルする手段をさらに含んでい
ることを特徴とするシステム。 - 【請求項10】 請求項1記載のシステムにおいて、前
記タグ・ステートメントは、前記ソフトウェアのそれぞ
れのブランチに挿入されて、該タグ・ステートメントが
前記ブランチと一緒に実行されるようにし、該システム
は該ソフトウェアのどのブランチが実行されたかを、前
記プローブによってキャプチャされた前記タグのタグ値
に基づいて判断するコード・カバレッジ・アナライザを
さらに含んでいることを特徴とするシステム。 - 【請求項11】 請求項1記載のシステムにおいて、前
記プロセッサに接続されたタグ・フィルタをさらに含
み、該タグ・フィルタは、 前記タグを処理する基準をそれぞれのタグ値に基づいて
設定するセレクション手段と、 前記プローブによってキャプチャされた各々のタグを検
査し、該タグが前記基準に合致しているかどうかを判定
するコンパレータ手段と、 該基準に合致しないタグを無視し、タグが該基準に合致
している場合だけ該タグが前記プロセッサによって処理
されるようにするフィルタ手段とを備えたことを特徴と
するシステム。 - 【請求項12】 請求項1記載のシステムにおいて、前
記プローブは、 前記ターゲット・システムが前記ソフトウェアを実行し
ている間該ターゲット・システムのアドレス・バスおよ
びデータ・バスに接続されたプローブ・チップであっ
て、前記プローブは該ターゲット・システムのアドレス
空間内の前記あらかじめ定められたロケーションがいつ
アドレスされるかを検出し、前記プローブ・チップは、
該プローブ・チップが該あらかじめ定められたロケーシ
ョンがアドレスされたことを検出したとき該ターゲット
・システムのデータ・バス上のタグをキャプチャするも
のと、 該プローブ・チップに接続されたタグ・プリプロセッサ
であって、該タグ・プリプロセッサは前記タグを検査
し、該タグがコード・カバレッジ分析のために使用され
ている場合は該タグを第1出力へ転送し、該タグがコー
ド・カバレッジ分析のために使用されていない場合は該
タグを第2出力へ転送することを該タグの内容に基づい
て行うものと、 該タグ・プリプロセッサの第1出力に接続されたコード
・カバレッジ・データ簡約プロセッサおよびデータベー
スと、 該タグ・プリプロセッサの第2出力に接続されたタグ・
バッファであって、該タグ・バッファは該タグ・プリプ
ロセッサの第2出力から受け取ったタグをストアしてお
き、あとで該タグを前記プロセッサへ出力して、該タグ
のそれぞれのタグ値に基づいて、実行されたソース・コ
ード・ロケーションを判断できるようにするものとをさ
らに備えたことを特徴とするシステム。 - 【請求項13】 データ・バスおよびアドレス・バスを
もつターゲット・システムで実行されるソフトウェアを
分析する方法において、該方法は、 複数の実行可能タグ・ステートメントを前記ソフトウェ
ア内のロケーションに挿入するステップであって、前記
タグ・ステートメントの各々は、実行されると、前記タ
ーゲット・システムが該ターゲット・システムのアドレ
ス空間内のあらかじめ定められたロケーションにタグを
書き出すようにし、該タグは該タグを生成するタグ・ス
テートメントの該ソフトウェア内のロケーションに対応
するそれぞれのタグ値を含んでいるものと、 該ターゲット・システムが該ソフトウェアを実行するこ
とを許可するステップと、 該ターゲット・システムが該ソフトウェアを実行してい
る間該ターゲット・システムのアドレス・バスおよびデ
ータ・バスをモニタするステップと、 該ターゲット・システムのアドレス空間内の前記あらか
じめ定められたロケーションがいつアドレスされるかを
検出するステップと、 該あらかじめ定められたロケーションがアドレスされた
ことが検出されたとき該データ・バス上のタグをキャプ
チャするステップと、 実行されたソフトウェア・ロケーションを前記キャプチ
ャされたタグのそれぞれのタグ値に基づいて判断するス
テップとを備えたことを特徴とする方法。 - 【請求項14】 請求項13記載の方法において、 第1タグが前記データ・バス上に現れたときの第1時間
を記録するステップであって、前記第1タグは該第1タ
グを生成する第1タグ・ステートメントの前記ソフトウ
ェア内の第1ロケーションに対応する第1タグ値をもっ
ているものと、 第2タグが前記データ・バス上に現れたときの第2時間
を記録するステップであって、前記第2タグは該第2タ
グを生成する第2タグ・ステートメントの前記ソフトウ
ェア内の第2ロケーションに対応する第2タグ値をもっ
ているものと、 前記第1時間と第2時間との差に基づいて、前記第1ロ
ケーションと第2ロケーションとの間に該ソフトウェア
を実行するのに必要な時間を判断するステップとをさら
に含むことを特徴とする方法。 - 【請求項15】 請求項13記載の方法において、前記
タグ・ステートメントの少なくとも一部は、実行される
と、前記ターゲット・システムが該ターゲット・システ
ムのアドレス空間内のあらかじめ定められたロケーショ
ンにタグを書き出すようにし、該タグは該タグの分析関
数に対応するタグ・タイプ・フィールドをもち、異なる
タグがそれぞれの分析関数に応じて異なるように処理さ
れることを特徴とする方法。 - 【請求項16】 請求項13記載の方法において、前記
タグ・ステートメントの少なくとも1つは、該タグ・ス
テートメントを前記メモリ割当てステートメントと一緒
に実行させるロケーションで前記ソフトウェアに挿入さ
れ、該方法は、 実行可能データ・タグ・ステートメン
トを、前記メモリ割当てステートメントと一緒に実行さ
せるロケーションで該ソフトウェアに挿入するステップ
であって、前記データ・タグ・ステートメントは、実行
されると、前記ターゲット・システムが該ターゲット・
システムのアドレス空間内のあらかじめ定められた第2
ロケーションにデータ・タグを書き出すようにし、該デ
ータ・タグは該メモリ割当てステートメントによって割
当てられるメモリを示すデータ値を含んでいるものと、 該ターゲット・システムのアドレス空間内の前記あらか
じめ定められた第2ロケーションがいつアドレスされる
かを検出するステップと、 該あらかじめ定められた第2ロケーションがアドレスさ
れたことが検出されたとき前記データ・バス上のデータ
・タグをキャプチャするステップと、 該メモリ割当てステートメントから得られたメモリ割当
てを前記キャプチャされたデータ・タグのデータ値に基
づいて判断するステップとをさらに備えたことを特徴と
する方法。 - 【請求項17】 請求項16記載の方法において、デー
タ・タグ・ステートメントをソフトウェア・ロケーショ
ンに挿入してデータ・タグ・ステートメントが各メモリ
割当てステートメントの実行と一緒に実行されるように
するステップをさらに含み、該方法は前記メモリ割当て
ステートメントによって割当てられたメモリのランニン
グ・アカウントを、キャプチャされたそれぞれのデータ
・タグのデータ値に基づいて維持するステップをさらに
含むことを特徴とする方法。 - 【請求項18】 請求項17記載の方法において、割当
てられたメモリの量のグラフを前記ランニング・アカウ
ントに基づいて、基本的にリアル・タイムで生成するス
テップをさらに含むことを特徴とする方法。 - 【請求項19】 請求項13記載の方法において、 それぞれのタグ・ステートメントを複数の関数コール・
ステートメントと一緒に実行させるロケーションでタグ
・ステートメントを前記ソフトウェアに挿入するステッ
プと、 前記あらかじめ定められたロケーションがアドレスされ
たことが検出されたとき前記タグがキャプチャされたと
きの順序に基づいて、該ソフトウェアのどの関数が該ソ
フトウェアの他の関数とリンクされているかを判断する
ステップとをさらに含むことを特徴とする方法。 - 【請求項20】 請求項19記載の方法において、特定
の被コール側関数が特定のコール関数によってコールさ
れる回数のレコードをコンパイルするステップをさらに
含むことを特徴とする方法。 - 【請求項21】 請求項19記載の方法において、特定
の被コール側関数が特定のコール側関数によってコール
される相対的頻度の統計的レコードをコンパイルするス
テップをさらに含むことを特徴とする方法。 - 【請求項22】 請求項13記載の方法において、 タグ・ステートメントを前記ソフトウェアのそれぞれの
ブランチに挿入し、該タグ・ステートメントが前記ブラ
ンチと一緒に実行されるようにするステップと、 前記あらかじめ定められたロケーションがアドレスされ
たことが検出されたときキャプチャされた前記タグのタ
グ値に基づいて、該ソフトウェアのどのブランチが実行
されたかを判断するステップとをさらに含むことを特徴
とする方法。 - 【請求項23】 請求項13記載の方法において、 前記タグを処理する基準を、それぞれのタグ値に基づい
て設定するステップと、 キャプチャされた各々のタグを検査して、該タグが前記
基準に合致しているかどうかを判定するステップと、 そのあとで、該タグが該基準に合致している場合にだけ
該タグを処理して表示するステップとをさらに含み、も
って該タグがキャプチャされた後該タグをフィルタする
ようにしたことを特徴とする方法。 - 【請求項24】 請求項13記載の方法において、前記
タグは制御タグまたはデータ・タグのどちらかにするこ
とができ、前記制御タグは該制御タグを生成する制御タ
グ・ステートメントのソフトウェア内のロケーションに
対応するタグ値をもつデータ・フィールドを含んでお
り、前記データ・タグはそれぞれの制御タグと関連づけ
られていて、該データ・タグが関連づけられている制御
タグにより識別されたイベントに関する情報を提供する
データ・フィールドをもっていることを特徴とする方
法。 - 【請求項25】 請求項13記載の方法において、前記
タグは、タスク作成、タスク削除、タスク・スワップ、
関数入口、および関数出口の少なくとも1つに対応する
アプリケーション・ソース・コード・タグ・ステートメ
ントによって生成され、該方法は前記ターゲット・シス
テムによって実行されたソース・コード・ロケーション
のレコードからタスクまたは関数ネスティング階層を判
別するステップをさらに含むことを特徴とする方法。 - 【請求項26】 請求項25記載の方法において、タス
クまたは関数ネスティング階層の前記判別するステップ
を使用して、前記分析の進行を制御するステップをさら
に含むことを特徴とする方法。 - 【請求項27】 請求項13記載の方法において、前記
タグは、タスク作成、タスク削除、タスク・スワップ、
関数入口、および関数出口の少なくとも1つに対応する
RTOSイベント・タグ・ステートメントによって生成
され、該方法は前記RTOSイベントのレコードからタ
スクまたは関数ネスティング階層を判別するステップを
さらに含むことを特徴とする方法。 - 【請求項28】 請求項27記載の方法において、タス
クまたは関数ネスティング階層の前記判別するステップ
を使用して、前記分析の進行を制御するステップをさら
に含むことを特徴とする方法。 - 【請求項29】 請求項27記載の方法において、前記
RTOSイベント・タグはタスク・パフォーマンス分析
を作り出すために使用されることを特徴とする方法。 - 【請求項30】 請求項13記載の方法において、前記
タグ・ステートメントは前記ソフトウェアのソース・コ
ードに挿入され、該方法は前記ソース・コードおよび挿
入されたタグ・ステートメントをコンパイルしてオブジ
ェクト・コードを得るステップと、該オブジェクト・コ
ードを前記ターゲット・システムで実行するステップと
をさらに含むことを特徴とする方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/526,709 US5748878A (en) | 1995-09-11 | 1995-09-11 | Method and apparatus for analyzing software executed in embedded systems |
| US08/526709 | 1995-09-11 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH09218800A true JPH09218800A (ja) | 1997-08-19 |
Family
ID=24098460
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP8240782A Pending JPH09218800A (ja) | 1995-09-11 | 1996-09-11 | 組込みシステム中で実行されるソフトウェアを分析するための方法および装置 |
Country Status (3)
| Country | Link |
|---|---|
| US (2) | US5748878A (ja) |
| EP (1) | EP0767430A3 (ja) |
| JP (1) | JPH09218800A (ja) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2010204934A (ja) * | 2009-03-03 | 2010-09-16 | Heartland Data Co | ソースコードトレーサ |
| JP2011145930A (ja) * | 2010-01-15 | 2011-07-28 | Heartland Data Co | 電子計測器 |
| JP2013157018A (ja) * | 2013-04-12 | 2013-08-15 | Heartland Data Co | ソースコードトレーサ |
| US9804944B2 (en) | 2013-08-09 | 2017-10-31 | Renesas Electronics Corporation | Data processing system |
| WO2025169561A1 (ja) * | 2024-02-05 | 2025-08-14 | 株式会社 東芝 | 開発支援装置 |
Families Citing this family (169)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7388092B2 (en) * | 1996-05-03 | 2008-06-17 | Applera Corporation | Oligonucleotides and analogs labeled with energy transfer dyes |
| US5896538A (en) * | 1996-11-26 | 1999-04-20 | International Business Machines Corporation | System and method for multi-phased performance profiling of single-processor and multi-processor systems |
| US5884080A (en) * | 1996-11-26 | 1999-03-16 | International Business Machines Corporation | System and method for instruction burst performance profiling for single-processor and multi-processor systems |
| US5903758A (en) * | 1997-02-24 | 1999-05-11 | Sun Microsystems, Inc. | Method and apparatus for auditing dynamically linked procedure calls |
| US6052748A (en) * | 1997-03-18 | 2000-04-18 | Edwin A. Suominen | Analog reconstruction of asynchronously sampled signals from a digital signal processor |
| US5991899A (en) * | 1997-03-21 | 1999-11-23 | Samsung Electronics Co., Ltd. | Method and apparatus for a real-time diagnostic tool using a non-intrusive trace technique |
| US5941995A (en) * | 1997-05-20 | 1999-08-24 | Hewlett-Packard Company | Reloading state analyzer |
| US5903759A (en) * | 1997-06-04 | 1999-05-11 | 3 Com Corporation | Software performance analysis using hardware analyzer |
| US5954826A (en) * | 1997-09-29 | 1999-09-21 | Sun Microsystems, Inc. | Method and apparatus for analyzing data |
| US6751789B1 (en) | 1997-12-12 | 2004-06-15 | International Business Machines Corporation | Method and system for periodic trace sampling for real-time generation of segments of call stack trees augmented with call stack position determination |
| US6546548B1 (en) | 1997-12-12 | 2003-04-08 | International Business Machines Corporation | Method and system for compensating for output overhead in trace data using initial calibration information |
| US6539339B1 (en) | 1997-12-12 | 2003-03-25 | International Business Machines Corporation | Method and system for maintaining thread-relative metrics for trace data adjusted for thread switches |
| US6560773B1 (en) | 1997-12-12 | 2003-05-06 | International Business Machines Corporation | Method and system for memory leak detection in an object-oriented environment during real-time trace processing |
| US6055492A (en) | 1997-12-12 | 2000-04-25 | International Business Machines Corporation | System and method for providing trace information data reduction |
| US6338159B1 (en) | 1997-12-12 | 2002-01-08 | International Business Machines Corporation | System and method for providing trace information |
| US6349406B1 (en) | 1997-12-12 | 2002-02-19 | International Business Machines Coporation | Method and system for compensating for instrumentation overhead in trace data by computing average minimum event times |
| US6507805B1 (en) | 1997-12-12 | 2003-01-14 | International Business Machines Corporation | Method and system for compensating for instrumentation overhead in trace data by detecting minimum event times |
| US6732357B1 (en) | 1997-12-12 | 2004-05-04 | International Business Machines Corporation | Determining and compensating for temporal overhead in trace record generation and processing |
| US6047390A (en) * | 1997-12-22 | 2000-04-04 | Motorola, Inc. | Multiple context software analysis |
| US6308270B1 (en) * | 1998-02-13 | 2001-10-23 | Schlumberger Technologies, Inc. | Validating and certifying execution of a software program with a smart card |
| US6311327B1 (en) * | 1998-03-02 | 2001-10-30 | Applied Microsystems Corp. | Method and apparatus for analyzing software in a language-independent manner |
| US5968188A (en) | 1998-03-10 | 1999-10-19 | Grammar Engine | System for providing real-time code coverage |
| US6507855B1 (en) * | 1998-06-25 | 2003-01-14 | Cisco Technology, Inc. | Method and apparatus for extracting data from files |
| US6536036B1 (en) | 1998-08-20 | 2003-03-18 | International Business Machines Corporation | Method and apparatus for managing code test coverage data |
| US6289503B1 (en) * | 1998-09-24 | 2001-09-11 | International Business Machines Corporation | System and method for trace verification |
| CA2255023C (en) * | 1998-11-30 | 2004-04-13 | Siu Chung Yuen | A method and system for monitoring the execution of hybrid source code |
| US7062456B1 (en) | 1999-02-09 | 2006-06-13 | The Chase Manhattan Bank | System and method for back office processing of banking transactions using electronic files |
| JP2000276381A (ja) * | 1999-03-23 | 2000-10-06 | Toshiba Corp | タスク実行時間の見積もり方法 |
| US7137105B2 (en) * | 1999-05-12 | 2006-11-14 | Wind River Systems, Inc. | Dynamic software code instrumentation method and system |
| US6397382B1 (en) | 1999-05-12 | 2002-05-28 | Wind River Systems, Inc. | Dynamic software code instrumentation with cache disabling feature |
| US6959431B1 (en) * | 1999-05-13 | 2005-10-25 | Compuware Corporation | System and method to measure and report on effectiveness of software program testing |
| US6622299B1 (en) * | 1999-07-06 | 2003-09-16 | International Business Machines Corporation | Computer system, program product and method for dynamically providing an indication to a programmer of the efficiency of a program that is being written |
| US6389370B1 (en) * | 1999-09-14 | 2002-05-14 | Hewlett-Packard Company | System and method for determining which objects in a set of objects should be processed |
| US6598012B1 (en) | 1999-10-07 | 2003-07-22 | International Business Machines Corporation | Method and system for compensating for output overhead in trace date using trace record information |
| US6671876B1 (en) * | 1999-10-28 | 2003-12-30 | Lucent Technologies Inc. | Monitoring of software operation for improving computer program performance |
| 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 |
| US6728955B1 (en) | 1999-11-05 | 2004-04-27 | International Business Machines Corporation | Processing events during profiling of an instrumented program |
| US6718485B1 (en) * | 1999-11-16 | 2004-04-06 | Parasoft Corporation | Software emulating hardware for analyzing memory references of a computer program |
| US6817011B1 (en) | 1999-12-14 | 2004-11-09 | International Business Machines Corporation | Memory allocation profiling to discover high frequency allocators |
| GB2357611B (en) * | 1999-12-21 | 2004-06-02 | Ibm | Electronic location tag |
| US6986128B2 (en) * | 2000-01-07 | 2006-01-10 | Sony Computer Entertainment Inc. | Multiple stage program recompiler and method |
| 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 |
| US7076400B2 (en) * | 2000-02-14 | 2006-07-11 | Nextnine Ltd. | Support network |
| US7409318B2 (en) * | 2000-02-14 | 2008-08-05 | Nextnine Ltd. | Support network |
| US6704770B1 (en) * | 2000-03-28 | 2004-03-09 | Intel Corporation | Method and apparatus for cut, copy, and paste between computer systems across a wireless network |
| US6779135B1 (en) * | 2000-05-03 | 2004-08-17 | International Business Machines Corporation | Interleaving based coverage models for concurrent and distributed software |
| US6988263B1 (en) * | 2000-07-10 | 2006-01-17 | International Business Machines Corporation | Apparatus and method for cataloging symbolic data for use in performance analysis of computer programs |
| US6931633B1 (en) * | 2000-08-01 | 2005-08-16 | National Instruments Corporation | System and method of evaluating the performance of an image processing algorithm |
| GB2366879B (en) * | 2000-09-16 | 2005-02-16 | Ibm | Tracing the execution path of a computer program |
| US6951010B2 (en) * | 2000-09-19 | 2005-09-27 | Fujitsu Limited | Program specification generating system |
| US7328211B2 (en) | 2000-09-21 | 2008-02-05 | Jpmorgan Chase Bank, N.A. | System and methods for improved linguistic pattern matching |
| US6968540B2 (en) | 2000-10-25 | 2005-11-22 | Opnet Technologies Inc. | Software instrumentation method and apparatus |
| US8255791B2 (en) | 2000-11-29 | 2012-08-28 | Dov Koren | Collaborative, flexible, interactive real-time displays |
| US8205149B2 (en) * | 2001-01-05 | 2012-06-19 | Microsoft Corporation | Enhanced find and replace for electronic documents |
| FR2819601B1 (fr) | 2001-01-16 | 2003-07-18 | Canon Kk | Procede et dispositif de partition de programme informatique |
| US6886049B2 (en) * | 2001-01-16 | 2005-04-26 | Sierra Wireless, Inc. | Multi-function interface for connectivity between a communication device and a host |
| US20020099736A1 (en) * | 2001-01-23 | 2002-07-25 | Neo-Core, L.L.C. | Method of storing a structured data document |
| US8234156B2 (en) * | 2001-06-28 | 2012-07-31 | Jpmorgan Chase Bank, N.A. | System and method for characterizing and selecting technology transition options |
| AU2002329611A1 (en) * | 2001-07-20 | 2003-03-03 | Altaworks Corporation | System and method for adaptive threshold determination for performance metrics |
| US7219034B2 (en) | 2001-09-13 | 2007-05-15 | Opnet Technologies, Inc. | System and methods for display of time-series data distribution |
| US20030074650A1 (en) * | 2001-10-17 | 2003-04-17 | Tankut Akgul | Debugger operating system for embedded systems |
| US7120901B2 (en) * | 2001-10-26 | 2006-10-10 | International Business Machines Corporation | Method and system for tracing and displaying execution of nested functions |
| US20030093716A1 (en) * | 2001-11-13 | 2003-05-15 | International Business Machines Corporation | Method and apparatus for collecting persistent coverage data across software versions |
| JP2003157185A (ja) * | 2001-11-19 | 2003-05-30 | Nec Corp | 計算機の動作の解析・表示装置とその解析・表示方法及びコンピュータプログラム |
| US6983455B2 (en) * | 2002-04-10 | 2006-01-03 | Sun Microsystems, Inc. | Mechanism for profiling computer code |
| US7024664B2 (en) * | 2002-04-22 | 2006-04-04 | Intel Corporation | Symbolic assembly language |
| US7987246B2 (en) | 2002-05-23 | 2011-07-26 | Jpmorgan Chase Bank | Method and system for client browser update |
| US6957325B1 (en) | 2002-07-01 | 2005-10-18 | Mindspeed Technologies, Inc. | System and method for detecting program hazards in processors with unprotected pipelines |
| US7792950B2 (en) * | 2002-09-26 | 2010-09-07 | International Business Machines Corporation | Coverage analysis of program code that accesses a database |
| US7254745B2 (en) * | 2002-10-03 | 2007-08-07 | International Business Machines Corporation | Diagnostic probe management in data processing systems |
| US20040083158A1 (en) * | 2002-10-09 | 2004-04-29 | Mark Addison | Systems and methods for distributing pricing data for complex derivative securities |
| US7143396B2 (en) * | 2002-11-06 | 2006-11-28 | Sun Microsystems, Inc. | System and method for measuring code segment performance |
| US20040103199A1 (en) * | 2002-11-22 | 2004-05-27 | Anthony Chao | Method and system for client browser update from a lite cache |
| US20040128446A1 (en) * | 2002-12-27 | 2004-07-01 | Carole Dulong | Value profiling with low overhead |
| US7401156B2 (en) * | 2003-02-03 | 2008-07-15 | Jp Morgan Chase Bank | Method using control interface to suspend software network environment running on network devices for loading and executing another software network environment |
| US7484087B2 (en) * | 2003-02-24 | 2009-01-27 | Jp Morgan Chase Bank | Systems, methods, and software for preventing redundant processing of transmissions sent to a remote host computer |
| US7178134B2 (en) * | 2003-04-24 | 2007-02-13 | International Business Machines Corporation | Method and apparatus for resolving memory allocation trace data in a computer system |
| US8141052B2 (en) * | 2003-05-09 | 2012-03-20 | Microsoft Corporation | Instrumenting software for enhanced diagnosability |
| US8732675B2 (en) * | 2003-06-23 | 2014-05-20 | Broadcom Corporation | Operational analysis system for a communication device |
| US7519952B2 (en) * | 2003-07-28 | 2009-04-14 | International Business Machines Corporation | Detecting an integrity constraint violation in a database by analyzing database schema, application and mapping and inserting a check into the database and application |
| WO2005015361A2 (en) | 2003-08-08 | 2005-02-17 | Jp Morgan Chase Bank | System for archive integrity management and related methods |
| US7305660B2 (en) * | 2003-08-29 | 2007-12-04 | International Business Machines Corporation | Method to generate a formatted trace for an embedded device |
| US20050065965A1 (en) * | 2003-09-19 | 2005-03-24 | Ziemann David M. | Navigation of tree data structures |
| US7178131B2 (en) * | 2003-09-29 | 2007-02-13 | International Business Machines Corporation | Inspecting the runtime behavior of a program while minimizing perturbation |
| US7395527B2 (en) | 2003-09-30 | 2008-07-01 | International Business Machines Corporation | Method and apparatus for counting instruction execution and data accesses |
| US8381037B2 (en) | 2003-10-09 | 2013-02-19 | International Business Machines Corporation | Method and system for autonomic execution path selection in an application |
| US7146473B1 (en) * | 2003-11-14 | 2006-12-05 | Sun Microsystems, Inc. | Mechanism for ring buffering in an arbitrary-action tracing framework |
| US7415705B2 (en) | 2004-01-14 | 2008-08-19 | International Business Machines Corporation | Autonomic method and apparatus for hardware assist for patching code |
| US7895382B2 (en) | 2004-01-14 | 2011-02-22 | International Business Machines Corporation | Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs |
| US7702767B2 (en) * | 2004-03-09 | 2010-04-20 | Jp Morgan Chase Bank | User connectivity process management system |
| CN1308855C (zh) * | 2004-03-18 | 2007-04-04 | 联想(北京)有限公司 | 在嵌入式系统中分配硬件地址的装置和方法 |
| US7480899B2 (en) * | 2004-03-22 | 2009-01-20 | International Business Machines Corporation | Method and apparatus for autonomic test case feedback using hardware assistance for code coverage |
| US7424720B2 (en) * | 2004-03-25 | 2008-09-09 | International Business Machines Corporation | Process and implementation for dynamically determining probe enablement using out of process correlating token |
| US7802145B1 (en) * | 2004-05-18 | 2010-09-21 | Cisco Technology, Inc. | Approach for facilitating analysis of computer software errors |
| US7765539B1 (en) | 2004-05-19 | 2010-07-27 | Nintendo Co., Ltd. | System and method for trans-compiling video games |
| US7665127B1 (en) | 2004-06-30 | 2010-02-16 | Jp Morgan Chase Bank | System and method for providing access to protected services |
| CN100353334C (zh) * | 2004-08-06 | 2007-12-05 | 华为技术有限公司 | 软件跟踪方法及其系统 |
| US7366974B2 (en) * | 2004-09-03 | 2008-04-29 | Jp Morgan Chase Bank | System and method for managing template attributes |
| US20060059210A1 (en) * | 2004-09-16 | 2006-03-16 | Macdonald Glynne | Generic database structure and related systems and methods for storing data independent of data type |
| US20060074897A1 (en) * | 2004-10-04 | 2006-04-06 | Fergusson Iain W | System and method for dynamic data masking |
| US20090132466A1 (en) * | 2004-10-13 | 2009-05-21 | Jp Morgan Chase Bank | System and method for archiving data |
| US20060085492A1 (en) * | 2004-10-14 | 2006-04-20 | Singh Arun K | System and method for modifying process navigation |
| US8185868B1 (en) | 2004-12-20 | 2012-05-22 | The Mathworks, Inc. | System and method for cell-based code editing and publishing |
| KR100575582B1 (ko) * | 2004-12-20 | 2006-05-03 | 한국전자통신연구원 | 분산 실시간 임베디드 소프트웨어를 위한 정적 실시간성분석 장치 및 그 방법 |
| GB0428365D0 (en) * | 2004-12-24 | 2005-02-02 | Ibm | Methods and apparatus for generating a parser and parsing a document |
| US20060161602A1 (en) * | 2005-01-18 | 2006-07-20 | Barrs John W | Object based access application programming interface for data versioning |
| US7565645B2 (en) * | 2005-01-18 | 2009-07-21 | Lenovo (Singapore) Pte Ltd. | Method and apparatus for marking code for data versioning |
| US7296123B2 (en) * | 2005-02-01 | 2007-11-13 | Delphi Technologies, Inc. | Electronic control unit analysis |
| US9152531B2 (en) * | 2005-02-18 | 2015-10-06 | Green Hills Sofware, Inc. | Post-compile instrumentation of object code for generating execution trace data |
| US8266608B2 (en) * | 2005-02-18 | 2012-09-11 | Green Hills Software, Inc. | Post-compile instrumentation of object code for generating execution trace data |
| US20060225051A1 (en) * | 2005-04-05 | 2006-10-05 | Cisco Technology, Inc. | Method and system for code coverage |
| US8438468B2 (en) * | 2005-04-15 | 2013-05-07 | International Business Machines Corporation | Annotation management |
| US7590892B2 (en) * | 2005-05-16 | 2009-09-15 | Texas Instruments Incorporated | Method and system of profiling real-time streaming channels |
| US7607047B2 (en) * | 2005-05-16 | 2009-10-20 | Texas Instruments Incorporated | Method and system of identifying overlays |
| WO2006129578A1 (en) * | 2005-05-30 | 2006-12-07 | Semiconductor Energy Laboratory Co., Ltd. | Semiconductor device and driving method thereof |
| US8572516B1 (en) | 2005-08-24 | 2013-10-29 | Jpmorgan Chase Bank, N.A. | System and method for controlling a screen saver |
| US8065606B1 (en) | 2005-09-16 | 2011-11-22 | Jpmorgan Chase Bank, N.A. | System and method for automating document generation |
| US20070067359A1 (en) * | 2005-09-21 | 2007-03-22 | Lenovo (Singapore) Pte. Ltd. | Centralized system for versioned data synchronization |
| US20070088986A1 (en) * | 2005-10-19 | 2007-04-19 | Honeywell International Inc. | Systems and methods for testing software code |
| US8181016B1 (en) | 2005-12-01 | 2012-05-15 | Jpmorgan Chase Bank, N.A. | Applications access re-certification system |
| US7913249B1 (en) | 2006-03-07 | 2011-03-22 | Jpmorgan Chase Bank, N.A. | Software installation checker |
| US7895565B1 (en) | 2006-03-15 | 2011-02-22 | Jp Morgan Chase Bank, N.A. | Integrated system and method for validating the functionality and performance of software applications |
| US7895579B2 (en) * | 2006-06-16 | 2011-02-22 | Microsoft Corporation | Automated method and system for collecting and reporting API performance profiles |
| US8413121B2 (en) * | 2006-07-17 | 2013-04-02 | Ca, Inc. | Method and system for storing trace events in a database table |
| US7917901B2 (en) * | 2006-08-07 | 2011-03-29 | International Business Machines Corporation | Maintainable dynamic instrumentation technique for changing versions of software |
| CN100401267C (zh) * | 2006-09-01 | 2008-07-09 | 上海大学 | 微处理器的片上动态跟踪方法 |
| US20080127102A1 (en) * | 2006-09-14 | 2008-05-29 | Glen J Anderson | Technique to visually present memory location and usage during code execution |
| US8104076B1 (en) | 2006-11-13 | 2012-01-24 | Jpmorgan Chase Bank, N.A. | Application access control system |
| US8762956B1 (en) * | 2007-01-31 | 2014-06-24 | The Mathworks, Inc. | Generating a report document from code |
| CN101441587B (zh) * | 2007-11-19 | 2011-05-18 | 辉达公司 | 用于自动分析gpu测试结果的方法和系统 |
| US20090132860A1 (en) * | 2007-11-21 | 2009-05-21 | Inventec Corporation | System and method for rapidly diagnosing bugs of system software |
| US8291399B2 (en) * | 2008-03-26 | 2012-10-16 | Avaya Inc. | Off-line program analysis and run-time instrumentation |
| JP2009259089A (ja) * | 2008-04-18 | 2009-11-05 | Nec Corp | プログラム実行経路追跡装置、プログラム実行経路追跡方法、及びプログラム |
| US20100009323A1 (en) * | 2008-07-08 | 2010-01-14 | Chuan-Lang Lin | Simulation Software System and Method of Implementing The Same |
| US20100218171A1 (en) * | 2009-02-26 | 2010-08-26 | Computer Measurement Laboratory, Inc. | Computer bus monitoring for the adaptive control of executing software processes |
| US8359584B2 (en) * | 2009-12-18 | 2013-01-22 | Microsoft Corporation | Debugging from a call graph |
| US20110246966A1 (en) * | 2010-04-06 | 2011-10-06 | Sony Computer Entertainment America Inc. | Embedding source files into program symbol files |
| US8561033B2 (en) * | 2010-07-30 | 2013-10-15 | International Business Machines Corporation | Selective branch-triggered trace generation apparatus and method |
| US9038177B1 (en) | 2010-11-30 | 2015-05-19 | Jpmorgan Chase Bank, N.A. | Method and system for implementing multi-level data fusion |
| US10891701B2 (en) | 2011-04-15 | 2021-01-12 | Rowan TELS Corp. | Method and system for evaluating intellectual property |
| US20120278244A1 (en) * | 2011-04-15 | 2012-11-01 | IP Street | Evaluating Intellectual Property |
| US9292588B1 (en) | 2011-07-20 | 2016-03-22 | Jpmorgan Chase Bank, N.A. | Safe storing data for disaster recovery |
| CN102508766B (zh) * | 2011-09-29 | 2014-12-17 | 中国航天科技集团公司第七一〇研究所 | 一种航天嵌入式c语言软件运行时错误的静态分析方法 |
| US8600915B2 (en) | 2011-12-19 | 2013-12-03 | Go Daddy Operating Company, LLC | Systems for monitoring computer resources |
| US8719196B2 (en) | 2011-12-19 | 2014-05-06 | Go Daddy Operating Company, LLC | Methods for monitoring computer resources using a first and second matrix, and a feature relationship tree |
| US9069899B2 (en) * | 2012-06-27 | 2015-06-30 | Microsoft Technology Licensing, Llc | Integrating diagnostic information in development environment |
| US8904412B2 (en) * | 2012-09-26 | 2014-12-02 | International Business Machines Corporation | Dynamic performance data collection in large computer servers |
| US9720655B1 (en) | 2013-02-01 | 2017-08-01 | Jpmorgan Chase Bank, N.A. | User interface event orchestration |
| US10002041B1 (en) | 2013-02-01 | 2018-06-19 | Jpmorgan Chase Bank, N.A. | System and method for maintaining the health of a machine |
| US9088459B1 (en) | 2013-02-22 | 2015-07-21 | Jpmorgan Chase Bank, N.A. | Breadth-first resource allocation system and methods |
| US10540373B1 (en) | 2013-03-04 | 2020-01-21 | Jpmorgan Chase Bank, N.A. | Clause library manager |
| US9146838B2 (en) * | 2013-06-03 | 2015-09-29 | The Mathworks, Inc. | Code and model coverage as a time series |
| US9619410B1 (en) | 2013-10-03 | 2017-04-11 | Jpmorgan Chase Bank, N.A. | Systems and methods for packet switching |
| US9542259B1 (en) | 2013-12-23 | 2017-01-10 | Jpmorgan Chase Bank, N.A. | Automated incident resolution system and method |
| US9868054B1 (en) | 2014-02-10 | 2018-01-16 | Jpmorgan Chase Bank, N.A. | Dynamic game deployment |
| CN106155897B (zh) * | 2015-04-16 | 2020-12-08 | 腾讯科技(深圳)有限公司 | 一种业务处理方法及装置 |
| US9594669B2 (en) * | 2015-04-30 | 2017-03-14 | International Business Machines Corporation | Debug management using a counter |
| EP3091437A1 (en) * | 2015-05-08 | 2016-11-09 | Robert Bosch Gmbh | Method and apparatus for monitoring a control flow of a computer program |
| US10003499B2 (en) | 2015-09-09 | 2018-06-19 | International Business Machines Corporation | Client-configured server class tracing to a configurable threshold |
| US10003677B2 (en) * | 2016-01-31 | 2018-06-19 | Nxp Usa, Inc. | Network application verification at a network processor |
| WO2017145300A1 (ja) * | 2016-02-24 | 2017-08-31 | 三菱電機株式会社 | テストケース生成装置及びテストケース生成プログラム |
| GB2552974B (en) | 2016-08-16 | 2020-11-04 | Imagination Tech Ltd | String logging in an embedded system |
| US10122743B2 (en) | 2016-10-24 | 2018-11-06 | Senrio Inc. | Methods and systems for detecting anomalous behavior of network-connected embedded devices |
| US20180173610A1 (en) * | 2016-12-19 | 2018-06-21 | Mediatek Inc. | Method for performing cared-zone code coverage evaluation with no source code modification |
| JP6708678B2 (ja) * | 2018-03-02 | 2020-06-10 | ファナック株式会社 | 数値制御装置 |
| US10853198B2 (en) | 2019-01-30 | 2020-12-01 | Bank Of America Corporation | System to restore a transformation state using blockchain technology |
| US10768907B2 (en) | 2019-01-30 | 2020-09-08 | Bank Of America Corporation | System for transformation prediction with code change analyzer and implementer |
| US10824635B2 (en) | 2019-01-30 | 2020-11-03 | Bank Of America Corporation | System for dynamic intelligent code change implementation |
Family Cites Families (31)
| 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 |
| 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 |
| CN1045655A (zh) * | 1988-11-23 | 1990-09-26 | 约翰弗兰克制造公司 | 系统自动诊断的内核测试接口和方法 |
| 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 |
| US5029170A (en) * | 1989-11-30 | 1991-07-02 | Hansen Robert G | Assembly language programming potential error detection scheme which recognizes incorrect symbolic or literal address constructs |
| 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 |
| IL100370A (en) * | 1990-12-24 | 1994-11-11 | Ball Corp | 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 |
| JPH04337843A (ja) * | 1991-05-15 | 1992-11-25 | Hitachi Ltd | プログラム動作表示方法 |
| US5321828A (en) * | 1991-06-07 | 1994-06-14 | Step Engineering | High speed microcomputer in-circuit emulator |
| 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 |
| 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 |
| US5259766A (en) * | 1991-12-13 | 1993-11-09 | Educational Testing Service | Method and system for interactive computer science testing, anaylsis and feedback |
| DE69432974T2 (de) * | 1993-05-10 | 2004-05-27 | Thinking Software, Inc., Cupertino | Verfahren und vorrichtung zur automatischen analyse eines zielprogramms |
| 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 |
-
1995
- 1995-09-11 US US08/526,709 patent/US5748878A/en not_active Expired - Fee Related
-
1996
- 1996-09-11 EP EP96114557A patent/EP0767430A3/en not_active Ceased
- 1996-09-11 JP JP8240782A patent/JPH09218800A/ja active Pending
-
1998
- 1998-03-02 US US09/035,308 patent/US6161200A/en not_active Expired - Lifetime
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2010204934A (ja) * | 2009-03-03 | 2010-09-16 | Heartland Data Co | ソースコードトレーサ |
| JP2011145930A (ja) * | 2010-01-15 | 2011-07-28 | Heartland Data Co | 電子計測器 |
| JP2013157018A (ja) * | 2013-04-12 | 2013-08-15 | Heartland Data Co | ソースコードトレーサ |
| US9804944B2 (en) | 2013-08-09 | 2017-10-31 | Renesas Electronics Corporation | Data processing system |
| WO2025169561A1 (ja) * | 2024-02-05 | 2025-08-14 | 株式会社 東芝 | 開発支援装置 |
| JP2025120610A (ja) * | 2024-02-05 | 2025-08-18 | 株式会社東芝 | 開発支援装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| EP0767430A2 (en) | 1997-04-09 |
| US5748878A (en) | 1998-05-05 |
| US6161200A (en) | 2000-12-12 |
| EP0767430A3 (en) | 1999-01-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH09218800A (ja) | 組込みシステム中で実行されるソフトウェアを分析するための方法および装置 | |
| US6658651B2 (en) | Method and apparatus for analyzing software in a language-independent manner | |
| US10996947B2 (en) | Diagnosing production applications | |
| KR100338223B1 (ko) | 데이터 처리 시스템 및 애플리케이션의 구조화된 프로파일링 방법 및 장치 | |
| US7721268B2 (en) | Method and system for a call stack capture | |
| US5265254A (en) | System of debugging software through use of code markers inserted into spaces in the source code during and after compilation | |
| US5737520A (en) | Method and apparatus for correlating logic analyzer state capture data with associated application data structures | |
| EP0567722B1 (en) | System for analyzing and debugging embedded software through dynamic and interactive use of code markers | |
| US8978017B2 (en) | Profiling operating context | |
| US6775826B1 (en) | System and method for replaying workload data in a data storage environment | |
| US8924912B2 (en) | Method of recording and replaying call frames for a test bench | |
| US8051409B1 (en) | Monitoring memory accesses for multiple computer processes | |
| US20150127991A1 (en) | Historical Software Diagnostics using Lightweight Process Snapshots | |
| US20130159977A1 (en) | Open kernel trace aggregation | |
| CN111756575A (zh) | 存储服务器的性能分析方法及装置、电子设备 | |
| KR20070121649A (ko) | 소프트웨어 프로그램의 성능분석 방법 및 장치 | |
| KR19990077480A (ko) | 데이터처리시스템및애플리케이션의구조화된프로파일링방법및장치 | |
| EP3921734A1 (en) | Using historic execution data to visualize tracepoints | |
| US5611044A (en) | System and method for cross-triggering a software logic analyzer and a hardware analyzer | |
| US7426660B2 (en) | Method, program, and storage medium for acquiring logs | |
| Xie et al. | An empirical study of java dynamic call graph extractors | |
| US8762783B2 (en) | Error identification | |
| US20060259826A1 (en) | Method and system of identifying overlays | |
| Oberhuber et al. | DETOP-an interactive debugger for PowerPC based multicomputers | |
| KR100428712B1 (ko) | 멀티 태스크 프로그램의 논스톱 디버깅을 위한트레이스포인트 설정 방법 |
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 |
|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20041104 |
|
| A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20041111 |
|
| A521 | Request for written amendment filed |
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 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050203 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20050510 |