(57)【特許請求の範囲】
【請求項１】
被試験装置から取込んだ取込みデータを取込みバッファに蓄積するロジック・アナライザにおいて、上記取込みバッファに蓄積された上記取込みデータをソフトウェアのソース・コード・ステートメントと相関させるロジック・アナライザ用の取込みサンプル識別システムであって、
上記ソース・コード・ステートメントのラインを表示する高レベル・データ用ウインドウの第１ビューア手段と、
上記取込みデータをディスアセンブリされたコードのラインとして表示する低レベル・データ用ウインドウの第２ビューア手段と、
上記ソース・コードのコンパイラが発生したデバッギング情報に応じて、ユーザが選択した上記ソース・コード・ステートメントを上記ディスアセンブリされたコードのアドレス範囲に対応させる相関手段と、
上記取込みバッファに蓄積された上記取込みデータを検索して、上記相関手段により対応させられた上記アドレス範囲内にある上記取込みデータの取込みサンプルを上記取込みバッファから見つける検索手段とを具え、
該検索手段により上記取込みサンプルが見つかると、上記検索手段が見つけた上記取込みサンプルを上記第２ビューア手段にて表示することを特徴とする取込みサンプル識別システム。
【請求項２】
上記相関手段は、ルックアップ・テーブルを有し、該ルックアップ・テーブルは、上記ソース・コード・ステートメントの場所を、対応する上記ディスアセンブリされたコードのアドレス範囲に相関させることを特徴とする請求項１の取込みサンプル識別システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般に、テスト及び測定システム、特に、測定機器が求めた取込みサンプルがソフトウェア・ソース・コード・ステートメントに対応することを判断するシステムに関する。
【０００２】
【従来の技術】
従来、技術者は、典型的には、低レベル（低級）言語であるアセンブリ言語により、テスト及び測定システム用の制御コードを書いていた。しかし、今日、開発期間を改善し、一層機能的で複雑なものを短期間に開発できるようにするため、技術者は、典型的には、Ｃ、Ｃ＋＋などの高レベル（高級）言語を用いて製品を開発している。コンパイラ／アセンブリ／リンカー・システムにより、高レベル言語を、特定のプロセッサで動作するマシン・コードに変換している。なお、このシステムは、高レベル（高級）ソース・コードに基づいたアセンブリ言語及び／又はマシン・コードを発生する。デバッギングする際、技術者は、低レベル（低級）マシン・コードで作業をしなければならない。典型的には、このマシン・コードは、デバッガーによりアセンブリ言語に変換されて、マシン・コードの理解を助ける。しかし、技術者は、アセンブリ言語でソフトウェアを書かず、また、技術者は、種々のソース・コード・ステートメントに対応するアセンブリ言語コードを発生するためにコンパイラが用いる方法に精通していないので、デバッギング中、システムの正確な動作を理解することは技術者にとって厄介であった。
【０００３】
従来技術によれば、ユーザは、取込みサンプルを選択し、対応するソース・コード・ステートメントを探す必要があった。また、かかる従来のシステムでは、実行順に次の又は前のソース・コード・ステートメントに対応する取込みサンプルを検索することもできる。しかし、従来技術においては、実行可能なコードを発生するのに用いるソース・コード・ファイルの任意のものからランダムにソース・コード・ステートメントの選択をイネーブルでき、取込みバッファ／ディスアセンブリ・ファイル内の一致するサンプルを探せるシステムが存在しなかった。
【０００４】
現在の測定機器、例えば、ロジック・アナライザは、その機器の動作を管理する拡張ソフトウェア・サポート・システムを含む複雑なシステムである。これらサポート・システムは、デバッギング・システムを含んでおり、これにより、技術者は、測定機器を用いて、埋め込まれたシステムを実時間で特徴付け、デバッギングできる。ここでは、取込んだデータは、（マイクロプロセッサ・システムの場合）このシステムの動作期間中に生じるバス処理などを含んでいる。
【０００５】
【発明が解決しようとする課題】
従来技術によれば、システムをデバッギングする技術者がライン毎に取り込みサンプルをトレースしなければならない場合に、デバッギング・システムを用いた。例えば、システムが取り込んだ特定のデータ・サンプルに技術者が関心を持ち、対応するソース・コードがワークステーションのデバッギング・ウインドウに表示された際、技術者は、この特定データ・サンプルに対応するのがどのソース・コード・ステートメントか判らなかった。これは、データ・サンプルが、典型的には、制御ソフトウェアの動作特性及び流れに応じて、多くの異なるモジュールの任意の１つの結果であるためであった。よって、技術者がデバッガーにより特定のソース・コード・ラインを観察する際、技術者は、取込みバッファ内に取り込まれた対応データ・サンプルがどこにあるかに関してある種の熟練した推量を行わなければならず、また、多くのサンプルをトレースしなければならなかった。所望のサンプルが実際に取り込みバッファ内に現れて、この推量が正しく、ソース・ステートメントの状態が適切に一致することが期待された。これには、取込みバッファ内の多数のサンプルを調べる必要があった。非常に多くの取込みサンプルを調べないために、特定の取込みサンプルがデバッガーに達しないと、この調査は、技術者にとってしばしば面倒であった。よって、取込みバッファ内にサンプルが少しでも存在しても、その後での探索が保証されなかった。
【０００６】
したがって、本発明の目的は、デバッギング用の改良されたシステムの提供にある。
本発明の他の目的は、２つのデータ・セットの間でカーソルを相関させる改良されたシステムの提供にある。
本発明の更に他の目的は、高レベル（高級）データにおいてカーソルが移動した際に、低レベル（低級）データのカーソルが対応するステートメントに移動するデバッギング用の改良されたシステムの提供にある。
【０００７】
【課題を解決するための手段】
本発明によれば、ソース・コード・ステートメントに対応した取込みサンプルを識別するシステムを設けて、高レベル（高級）データ（ソース・コード）を低レベル（低級）取込みデータにリンクさせる。高レベル・データ及び低レベル・データの一方内のカーソルは、他方のビュー（即ち、ビューア：観察手段）でのカーソルが移動した際に対応する位置に移動する。
【０００８】
本発明は、被試験装置から取込んだ取込みデータを取込みバッファに蓄積するロジック・アナライザにおいて、上記取込みバッファに蓄積された上記取込みデータをソフトウェアのソース・コード・ステートメントと相関させるロジック・アナライザ用の取込みサンプル識別システムであって；ソース・コード・ステートメントのラインを表示する高レベル・データ用ウインドウの第１ビューア手段（１４）と；  上記取込みデータをディスアセンブリされたコードのラインとして表示する低レベル・データ用ウインドウの第２ビューア手段（１２）と；ソース・コードのコンパイラが発生したデバッギング情報に応じて、ユーザが選択したソース・コード・ステートメントをディスアセンブリされたコードのアドレス範囲に対応させる相関手段（１５、４８）と；取込みバッファに蓄積された取込みデータを検索して、相関手段により対応させられたアドレス範囲内にある取込みデータの取込みサンプルを取込みバッファから見つける検索手段（４８、２６〜３０、３１〜４２）とを具え；この検索手段により取込みサンプルが見つかると、検索手段が見つけた取込みサンプルを第２ビューア手段にて表示することを特徴とする。
本発明の要旨は、特許請求の範囲で指摘してある。しかし、本発明の構成及び方法と共に、利点及び目的は、添付図を参照した以下の説明から理解できよう。なお、図において、同じ参照番号は同じ素子を表す。
【０００９】
【発明の実施の形態】
本発明の好適実施例によるシステムは、低レベル取込みデータ・ビューアにリンクした高レベル・ソース・コード・データ・ビューアを具えており、一方のデータ・ビューアにおけるカーソルの移動及び検索コマンドの発生が、他方のデータ・ビューアにおけるカーソルの対応移動となり、検索場所が見つかった場合に、対応する場所を指示する。例えば、ここで用いる高レベル（高級）データは、適切にはソース・コードであり、低レベル（低級）データは、取込んだデータ、オブジェクト・コード、アセンブリ・コードなどである。なお、ビューア及びビューは、観察手段の意味である。
【００１０】
図１は、本発明を用いるシステム１０の構成を示すブロック図である。低レベル・データ・ビューア１２は、アセンブリ言語ビューア（オブジェクト・コードをディスアセンブリして動作する機能も有する）でもよく、高レベル・データ・ビューアは、ソース・コード・ビューア（ソース・ビューア）１４又はデバッガーでもよい。本発明により、これら低レベル・データ・ビューア１２及びソース・ビューア１４は、通信チャンネル１６によりリンクしている。通信チャンネル１６は、高レベル・ビューア及び低レベル・ビューアの間で相対カーソル・コマンドを通過させて、カーソルを適切な位置に移動させるように、他のビューア（又はデバッガー）に指示する。コンピュータ、ワークステーションなどが、本発明によるこれらビューアの機能及び他の処理を実行する。
【００１１】
このシステムは、例えば、コンパイラが発生したデバッギング情報を用いる。このデバッギング情報は、典型的には、コンパイラが発生したオブジェクト・ファイル内に蓄積される。このデバッギング情報は、オブジェクト・ファイル内のステートメントに対応するソース・コード・ファイル名、ライン、また、しばしばコラム・データを含んでいる。本発明によれば、ソース・コード・ファイルがオープンした際、対応するオブジェクト・ファイルもオープンし、読み出される。また、例えば、ルックアップ・テーブルで構成できる相関データ１５が発生されて、ソース・コード・ステートメントをアドレスにマップする（割り当てる）。代わりに、オブジェクト・ファイルをオープンするのではなく、別のプログラムが、オブジェクト・ファイルからのデバッギング情報を先ず抽出して、別のシンボル・ファイルに蓄積してもよい。この場合、オブジェクト・ファイルを直接読出す代わりに、ソース・コード・ビューアがシンボル・ファイルを読み出す。
【００１２】
図２は、オブジェクト・ファイル又はシンボル・ファイルがオープンした際に本発明を実施するための実行ステップの流れ図を示す。ステップ２０で、オブジェクト・ファイル又はシンボル・ファイルがオープンすると、このオブジェクト・ファイル又はシンボル・ファイルに存在するデバッギング情報を用いて、相関データを作り（ステップ２２）、実行可能な／オブジェクト・ファイル内のアドレス範囲を、ソース・ファイル名、ライン番号、そして、しばしばソース・ファイル内の特定のコラムに関連づける。ステップ２４にて、低レベル・データ・ビューア（即ち、低レベル・ビュー）から初期アドレス値を得る。このアドレスと、ステップ２２にて作られた相関データとを用いて、対応するソース・ファイル名及びライン番号を判断し（ステップ２６）、そのソース・ファイルをオープンする（ステップ２８）。高レベル・ビューアがそのソース・ファイルの内容を表示する。ステップ３０にて、高レベル・ビューアの表示を調整して、オブジェクト・ファイルの特定ラインに応じて、相関データが指示したソース・ファイルの特定ラインを観察可能にし、そのラインが適切に強調される。後述する如く、相関データは、低レベル・ビューにおける対応ステートメントを高レベル・ビューにおいて探す際に用いるために、維持される。なお、低レベル・ビューの特定ライン（カーソル位置）を高レベル・ビューの特定ラインに対応させるか、又は、その逆であるかは相対的であるので、本発明は、これら両方を含む。
【００１３】
ポインタがソース・コード・ステートメント上にあるとき、例えば、マウス・ボタンをクリックして、ソース・ファイル内のそのソース・コード・ステートメントをユーザが選択すると、対応するアドレス範囲が相関データから決まる。検索コマンドを導出し、それを用いて、現在のカーソル場所の直前又は直後の場所から、特定範囲内のアドレス値の取込みサンプルに対して、低レベル・データ・バッファの検索を開始する。かかるサンプルが見つかると、低レベル・ビューア内の取込みバッファ・ウインドウが再配置されて、適切なサンプルを表示し、カーソルがそのサンプルに位置決めされる。
【００１４】
好適実施例における検索規則は、次のようになる。
検索すべきソース・コード・ステートメント位置が、現在のカーソル位置よりもソース・ファイルにおいて一層下ならば、検索は、前方向に開始する。
検索すべきソース・コード・ステートメントが、現在のカーソル位置よりも、そのファイルにおいて前ならば、データが見つかるまで、検索を後方に開始する。
【００１５】
本発明の別の特徴は、例えば、マウス４９（図４を参照）の別のボタンを単に選択することにより、検索方向を逆にできることである。よって、ソース・ステートメントがファイル内で現在の位置よりも遠くにあると、左マウス・ボタン５１によりソース・ステートメントを選択することにより、前方検索となる。また、右マウス・ボタン５３によりソース・ステートメントを選択すると、同じソース・コード・ライン位置に対して逆方向検索になる。
【００１６】
本発明は、上述の規則及び検索特徴を用いるが、別の規則を選択し、適切に用いてもよい。
【００１７】
このシステムは、現在表示されたソース・ファイルからラインを選択することにユーザを制限しない。ユーザは、リストから任意のソース・ファイルを選択し、表示できるし、ファイルからソース・コード・ラインを選択してもよい。利用可能なソース・ファイルのリスト上のファイルは、これを用いてユーザが特定したオブジェクト・ファイルを作成できるものである。典型的には、これらファイル名は、オブジェクト又はシンボル・ファイル内のデバッギング情報から決まる。
【００１８】
図３は、本発明により、ソース・ステートメントに対応するステートメントを探すステップの流れ図である。まず、ステップ３１にて、新たなカーソル位置（探すべき低レベル・データに対応するソース・ステートメントの位置）を得る。次に判断ステップ３２において、新たな位置が前の位置よりもファイル内において一層下（先）かを判断する。その位置が更に下ならば、更に実行すべき検索の方向を前方に設定する（ステップ３３）。そうでなければ、検索方向を後方に設定する（ステップ３４）。次に、選択したソース・コード・ラインに対応したアドレス範囲を、以前に発生した相関データから求める（ステップ３５）。次に、相関データから求めた範囲内で最初に生じる対応するアドレスの検索を取込みバッファ内で開始する（ステップ３６）。判断ステップ３８にてそのアドレスが見つかると、低レベル・データ・ビューでカーソルを移動させる（ステップ４０）。取込みバッファの終わりに達するまでに対応するアドレス範囲が見つからないと、例えば、その結果を対話ボックスに表示することにより、その状態を指示する（ステップ４２）。
【００１９】
任意の選択したソース・コード・ステートメントに対して、取込みバッファ内には、対応サンプルがないか、１個の対応サンプルか、又は２個以上のサンプルがある。これは、取込みデータの所定のセット（例えば、機器の実行期間中に得た取込みデータ・セット）において、特定のソース・コード・ステートメントが１回又は複数回実行されたか実行されないという結果になる状態が存在するためである。当業者に理解できるように、ソース・コード・ファイル内におけるステートメントの位置に応じて、ソース・コード・ステートメントを順番に実行する必要がない。又は、ソース・ステートメントが分離したファイル内にある場合、種々のステートメントの実行順序は、幾分かは予測できない。さらに、多数回実行されたループ内にソース・ファイル・ステートメントがあるので、一致したサンプルが多数回生じるかもしれない。よって、上述した検索方向の規則が仮定に基づいており、検索方向が正しいという保証がないか、又は取込みバッファ内に検索対象が依然存在しているという保証がないことが理解できよう。
【００２０】
特定実施例においては、ロジック・アナライザ及び被試験装置と共に本発明を用いている。図４は、本発明を用いる際に利用される典型的な構成のブロック図である。被試験装置（ＤＵＴ）４４を測定機器（例えば、ロジック・アナライザ、エミュレータなど）４６に接続し、この測定器４６をワークステーション４８と相互接続する。ワークステーション４８は、測定機器からのラン・タイム・データ（実行データ：例えば、理解しやすくするために技術者によりディスアセンブリされたデータ）を表示したり、その上、測定機器を動作させる高レベル・ソース・コードを含んでいる。リンク５０を介してワークステーション４８及び測定機器４６を接続する。このリンク５０は、測定機器及びワークステーションが近い場合、ケーブルで構成してもよい。ある状態において、測定機器は研究室にセットアップされており、ワークステーションは技術者のオフィスにあり、リンク５０はネットワークで構成してもよい。この場合、測定機器は、ワークステーションにより遠隔制御され、データに対してポーリングされる。例えば、図７に示すように、ワークステーション及び測定機器を同じユニット内で適切に接続されてもよい。この場合、汎用コンピュータ４８’がワークステーションであり、ビルトイン（組み込み）型又はプラグイン型の単一測定機器モジュール（又は複数のモジュール）４６’を設ける。
【００２１】
これとは別に、図５に示すように、測定機器及び被試験装置からの取込みデータを、測定機器の実時間実行期間中に捕獲して、テスト・データ５２としてセーブしてもよい。そして、技術者は、セーブしたテスト・データをある別な時間に観察して、他の技術者が利用できるように、研究室、測定機器及び被試験機器を解放できる。
【００２２】
図６は、ワークステーション４８に表示したウインドウの場合のビューを示す。ここで、ウインドウ５４は、測定機器４６が観測するシステムの高レベル「ｃ」ソース・コード・ステートメントで構成されている。ウインドウ５６は、測定機器が取り込んだ低レベルのディスアセンブリされたオブジェクト・コードで構成されている。ソース・ウインドウ５４において、ファイル「ｄｅｍｏ．ｃ」のライン４６の部分「ｉ＜ＮＵＭ＿ＳＴＡＴＥＳ；」５８が強調されている。技術者が左マウス・ボタンをクリックしてウインドウ５６内での対応するステートメントの検索を開始する際に、この表示が生じる。その結果、ウインドウ５６内で探された対応アセンブリ・コードは「ＭＯＶＥＱ  ＃０８，Ｄ０」であり、点線６０で囲んだライン１２０９ように、強調される。
【００２３】
ここで示した例は、高レベル・ソース・コードに対応するアセンブリ又は低レベル・ステートメントに対する検索であるが、代わりに、この検索を逆な方法で行ってもよい。すなわち、低レベル・データ内の選択されたステートメントを用いて、高レベル・データ内の対応するステートメントを検索してもよい。ルックアップ・テーブル（例えば、実在するテーブルを異なるインデックスで用いる）で構成してもよい逆相関を用いて、低レベル・アドレスを高レベル・ソース・ステートメントに相関させる。例えば、取込みバッファは、トレース・バッファでもよく、ここで参照した取込みデータは、前もって取り込まれ、ファイルにセーブされたデータで適切に構成してもよい。
【００２４】
図示した実施例は、高レベル対低レベルの相関を行うために、相関データとしてルックアップ・テーブルを適切に用いたが、本発明はこの方法及び構成に制限されないことが理解できよう。例えば、ルックアップ・テーブルの代わりに、このシステムは、相関がとられる度に、オブジェクト・ファイルからデバッギング情報を読み出して、高レベル・データ選択に対応するアドレス範囲を導出するように実現できる。他の形式のデータ構造を適切に用いて相関を実現できることも、当業者には理解できよう。
【００２５】
したがって、本発明が提供する改良されたシステムは、例えば、高レベル及び低レベルのソース・データを用いて、被試験機器の実時間で取り込んだテスト・データに対して、高レベル・ビュー及び低レベル・ビューの相関を行える。このシステムは、いずれかのビューにおいて、ランダムに（次又は前に対して反対側というように）ステートメントを選択でき、交互のビューにて、前方向又は後方向に検索をして、他のビューから対応ステートメントを探すことができる。そして、データ又はステートメントを同時に１項目ずつ調べることなく、テスト技術者は、ソース・コード・ステートメントと、それに対応する低レベル・ステートメントとを一層高速に観察できる。
【００２６】
本発明によりシステムのユーザが解決できる典型的な問題は、メモリ欠陥問題の原因の検出、タイミング及び性能問題の分析、その他の関連した異常事態である。これらは、システムの最高速度動作期間中にのみ現れるか、システムの長時間の動作後のみに現れる問題である。
【００２７】
本発明の好適実施例を図示し説明したが、本発明の要旨を逸脱することなく、種々の変形及び変更が可能であることが当業者には明らかであろう。かかる変更及び変形は、特許請求の範囲内に含まれるものである。
【００２８】
【発明の効果】
上述の如く、本発明によれば、高レベル・データ及び低レベル・データの一方のビューにおいてカーソルが移動した際に、他方のビューのカーソルをそれに対応して移動できるので、デバッギングが容易になる。
【図面の簡単な説明】
【図１】本発明により、ソース・コード・ビューア、デバッガーなどと共に用いるシステムのブロック図である。
【図２】オブジェクト・コード・ファイルをオープンした際に、本発明が実行するステップを説明する流れ図である。
【図３】本発明による検索概念を説明する実行ステップの流れ図である。
【図４】本発明を用いる典型的な組み合わせのブロック図である。
【図５】本発明を用いる別の動作環境のブロック図である。
【図６】取込んだデータに対応する高レベル・ソース・コード及びアセンブリ・コード情報を示すサンプル取込みウインドウを示す図である。
【図７】図４の典型的な組み合わせの別の実施例のブロック図である。
【符号の説明】
１０  システム
１２  低レベル・データ・ビューア
１４  ソース・ビューア
１５  相関データ
４４  被試験装置
４６  測定機器
４８  ワークステーション
４９  マウス
【図１】
0003982912.tif 000002
【図２】
0003982912.tif 000003
【図３】
0003982912.tif 000004
【図４】
0003982912.tif 000005
【図５】
0003982912.tif 000006
【図６】
0003982912.tif 000007
【図７】
0003982912.tif 000008