(57)【要約】      （修正有）【課題】プログラムのデバッグをより効率的に行なうことができるソースコードトレーサを実現する。【解決手段】プログラム方式の電子情報処理装置であるターゲットデバイス３０と、そのプログラムであるソースコードをコンパイルし、コンパイル時にデバッグ行を挿入するコンピュータ７と、ターゲットデバイスのアドレスバス、データバス、またはインストラクションバスからデータを選択的に収集し記憶するデータ収集器１０と、データ収集器から収集データを外部のコンピュータに伝送する通信路６と、を備える。特に、デバッグ行は、デバッグ行のソースコード上の位置情報を含むデバッグ情報を、予定のアドレス向けにデバッグデータとして出力する。この際、通過した時刻情報も出力してよい。また、上記データ収集器１０は、設定した少なくとも１つのアドレスに一致する場合に、外部バスからデータを選択的に収集し記憶する。【選択図】図２
2010204934.tif 000002
【特許請求の範囲】
【請求項１】
プログラム方式の電子情報処理装置であるターゲットデバイスと、
前記ターゲットデバイスのプログラムであるソースコードをコンパイルし、そのコンパイル時にデバッグ行を挿入するコンピュータ（以下、第１コンピュータ）と、
前記ターゲットデバイスのアドレスバス、データバス、またはコントロールバスからデータを選択的に収集し記憶するデータ収集器と、
上記データ収集器から収集データを外部のコンピュータ（以下、第２コンピュータ）に伝送する通信路と、を備え、
上記デバッグ行は、デバッグに用いデバッグ行のソースコード上の位置情報を含むデバッグ情報を、前記ターゲットデバイスのアドレスバス上の予め決められたアドレス向けの上記データバス上のデバッグデータとして出力する内容のものであることを特徴とするソースコードトレーサ。
【請求項２】
上記デバッグ行は、上記デバッグ行を通過した時刻情報を前記ターゲットデバイスまたは更に含むデバッグ情報を、上記デバッグデータとして出力する内容のものであることを特徴とする請求項１に記載のソースコードトレーサ。
【請求項３】
上記データ収集器は、前記ターゲットデバイスのアドレスバスの信号が予め決められた少なくとも１つのアドレスに一致する場合に、データバス、またはコントロールバスからデータを選択的に収集し記憶するものであることを特徴とする請求項１あるいは２のいずれか１つに記載のソースコードトレーサ。
【請求項４】
上記データ収集器は、上記収集データを圧縮して記憶するものであることを特徴とする請求項１から３のいずれか１つに記載のソースコードトレーサ。
【請求項５】
第２コンピュータは、予定されたトレース情報と上記デバッグデータとを比較して、上記ソースコードのデバッグに関する情報を出力するものであることを特徴とする請求項１から４のいずれか１つに記載のソースコードトレーサ。
【請求項６】
上記ターゲットデバイスは、予め決められた書込み手続きの必要な半導体メモリを備え、
上記半導体メモリに割り当てられたアドレス宛てに、上記の書き込み手続きを含まない書込みコードを出力するデバッグ行を用いることを特徴とする請求項１から５のいずれか１つに記載のソースコードトレーサ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プログラム方式の電子情報処理装置に用いるプログラムのデバック作業を容易にするためのソースコードトレーサに関している。
【背景技術】
【０００２】
一般に、プログラム方式の電子情報処理装置用にプログラムを作成する場合、プログラムのデバッグ作業に多くの時間が費やされている。プログラム作成作業を効率化するためにデバッグ作業時間の短縮が求められており、デバック作業を容易にするデバッガ等が用いられる場合が多い。
【０００３】
一般に、デバッガでは、プログラムに複数のブレークポイントを設けて、それぞれのブレークポイントの時点でその実行を一時的に中断し、それぞれの時点で記憶情報のダンプを行い、それぞれの時点での記憶情報を追跡することでプログラムの動作を検証することが行なわれる。
【０００４】
また、上記の電磁情報処理装置の動作を中断せずにその動作を観測してデバッグを行なうトレーサとして、例えば以下のような開示がある。
【０００５】
特許文献１（実開平５−１７７３８号公報）には、簡易トレーサが開示されている。これは、ＣＰＵの信号をＣＰＵ信号取出し回路で取り出し、比較基準入力設定器に予め設定しておいたデータと、取り出したデータ（アドレス／データ）を比較回路に入力して比較し、条件が一致したときにラッチトリガ決定回路に信号を送信し、ラッチトリガ決定回路で条件が一致した場合にラッチ回路に信号を送信し、ラッチ回路からの信号を受けた表示回路はその時点のデータ（ＣＰＵ内部状態）を表示する構成とすることで、簡単な回路で、ＣＰＵの内部状態をリアルタイムに表示、又はトレースを残すことができるようにしたものである。
【０００６】
また、特許文献２（特開平６−３４８５４０号公報）には、Ｃ言語の様な高級言語で記述されたプログラムをデバッグする時にトレーサを使用して、デバッグの効率を向上させるトレース回路とトレース方法が開示されている。これは、局所変数のベースポインタをラッチする回路とプログラム実行アドレスをラッチする回路とを有し、データアクセス時に前記ベースポインタラッチの内容と前記プログラム実行アドレスラッチの内容をアクセスしたアドレスやデータやステータスと共にトレースメモリに書き込み、トレースメモリに記録されたアドレスとベースポインタの値から局所変数の変数オフセットを計算し、この変数オフセットとトレースメモリ中のプログラム実行アドレスを使って、デバッグ対象プログラムのデバッグ情報テーブルを検索し、トレースメモリに記録されたデータアクセス内容を局所変数と対応づけるものである。
【０００７】
また、特許文献３（特開平８−３３５１７７号公報）には、命令キャッシュを動作させたままプログラムトレースを行うプロセッサ動作観察方法及び装置が開示されている。ここで用いるＣＰＵは、命令キャッシュに命令アドレスで指定した命令が存在するか否かにかかわらず、その命令アドレスを、メモリアドレスレジスタを介してＣＰＵの外部バスに出力するものである。この外部バスは、アドレスバス、データバス、制御バスから成るもので、プログラムのデバッグ時はこの外部バスにプロセッサ動作観察装置を接続し、命令キャッシュがヒットする場合でも、ＣＰＵがアクセスした命令のあった外部のメモリのアドレスやバスステータスをプロセッサ動作観察装置のトレースメモリに格納する。このトレースメモリを読み出して、アドレスとバスステータスの内容を解析することにより、ＣＰＵが実行した命令の実行過程を追跡するものである。
【０００８】
また、特許文献４（特開平１０−２１１１８号公報）には、デバッグシステムが開示されている。これは、コンピュータ（ＰＣ）のアドレス設定部により指定アドレスを設定し、リード要求部から、インタフェースケーブルを介してデバッグ対象装置に、メモリリード要求を送出する。デバッグ対象装置では、メモリリード部がメモリリード要求に応答してメモリの指定されたアドレスの内容をダンプして、インタフェースケーブルを介してＰＣ１に返送する。ＰＣのアドレス設定部により指定アドレスを設定し、データ設定部によりライトデータを設定して、ライト要求部から、インタフェースケーブルを介してデバッグ対象装置に、メモリライト要求を送出する。デバッグ対象装置は、メモリライト部２３がメモリライト要求に応答してメモリの指定されたアドレスに、ライトデータを書き込むものである。
【０００９】
また、特許文献５（特開２００１−１７５５１０号公報）には、繰返して発生する同一のデータを記録しないようにし、デバッグや障害解析に必要なデータのみを確実に収集するようにして効率よくトレースバッファを使用するトレースデータ圧縮方法およびトレースデータ圧縮方式が開示されている。これは、ＬＳＩ内部の複数の状態値を周期的の記録するトレーサにおいて、トレースデータを状態値の変化する頻度の高い第一のフィールドと状態値の変化する頻度の低い第二のフィールドとに分割し、最新の登録トレースデータの第二のフィールドのデータと受信したトレースデータの第二のフィールドのデータとを比較して一致する場合には、前記受信したトレースデータの第二のフィールドのデータを登録しない。受信したトレースデータを登録するときには、前記第一のフィールドおよび前記第二のフィールドの各データにそれぞれ識別子を付して登録するものである。
【００１０】
また、特許文献６（特開２００１−３３１３４４号公報）には、システムプログラムの履歴情報により障害発生の経緯を知らせ、障害原因の解析がスムーズに行える組み込みシステムの障害情報トレーサ装置が開示されている。この障害情報トレーサ装置は、実行形式のプログラム、履歴情報を編成する実行履歴収集部、履歴情報を記憶させるトレースメモリ、その記憶内容を被試験装置にダンプさせるデバッグモニタから構成されるものである。また、被試験装置は、履歴情報を導入するデバッガソフト、履歴情報がファイルされたトレースメモリダンプ結果ファイル、プログラムのソースファイル群、障害解析のための該当箇所を出力するトレース情報解析プログラムから構成されるものである。
【００１１】
また、特許文献７（米国特許第６１６１２１６号明細書）には、ソースコードのデバッガを用いてソースコードをデバッグする方法と装置が記載されている。この場合、スクリプトジェネレータがソースコードの命令を受け取るようにする。スクリプトジェネレータは、ソースコード命令を読み取り、実行ブロックまたは制御境界を規定する命令の型に基づいて、トレースポイントの仕様を満たすデバッグスクリプトを自動的に生成する。このデバッグスクリプトをソースコードデバッガに引き渡す。
【００１２】
特許文献１から６に記載の発明は、積極的にデバッグ用の情報を出力させるようにプログラムを改変するものではない点において本発明とは異なっている。また、特許文献７に記載の発明では、デバッグスクリプトを生成するスクリプトジェネレータを用いている点において、本発明とは異なっている。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】実開平５−１７７３８号公報
【特許文献２】特開平６−３４８５４０号公報
【特許文献３】特開平８−３３５１７７号公報
【特許文献４】特開平１０−２１１１８号公報
【特許文献５】特開２００１−１７５５１０号公報
【特許文献６】特開２００１−３３１３４４号公報
【特許文献７】米国特許第６１６１２１６号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１４】
プログラムのデバッグをより効率的に行なうことができるようにし、また、発生頻度の少ない実行時エラーについてもデバッグし易いようにする。
【課題を解決するための手段】
【００１５】
本発明のソースコードトレーサは、プログラム方式の電子情報処理装置であるターゲットデバイスと、前記ターゲットデバイスのプログラムであるソースコードをコンパイルし、そのコンパイル時にデバッグ行を挿入するコンピュータ（以下、第１コンピュータ）と、前記ターゲットデバイスのアドレスバス、データバス、またはコントロールバスからデータを選択的に収集し記憶するデータ収集器と、上記データ収集器から収集データを外部のコンピュータ（以下、第２コンピュータ）に伝送する通信路と、を備えるものである。
特に、上記デバッグ行は、デバッグに用いデバッグ行のソースコード上の位置情報を含むデバッグ情報を、上記ターゲットデバイスのアドレスバス上の予め決められたアドレス向けの上記データバス上のデバッグデータとして出力する内容を備えるものである。
【００１６】
また、上記デバッグ行は、上記デバッグ行を通過した時刻情報を更に含むデバッグ情報を、上記デバッグデータとして出力する内容を備えるものである。
【００１７】
また、上記データ収集器は、前記ターゲットデバイスのアドレスバスの信号が予め決められた少なくとも１つのアドレスに一致する場合に、データバス、またはコントロールバスからデータを選択的に収集し記憶するものである。
【００１８】
また、上記データ収集器は、上記収集データを圧縮して記憶するものである。
【００１９】
上記の第２コンピュータは、予定されたトレース情報と上記デバッグデータとを比較して、上記ソースコードのデバッグに関する情報を出力するものである。
【００２０】
上記ターゲットデバイスが、予め決められた書込み手続きの必要な半導体メモリ、例えば、EEPROMやフラッシュメモリを備える場合には、上記半導体メモリに割り当てられたアドレス宛てに、上記の書き込み手続きを含まない書込みコードを用いて擬似書込みを行なうデバッグ行を用いることで、デバッグデータを出力するアドレス数を増大させることができる。
【発明の効果】
【００２１】
プログラム処理を中断することなくデバッグ作業を進めることができるようになるため、処理を中断する従来例に比べて、より実際の動作に近い状態でデバッグ作業を行うことができるようになる。
【００２２】
また、デバッグ行を残したままでも、実際のプログラム処理を何らの支障も伴うことなく行なうことができるので、検証したプログラムを実際の処理に適用することができるようになる。
【００２３】
さらに、上記の様に、プログラム処理速度を低下させることなくデバッグ作業を進めることができるため、従来に比べて多数のデバッグ行をソースコードに挿入することができるようになり、デバッグ作業をより容易にすることができる。
【図面の簡単な説明】
【００２４】
【図１】本発明のソースコードトレーサを適用するターゲットデバイスであるプログラム方式の電子情報処理装置の例を示す図である。
【図２】本発明のソースコードトレーサをターゲットデバイスに適用する場合の構成例を示す図である。
【図３】データ収集器の構成例を示す図である。
【図４】本発明のソースコードトレーサを用いたテスト支援システム内での処理の流れを示す図である。
【図５】本発明のソースコードトレーサを用いた解析の流れを示す図である。
【図６】従来のデバッガを用いてデバッグする場合のフローチャートを示す図である。
【図７】本発明のソースコードトレーサを用いてデバッグする場合のフローチャートを示す図である。
【発明を実施するための最良の形態】
【００２５】
以下に、この発明の実施の形態を図面に基づいて詳細に説明する。以下の説明においては、同じ機能あるいは類似の機能をもった装置に、特別な理由がない場合には、同じ符号を用いるものとする。
【実施例１】
【００２６】
図１は、本発明のソースコードトレーサを適用するターゲットデバイス３０であり、プログラム方式の電子情報処理装置である。このターゲットデバイス３０は、演算装置（CPU）３１とメモリ３２と入出力回路３３とは、コントロールバス３４、アドレスバス３５およびデータバス３６で接続されている。また入出力回路３３からは、各種インターフェイスに向かう拡張バス３７が設けられている。
【００２７】
また、図２は、本発明のソースコードトレーサ１００をターゲットデバイス３０に適用する場合の構成例を示している。本発明のソースコードトレーサ１００は、データ収集器１０と、これに接続したコンピュータ（ＰＣ）７を備えている。データ収集器１０は、中継器２０を通じてターゲットデバイス３０のコントロールバス３４、アドレスバス３５およびデータバス３６に接続している。また、拡張バス３７の１つとＰＣ７が接続している。ここで、拡張バス３７に接続するコンピュータは、他のコンピュータでもよい。
【００２８】
図３は、データ収集器１０の構成例を示す図である。中継器２０からのデータは、選択器１に送られ、アドレスバスを監視して、予め指定したアドレス宛てに送られたデータバス上のデータを取り込む。ここで、予め複数のアドレスを指定して、それぞれのアドレスをそれぞれの目的毎に使い分けてもよい。
データ処理器２では、取得したデータを解析し、整理し、必要に応じて圧縮してメモリ４に記憶する。この圧縮には、２次元デジタルデータを圧縮するため既によく知られた圧縮方法を用いることができる。最も簡単な方法として、同じデータが続く場合に繰り返しの頻度を添える圧縮方法があるが、この方法を用いてもよい。
この部分では、データ処理量が大きくなるため、例えばマルチコア等の高速デジタル信号処理器を用いることが望ましい。メモリ４に記憶されたデータは、入出力（Ｉ／Ｏ）器３、例えばＵＳＢ（ユニバーサルシリアルバス）トランシーバを用いてＵＳＢ６を通じて図２のＰＣ７送る。ＲＯＭ（読み出し専用メモリ）５は、電気的に書き換え可能なメモリであってもよく、また、入出力（Ｉ／Ｏ）器３のためのプログラムを記憶するデバイスであるが、ＵＳＢトランシーバに内蔵されている場合は、外部に設ける必要は無い。
【００２９】
次に、本発明のソースコードトレーサ１００を用いたデバッグ作業について、図４、図５を参照して説明する。
図４は、本発明のソースコードトレーサを用いたテスト支援システム内での処理の流れを示す図である。図４（Ａ）では、ソースコードを解析し、関数の出入りや分岐処理の箇所にプログラムの実行に影響がないログコードを自動挿入する。図４（Ｂ）では、ログコードの実行を検知して記録する。図４（Ｃ）で、記録したデータを解析し、ソースコードやテストパターンと照合し、プログラム実行状況や検証結果をグラフィカルに表現する。また、図４（Ｄ）で、ログコードの組み込み箇所を変更して再実行する。このように処理することにより、評価結果をオンラインで保存し、バージョン毎に管理することが可能になる。また、検証結果を帳票出力することで、製品の検査証明のドキュメントとして利用できるようにもなる。
また、図５は、本発明のソースコードトレーサを用いた解析の流れを示す図である。図５（Ａ）では、実デバイス上でプログラムを実行する。図５（Ｂ）では、メモリトレーサが、予めプログラムに組み込んでおいたログコードが実行されたことを検知し出力された情報を収集してＰＣへ送付する。図５（Ｃ）では、潜在する問題を素早く検出し分析することができるようにするために、プログラムの実行状況を視覚的に捕らえるように表示する。図５（Ｄ）では、プログラムに問題が見つかれば、修正し再度実行する。図５（Ｅ）では、問題が無くなれば完了するが、その際、使用したデータはそのままプログラムの品質を保証するドキュメントとなる。
【００３０】
（１）ソースコード埋め込み
（図４（Ａ））各種ターゲットのソースコードに対して、デバッグ作業以外では通常ターゲットデバイスが使用しない外部バスに出力するためのアドレスにデータを書き込むコード（以下、トレースコード）を埋め込む。
トレースコードの埋め込みに当たって、トレースコードは、アドレスとデータの組み合わせにより、ソースコードのどの箇所に埋め込まれたかを認識できるように埋め込む。例えばＣ言語の場合、ポイントとなる情報は、一関数の先頭と最後、分岐命令の直後、変数の情報などである。
この埋め込み作業は、ＰＣ７上で、専用アプリケーションを用いて実行する。他の独立したコンピュータ上で行ってもよいことは明らかである。
【００３１】
この方法の特長として、使用しない外部バスのアドレスに対しての書き込みであることから、ＣＰＵへの負荷を少なくしてトレースコードを実行できる点を挙げることができる。又、トレースコードの出力では、アドレスとデータの組み合わせでデバッグ行の位置を判別できるようにすることで、デバッグ行を埋め込める場所が従来の場合に比べて格段に増加する。
【００３２】
また、上記ターゲットデバイスが、フラッシュメモリやＥＥＰＲＯＭなどの、書き込みの際に予め決められた書込み手続きの必要な半導体メモリを備える場合には、その半導体メモリに実際には書き込みを行なわないが書き込みを行なうように振る舞う疑似書き込みを行なうようにすることで、上記半導体メモリに割り当てたアドレスを、上記トレースコードを出力するためにも用いることができる。この疑似書き込みを行なうには、上記予め決められた書込み手続きから外れた書込み手続きを次の様に行なう。
【００３３】
書込み手続きは、例えば、ＪＥＤＥＣ（半導体技術協会）標準型コマンド互換方式のフラッシュメモリの場合は、予め決められたアドレスに、コマンドを発行することで行なわれる。このコマンドは、データバス上の２進データである。例えば１６ビットのデータバスの場合、？を１６進表示で０からＦまでの任意の値として、
？？２９、？？３０、？？８０、？？９０、？？Ａ０、？？Ｂ０、？？Ｆ０を、
アドレス＝（？？？？？？Ａ４、？？？？？？５４）、のデータとして、
書き込むことで書込み手続きが完了する。
【００３４】
このメモリのいかなるアドレス値に対しても、この書き込みが行なわれないようにするためには、上記のデータが発生しないようにすればよい事は明らかである。例えば、１６ビットデータから上記の値を除いた集合を用いて、上記トレースコードの出力を行なえばよい。必要に応じてデータ変換を行なう。特に簡単な例としては、例えば、？？００、を用いてアスキーデータとして出力することで、実際には書き込みを行なわない疑似書き込みとすることができる。
【００３５】
本発明の埋め込みは、従来のＵＡＲＴ（Universal Asynchronous Receiver Transmitter）等の通信バスヘ情報を出力する方法に比べて、ＣＰＵへの負荷を軽減でき、また、ＧＰＩＯ（汎用ポート）へ出力する方法に比べて、埋め込める情報を増やすことができる、また、内部メモリヘ保存する方法では、エミュレーター等の接続が必須で、使用場面が限られるが、本発明では、実機を用いてデバッグすることができる。
【００３６】
（２）  コンパイル・動作確認
トレースコードを埋め込んだソースコードをコンパイルし、各種ターゲットに転送し、上記のコンパイルされたトレースコードをターゲットデバイスで走らせ、そのシーケンスの確認を実際の動作に即して行う（図５（Ａ））。
【００３７】
（３）  出力されるコードの抽出とＰＣへの転送（図４（Ｂ）、図５（Ｂ））
データ収集器１０は、トレースコードでターゲットから吐き出されるデータを取り込み、ＰＣ７への転送を行う。又、取り込み開始や取り込み停止などの操作はＰＣ７上で専用アプリケーションを用いて行う。また、ターゲットから吐き出されるデータをすべて取り込む必要がない場合は、ＰＣ７からデータ収集器１０に取り込むべきアドレスを設定して選択する。このデータ収集器１０は、高速でデータ処理を行なう必要があることから、マルチコアの汎用マイクロプロセッサやゲートアレイを用いて構成した専用のデジタル信号処理器（ＤＳＰ）などを使うことが望ましい。
また、データ収集器１０は、ＣＰＵの外部バスに出力される波形を取り込む際に、情報が出力されるアドレスのデータを、ターゲットデバイスの、あるいはソースコードトレーサのタイムスタンプを付加してメモリ４に蓄える。―定量メモリにデータが蓄積された時に順次、解析装置（ＰＣ７）へとデータを転送する。あるいは、ＰＣ７からの要求に従って転送する。
収集する情報としては、例えば、（１）プログラムの、どの箇所が、いつ実行されたか、また、（２）プログラムの、どの部分で指定された変数に設定された値か、等が分かる情報である。
【００３８】
（４）出力データの解析（図４（Ｃ））
次に、データ収集器１０がＰＣ７へ転送したデータ（以下、ログデータ）を、ＰＣ７上で専用アプリケーシヨンで解析する。この解析は、他のコンピュータでも行なうことができることは明らかであるが、この実施例では、なるべく少ない装置で処理する構成としている。
この解析については、図５（Ｃ）に示す様に、プログラムの実行状況を視覚的に捕らえ、潜在する問題を素早く検出・分析できるように表示することが望ましい。
ここでの解析により、例えば次の事項について明らかにすることができる。
（１）プログラムの実行順番を確認する事により、設計フロ―との相違を確認でき、異常個所の発見と正常に動作していることの証明が可能となる。
（２）プログラムの実行時のタイムスタンプ情報から、それぞれのデバッグ行間で処理に掛かった時間や、その処理が実行される間隔などのプログラムのリアルタイム性が、異常動作または正常動作の結果であるかどうかの判別が可能となる。
【００３９】
（図４（Ｄ））上記の解析結果からソースコードヘのフードバックを繰り返し行なうことで、プログラム作成が完了する。つまり、ユーザーは、解析結果を自分の設計思想と照らし合わせて分析し、異常個所の修正などを行いソースコードを変更し、上記（１）〜（４）を実行して設計思想との整合性を高めていく。また、図５（Ｅ）に示す様に、問題が無くなれば、使用したデータをそのままプログラムの品質を保証するドキュメントとすることもできる。
【実施例２】
【００４０】
プログラムを開発するに当たっては、デバッグ作業が必要になるが、そのフローチャートを、従来の場合については図６に、本発明のソースコードトレーサを用いて行なう場合については図７に示す。
【００４１】
図６においては、デバッグしようとするプログラムＣ１を、Ｃ２で機能ごとに分解し、Ｃ３でそれぞれの機能の分類の中で各モジュールに分割する。Ｃ２０でこの機能ごとの分解に沿って機能テスト仕様書が、また、Ｃ２１でこの各モジュールへの分割を反映したモジュールテスト仕様書が作られる。例えばモジュールＡについては、Ｃ４で関数毎に分割する。例えば関数Ａでは、Ｃ５で関数を設計する。この関数の設計では、データ構造や制御構造の決定も行なう。Ｃ６でこの設計をもとにソースコードを作成する。Ｃ７でこのソースコードの検証を行ない、Ｃ８で要求仕様を満たすまでソースコードをデバッグする。この結果については、Ｃ２２で単体テスト結果レポートにまとめられる。各モジュールが要求仕様を満たす場合は、次に、Ｃ９で各モジュールを結合した状態での結合テストが行なわれ、Ｃ２３の結合テスト結果レポートにまとめられる。Ｃ１０で結合テスト基準に合格した場合は、Ｃ１１で各機能を合わせた総合テストが行なわれ、その結果は、Ｃ２４の総合テスト結果レポートにまとめられる。また、合わせて、Ｃ２５で、ソフト変更検証レポートが発行される。これは、プログラムを変更した後の検証結果についての報告である。Ｃ２２で総合テスト基準に合格した場合は、Ｃ１３でプログラムの開発が完了する。
【００４２】
また、図７においては、デバッグしようとするプログラムＰ１を、Ｐ２で機能ごとに分解し、Ｐ３でそれぞれの機能の分類の中で各モジュールに分割する。Ｐ２０でこの機能ごとの分解に沿って機能テスト仕様書が作られる。例えばモジュールＡについては、Ｐ４で関数毎に分割する。例えば関数Ａでは、Ｐ５で関数を設計する。この関数の設計では、データ構造や制御構造の決定も行なう。Ｐ６でこの設計をもとにソースコードを作成する。次に、Ｐ７で本発明の特徴の一つであるトレースコードの埋め込みを行なう。この埋め込みに沿って、Ｐ２１でモジュールテスト仕様書が作られる。トレースコードの埋め込まれたソースコードは、Ｐ８で統合される。動作検証においては、必ずしも全てのモジュールや全ての機能部分を揃える必要はなく、動作可能となったものから検証作業を行なうこともできる。Ｐ９で上記の統合されたソースコードが実行されると、各トレースコードが予定のアドレスに出力されるので、これらを本発明のソースコードトレーサで収集し、分類することで、上記の単体テスト、結合テスト、あるいは総合テストを同時に行なった場合と等価な結果を得ることができる。また、Ｐ２２で単体テスト結果レポート、Ｐ２３で結合テスト結果レポート、Ｐ２４で総合テスト結果レポートを得ることができる。また、プログラムを変更した場合は、その検証結果についてソフト変更検証レポートが発行される。
【００４３】
このように、本発明のソースコードトレーサを用いることによって、検証作業を一括で行なうことができ、しかも実際に用いる状態で検証作業を行なうことができるので、デバッグ作業が効率的になり、より容易に検証を行なうことができるようになる。
【産業上の利用可能性】
【００４４】
中継器２０とＣＰＵの外部メモリバスとの接続には、専用のフレキシブルプリント基板（ＦＰＣ：Flexible Printed Circuits）で半田付けして接続することで、あるいはテスト用のソケットを設けてそれを通じて接続することでインピーダンスの低下を抑制して電気的に接続することができる。高速の外部メモリバスで無い場合は、ＣＰＵと基板の接続にソケットを用い、そのソケットに配線引き出し用下駄履き状ソケットを用いることもできる。また、電気光学結晶を用いて光学的にデジタル信号を抽出することも可能である。
【００４５】
ソースコードに挿入するデバッグ行のコメント部分に、所定の書式で、別のデバッグ行からの所要時間などの設計目標値を追記しておくと、この目標値と実際に収集したデータとを比較してレポートする機能を設けることで、デバッグ作業をより効率化できる。この機能を発展させて、ソースコードにおいて、実行コードにならないコメント部分に、設計段階で、各種の設計目標値を設計者が追記しておくことで、この目標値と実際のデータとを比較することができる。この機能を活用することで自動テスト判定システムが実現できる。
【００４６】
また、シリアルデータをパラレルデータに変換することは容易であることはよく知られている。これによって、テストコードの出力先として、パラレル構成の外部バスの場合だけでなく、シリアル構成の外部バスの場合にも本発明を容易に適用できることが分かる。
【符号の説明】
【００４７】
１  選択器
２  データ処理器
３  入出力（Ｉ／Ｏ）器
４  メモリ
５  ＲＯＭ（読み出し専用メモリ）
６  ＵＳＢ（ユニバーサルシリアルバス）
７  コンピュータ（ＰＣ）
８  拡張バス
１０  データ収集器
２０  中継器
３０  ターゲットデバイス
３１  演算装置（CPU）
３２  メモリ
３３  入出力回路
３４  コントロールバス
３５  アドレスバス
３６  データバス
３７  拡張バス
１００  ソースコードトレーサ
【図１】
2010204934.tif 000003
【図２】
2010204934.tif 000004
【図３】
2010204934.tif 000005
【図４】
2010204934.tif 000006
【図５】
2010204934.tif 000007
【図６】
2010204934.tif 000008
【図７】
2010204934.tif 000009