(57)【要約】【課題】カバレッジ測定精度の高いデバッガを提供する。【解決手段】本発明のデバッガは、シンボル−アドレス変換テーブル読込部と、アドレス−行番号変換テーブル読込部と、シンボル−アドレス変換テーブルに基づいて分岐命令の検索アドレス範囲を確定する分岐命令第１検索部と、アドレス−行番号変換テーブル読込部に基づいて分岐命令の検索アドレスを確定する分岐命令第２検索部と、分岐命令をトラップ命令に置換し、トラップ管理テーブルで置換した分岐命令を管理するトラップ命令埋込部と、トラップ命令管理テーブルで管理されている分岐命令を通過したかどうかを判定する通過状態判定部と、トラップ管理テーブルとシンボル−アドレス変換テーブルに基づいてカバレッジ測定を行う網羅状態編集部とを備える。【選択図】図１
2012088793.tif 000002
【特許請求の範囲】
【請求項１】
シンボル−アドレス変換テーブルとアドレス−行番号変換テーブルを含むロードモジュールを解析するデバッガであって、
前記シンボル−アドレス変換テーブルを読み込むシンボル−アドレス変換テーブル読込部と、ここで、前記シンボル−アドレス変換テーブルは、前記ロードモジュールに含まれる各シンボルに対する、シンボル名、シンボルの開始アドレス、シンボルのサイズ及びタイプ情報を含み、
前記アドレス−行番号変換テーブルを読み込むアドレス−行番号変換テーブル読込部と、ここで、前記アドレス−行番号変換テーブルは、アドレス、前記ロードモジュールに対応するソースコードの行番号及びタイプ情報を含み、
前記シンボルに対応する前記シンボルーアドレス変換テーブルの前記タイプ情報を参照して、前記シンボルが命令コードである場合を特定し、前記シンボルが命令コードである場合には、前記シンボルに対応する前記シンボル−アドレス変換テーブルの前記シンボルの開始アドレスと、前記シンボルに対応する前記シンボル−アドレス変換テーブルの前記シンボルのサイズに基づいて、分岐命令の検索アドレス範囲を確定する分岐命令第１検索部と、
前記確定した検索アドレス範囲に対して、前記アドレス−行番号変換テーブルの前記アドレスと、前記アドレス−行番号変換テーブルの前記タイプ情報を参照して、前記アドレスが命令コードである場合には、前記アドレス−行番号変換テーブルの前記アドレスを分岐命令の検索アドレスとして確定する分岐命令第２検索部と、
前記確定した分岐命令の前記検索アドレスを参照して、前記検索アドレスの命令コードが、分岐命令である場合には、トラップ命令に置き換えるトラップ命令埋込部と
を備えるデバッガ。
【請求項２】
請求項１に記載のデバッガであって、
前記デバッガは、更にトラップ管理テーブルを備え、ここで、前記トラップ管理テーブルは、前記分岐命令に対する、前記分岐命令のアドレス、分岐命令形式及び通過状態情報を含み、
前記トラップ命令埋込部は、前記トラップ命令に置換した分岐命令と、前記トラップ命令に置換した分岐命令のアドレスを、それぞれ前記トラップ管理テーブルの前記分岐命令形式及び前記アドレスに格納し、
前記トラップ管理テーブルで管理されている分岐命令を通過したかどうかを判定し、前記分岐命令を通過した場合には、前記分岐命令に対応する前記トラップ管理テーブルの前記通過状態情報を、通過済に書き換える通過状態判定部と、
前記ロードモジュールのデバッグ終了後に、前記トラップ管理テーブルと前記シンボル−アドレス変換テーブルを参照して、カバレッジ測定を行う網羅状態編集部と
を更に備えるデバッガ。
【請求項３】
シンボル−アドレス変換テーブルとアドレス−行番号変換テーブルを含むロードモジュールを解析するデバッガであって、
シンボル−アドレス変換テーブル読込部が、前記シンボル−アドレス変換テーブルを読み込むステップと、ここで、前記シンボル−アドレス変換テーブルは、前記ロードモジュールに含まれる各シンボルに対する、シンボル名、シンボルの開始アドレス、シンボルのサイズ及びタイプ情報を含み、
アドレス−行番号変換テーブル読込部が、前記アドレス−行番号変換テーブルを読み込むステップと、ここで、前記アドレス−行番号変換テーブルは、アドレス、前記ロードモジュールに対応するソースコードの行番号及びタイプ情報を含み、
分岐命令第１検索部が、前記シンボルに対応する前記シンボルーアドレス変換テーブルの前記タイプ情報を参照するステップと、
分岐命令第１検索部が、前記シンボルが命令コードである場合には、前記シンボルに対応する前記シンボル−アドレス変換テーブルの前記シンボルの開始アドレスと、前記シンボルに対応する前記シンボル−アドレス変換テーブルの前記シンボルのサイズに基づいて、分岐命令の検索アドレス範囲を確定するステップと、
分岐命令第２検索部が、前記確定した検索アドレス範囲に対して、前記アドレス−行番号変換テーブルの前記アドレスと、前記アドレス−行番号変換テーブルの前記タイプ情報を参照して、前記アドレスが命令コードである場合には、前記アドレス−行番号変換テーブルの前記アドレスを分岐命令の検索アドレスとして確定するステップと、
トラップ命令埋込部が、前記確定した分岐命令の前記検索アドレスを参照するステップと、
トラップ命令埋込部が、前記検索アドレスの命令コードが、分岐命令である場合には、トラップ命令に置き換えるステップと
を含むデバッガ制御方法。
【請求項４】
請求項３に記載のデバッガ制御方法であって、
前記デバッガは、更にトラップ管理テーブルを備え、ここで、前記トラップ管理テーブルは、前記分岐命令に対する、前記分岐命令のアドレス、分岐命令形式及び通過状態情報を含み、
前記トラップ命令埋込部が、前記トラップ命令に置換した分岐命令と、前記トラップ命令に置換した分岐命令のアドレスを、それぞれ前記トラップ管理テーブルの前記分岐命令形式及び前記アドレスに格納するステップと、
通過状態判定部が、前記トラップ管理テーブルで管理されている分岐命令を通過したかどうかを判定するステップと、
通過状態判定部が、前記分岐命令を通過した場合には、前記分岐命令に対応する前記トラップ管理テーブルの前記通過状態情報を、通過済に書き換えるステップと、
網羅状態編集部が、前記ロードモジュールのデバッグ終了後に、前記トラップ管理テーブルと前記とシンボル−アドレス変換テーブルに基づいて、カバレッジ測定を行うステップと
を更に含むデバッガ制御方法。
【請求項５】
請求項３又は４に記載のデバッガ制御方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム開発ツールに関し、特にデバッガに関する。
【背景技術】
【０００２】
近年、システムに求められる機能は増加傾向にあり、それに伴ってマイクロコンピュータ等の半導体集積回路は機能が複雑になってきている。そのため、半導体集積回路を制御するためのプログラム開発の負荷が大きくなり、制御プログラムを効率良く開発するために、高級プログラミング言語を使用することが主流になってきている。コーディングしたプログラムを試験する際に利用するデバッガにおいても、デバッグ効率の向上と共に、プログラムの信頼性を担保するため、高級プログラミング言語によるプログラムのソース行単位でカバレッジ測定精度を向上させることが求められている。
【０００３】
特開昭６３−２４４２５（特許文献１）には、ロードモジュールのシンボル変換テーブルを参照して、テスト網羅状態を検出するテスト網羅状態検出方式が記載されている。この発明は、シンボル名、開始アドレス、サイズ及びタイプを含むシンボル変換テーブルを備え、タイプを参照して、シンボルが命令コードであるかどうかを判定し、命令コードであれば、開始アドレス、サイズから、分岐命令の検索範囲を決定している。シンボル変換テーブルのすべてのエントリに対して、分岐命令を検索し、分岐命令が見つかった場合には、トラップ命令に置換すると共に、分岐命令と、分岐命令のアドレスをトラップ管理テーブルに保持する。ロードモジュールを実行時に、このトラップ管理テーブルを利用して、分岐状態の網羅状態を算出している。
【０００４】
特許文献１の発明では、命令コードベースで分岐命令を検索している。ロードモジュールには、コンパイラ・リンカを使用して、命令コードを生成したときに、命令コード領域内において、命令コードと命令コードの間にコンパイラが生成する不変の値（データ）が存在する場合がある。このような不変の値（データ）は、コンパイラ・リンカが、ソースコードの記載とは別に命令コード領域内に直定数値を確保することによって作成されている。命令コードベースの網羅状態の算出では、このような領域を分岐命令として誤検出する場合があり、正確なカバレッジ測定ができない課題があった。
【０００５】
正確なカバレッジ測定ができない場合の例について説明する。図８（ａ）〜（ｃ）は、コンパイラ・リンカが、Ｃ言語によるソースプログラムの記載とは別に命令コード領域内に、分岐アドレステーブル又は直定数値を確保する場合の例である。
【０００６】
図８（ａ）は、間接参照のための分岐アドレステーブルを命令コードの間に生成した例である。ソースプログラム１０１ａのｓｗｉｔｃｈ文のｃａｓｅ  Ａでは、変数ｘｘが条件Ａと一致すれば、関数ａ（）を呼び出して実行する。同様に、ｓｗｉｔｃｈ文のｃａｓｅ  Ｂでは、変数ｘｘが条件Ｂと一致すれば、関数ｂ（）を呼び出して実行する。ソースプログラム１０１ａに対応するロードモジュール１０２ａでは、命令コード０１と命令コード０２の間に関数ａ（）と関数ｂ（）への分岐アドレス領域が確保され、リンカにより関数ａ（）、関数ｂ（）のアドレスが確定すると、分岐アドレス領域に分岐アドレスが設定される。変数ｘｘとの比較条件が増えれば、分岐アドレス領域も更に確保される。
【０００７】
図８（ｂ）は、自動変数の初期化のコードをソースプログラム１０１ｂに記載した場合の例である。ソースプログラム１０１ｂの構造体変数ａを０で初期化している。ソースプログラム１０１ｂに対応するロードモジュール１０２ｂでは、命令コード０３と命令コード０４の間に構造体変数ａの初期化定数値である０が設定される。
【０００８】
図８（ｃ）は、関数ｆｕｎｃを呼び出す命令と戻りアドレスの間に、コンパイラが必要なデータ領域を確保した場合の例である。関数ｆｕｎｃで使用される直定数値が、データ領域内に置かれる場合がある。
【０００９】
図８（ａ）〜（ｃ）のような場合で、ロードモジュールが生成された場合には、命令コード領域内にコンパイラが自動生成している上記の直定数値等を分岐命令と誤認識する場合や、コンパイラが自動生成している上記の直定数値等の領域との境界における命令を、正しく認識できない場合がある。そのため、シンボルベースで分岐命令を検索してトラップ命令の埋め込みを行うと、正確なカバレッジ測定ができない場合がある。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開昭６３−２４４２５
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明の目的は、カバレッジ測定精度の高いデバッガを提供することにある。
【課題を解決するための手段】
【００１２】
本発明のデバッガは、シンボル−アドレス変換テーブル読込部と、アドレス−行番号変換テーブル読込部と、シンボル−アドレス変換テーブルに基づいて分岐命令の検索アドレス範囲を確定する分岐命令第１検索部と、アドレス−行番号変換テーブル読込部に基づいて分岐命令の検索アドレスを確定する分岐命令第２検索部と、分岐命令をトラップ命令に置換し、トラップ管理テーブルで置換した分岐命令を管理するトラップ命令埋込部と、トラップ命令管理テーブルで管理されている分岐命令を通過したかどうかを判定する通過状態判定部と、トラップ管理テーブルとシンボル−アドレス変換テーブルに基づいてカバレッジ測定を行う網羅状態編集部とを備える。
【００１３】
本発明のデバッガ制御方法は、シンボル−アドレス変換テーブル読込部が、シンボル−アドレス変換テーブルを読み込むステップと、アドレス−行番号変換テーブル読込部が、アドレス−行番号変換テーブルを読み込むステップと、分岐命令第１検索部が、シンボルーアドレス変換テーブルのタイプ情報を参照するステップと、分岐命令第１検索部が、シンボルが命令コードである場合には、シンボル−アドレス変換テーブルのアドレスと、シンボル−アドレス変換テーブルのサイズに基づいて、分岐命令の検索アドレス範囲を確定するステップと、分岐命令第２検索部が、分岐命令の検索アドレス範囲を確定するステップによって確定した検索アドレス範囲に対して、アドレス−行番号変換テーブルのアドレスと、アドレス−行番号変換テーブルのタイプを参照するステップと、分岐命令第２検索部が、アドレスが命令コードである場合には、アドレス−行番号変換テーブルのアドレスを分岐命令の検索アドレスとするステップと、トラップ命令埋込部が、アドレス−行番号変換テーブルのアドレスを分岐命令の検索アドレスとするステップによって確定した分岐命令の検索アドレスを参照するステップと、トラップ命令埋込部が、検索アドレスの命令コードが、分岐命令である場合には、トラップ命令に置き換えるステップと、トラップ命令埋込部が、置換した分岐命令と、置換した分岐命令のアドレスを、それぞれトラップ管理テーブルの分岐命令形式及びアドレスに格納するステップと、通過状態判定部が、トラップ管理テーブルで管理されている分岐命令を通過したかどうかを判定するステップと、通過状態判定部が、分岐命令を通過した場合には、分岐命令に対応するトラップ管理テーブルのエントリの通過状態情報を、通過済に書き換えるステップと、網羅状態編集部が、ロードモジュールのデバッグ終了後に、トラップ管理テーブルとシンボル−アドレス変換テーブルを参照して、カバレッジ測定を行うステップとを含む。
【発明の効果】
【００１４】
本発明によれば、カバレッジ測定精度の高いデバッガを提供することができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、本発明の実施形態におけるデバッガ１０のブロック図である。
【図２】図２は、本発明の実施形態におけるシンボル−アドレス変換テーブル２の例である。
【図３】図３は、本発明の実施形態におけるアドレス−行番号変換テーブル３の例である。
【図４】図４は、本発明の実施形態におけるトラップ管理テーブル１６の例である。
【図５】図５は、本発明の実施形態におけるデバッガ１０のハードウェア構成図である。
【図６】図６は、本発明の実施形態におけるデバッガ１０のデバッガ制御方法のフローチャートである。
【図７】図７は、図６のフローチャートのステップＳ１９における分岐命令の検索処理のフローチャートである。
【図８】図８（ａ）は、コンパイラ・リンカが、Ｃ言語によるソースプログラムの記載とは別に命令コード領域内に分岐アドレステーブルを確保する場合の例である。図８（ｂ）は、コンパイラ・リンカが、Ｃ言語によるソースプログラムの記載とは別に命令コード領域内に直定数値を確保する場合の例である。図８（ｃ）は、コンパイラ・リンカが、Ｃ言語によるソースプログラムの記載とは別に命令コード領域内に直定数値を確保する場合の例である。
【発明を実施するための形態】
【００１６】
添付図面を参照して、本発明の実施形態によるデバッガ１０を以下に説明する。
【００１７】
［構成の説明］
はじめに、本実施形態におけるデバッガ１０の構成の説明を行う。図１は、本発明の実施形態におけるデバッガ１０のブロック図である。本実施形態におけるデバッガ１０は、シンボル−アドレス変換テーブル読込部１１、アドレス−行番号変換テーブル読込部１２、分岐命令第１検索部１３、分岐命令第２検索部１４、トラップ命令埋込部１５、トラップ管理テーブル１６、通過状態判定部１７及び網羅状態編集部１８を備える。
【００１８】
本実施形態におけるデバッガ１０は、デバッグ対象のロードモジュール１を読み込む。ロードモジュール１は、シンボル−アドレス変換テーブル２、アドレス−行番号変換テーブル３、命令コード４及びデータ領域５を備える。
【００１９】
図２は、本発明の実施形態におけるシンボル−アドレス変換テーブル２の例である。シンボル−アドレス変換テーブル２は、シンボル名、アドレス、サイズ及びタイプ情報を有する。シンボル名は、プログラムの手続き単位（関数等のモジュール単位）又はデータ単位の情報であるシンボルの名前である。アドレスは、メモリ上に配置されているシンボルの開始アドレスである。サイズは、メモリ上に配置されているシンボルのサイズである。タイプは、シンボルが命令コードであるかデータであるのかを示す情報である。
【００２０】
図３は、本発明の実施形態におけるアドレス−行番号変換テーブル３の例である。アドレス−行番号変換テーブル３は、アドレス、行番号及びタイプ情報を有する。アドレスは、メモリ上の命令コード又はデータのアドレスである。行番号は、メモリ上の命令コード又はデータに対応するソースプログラムの行番号である。タイプは、メモリ上のアドレスが、対応するソースプログラムの行ベースで、命令コードであるかデータであるのかを示す情報である。
【００２１】
命令コード４は、ロードモジュール１が所持しているＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）に実行させるための命令である。データ領域５は、ロードモジュール１が実行される際に参照されるデータである。
【００２２】
シンボル−アドレス変換テーブル読込部１１は、ロードモジュール１のシンボル−アドレス変換テーブル２をデバッガ１０に読み込む。
【００２３】
アドレス−行番号変換テーブル読込部１２は、ロードモジュール１のアドレス−行番号変換テーブル３をデバッガ１０に読み込む。
【００２４】
分岐命令第１検索部１３は、シンボル−アドレス変換テーブル２に基づいて、分岐命令の検索アドレス範囲を確定する。
【００２５】
分岐命令第２検索部１４は、アドレス−行番号変換テーブル３に基づいて、分岐命令の検索アドレスを確定する。
【００２６】
トラップ命令埋込部１５は、ロードモジュール１に含まれる分岐命令をトラップ命令に置き換える。
【００２７】
図４は、本発明の実施形態におけるトラップ管理テーブル１６の例である。トラップ管理テーブル１６は、アドレス、分岐命令形式及び通過状態情報を有する。アドレスは、トラップ命令と置換した分岐命令のメモリ上のアドレスである。分岐命令形式は、トラップ命令と置換した分岐命令を格納する。分岐命令に対応するソースプログラムの記載例は、例えば、Ｃ言語の場合には、条件付分岐命令としては、ｉｆ文とｓｗｉｔｃｈ文があり、無条件分岐命令の例としては、ｇｏｔｏ文がある。通過状態情報は、ロードモジュール１の実行時に、分岐命令を通過したかどうかを示す情報である。
【００２８】
通過状態判定部１７は、ロードモジュール１が実行される際、トラップ管理テーブル１６で管理されている分岐命令を通過したかどうかを判定する。トラップ管理テーブル１６で管理している分岐命令を通過した場合には、トラップ管理テーブル１６の対応するエントリの通過状態情報を、通過済であることを示す情報に書き換える。
【００２９】
網羅状態編集部１８は、ロードモジュール１のデバッグが終了した後に、トラップ管理テーブル１６とシンボル−アドレス変換テーブル２を参照して、カバレッジ測定を行い、測定結果を表示部２０に出力する。
【００３０】
次に、本実施形態におけるデバッガ１０のハードウェア構成についての説明を行う。図５は、本発明の実施形態におけるデバッガ１０のハードウェア構成図である。
【００３１】
デバッガ１０は、表示部２０、入力部２１、ＣＰＵ２２、補助記憶装置２３、メモリ２４及びシステムバス２５を備える。
【００３２】
メモリ２４は、デバッガ１０の主記憶装置である。デバッガ１０を利用する際には、本実施形態におけるデバッガ１０を実現するためのデバッガプログラム１００が、メモリ２４上に展開される。表示部２０は、デバッガ１０の実行結果が表示される。入力部２１は、利用者がデバッガ１０を操作するためのインタフェースである。ＣＰＵ２２は、メモリ２４上に展開されたコンピュータプログラムを実行する制御装置である。補助記憶装置２３は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）及びアプリケーションプログラムが記憶されている装置である。補助記憶装置２３には、本実施形態におけるデバッガ１０を実現するためのデバッガプログラム１００が記憶されている。システムバス２５は、メモリ１０、表示部２０、入力部２１、ＣＰＵ２２、補助記憶装置２３及びメモリ２４とデータの送受信を行う通信路である。
【００３３】
［動作方法の説明］
次に、本実施形態におけるデバッガ１０において、デバッガ制御方法の説明を行う。図６は、本発明の実施形態におけるデバッガ１０のデバッガ制御方法のフローチャートである。
【００３４】
（ステップＳ１０）
シンボル−アドレス変換テーブル読込部１１は、ロードモジュール１のシンボル−アドレス変換テーブル２を読み込む。
【００３５】
（ステップＳ１１）
アドレス−行番号変換テーブル読込部１２は、ロードモジュール１のアドレス−行番号変換テーブル３を読み込む。
【００３６】
（ステップＳ１２）
分岐命令第１検索部１３は、シンボル−アドレス変換テーブル２の最初のエントリに注目する。
【００３７】
（ステップＳ１３）
分岐命令第１検索部１３は、シンボル−アドレス変換テーブル２の注目中のエントリを取得する。
【００３８】
（ステップＳ１４）
分岐命令第１検索部１３は、ステップＳ１３で取得したエントリのタイプ情報を参照して、命令コードであるかどうかを判別する。分岐命令第１検索部１３は、取得したエントリが命令コードである場合には、ステップＳ１５に進み、所得したエントリが命令コードではない場合には、ステップＳ１６に進む。
【００３９】
（ステップＳ１５）
分岐命令第１検索部１３は、取得したエントリのアドレスとサイズに格納された情報から、分岐命令の検索開始アドレスと検索終了アドレスを求め、１つの検索アドレス範囲を確定し、ステップＳ１６に進む。
【００４０】
（ステップＳ１６）
分岐命令第１検索部１３は、シンボル−アドレス変換テーブル２のすべてのエントリに対して、分岐命令の検索アドレス範囲の確定処理を行ったかどうかを判断する。分岐命令第１検索部１３は、すべてのエントリに対して分岐命令の検索アドレス範囲の確定処理を行った場合には、ステップＳ１８に進み、すべてのエントリに対して分岐命令の検索アドレス範囲の確定処理を行っていない場合には、ステップＳ１７に進む。
【００４１】
（ステップＳ１７）
分岐命令第１検索部１３は、シンボル−アドレス変換テーブル２の次のエントリに注目を移し、ステップＳ１３に進む。
【００４２】
（ステップＳ１８）
分岐命令第２検索部１４は、ステップＳ１５で求めた検索アドレス範囲の最初の検索アドレス範囲に注目する。
【００４３】
（ステップＳ１９）
分岐命令第２検索部１４は、注目した検索アドレス範囲内の分岐命令を、デバッグ対象プログラムのソースプログラムの行番号単位で確認しながら検索する。検索アドレス範囲内の命令が、分岐命令であるかどうかを行番号単位で確認することで、分岐命令の検出を正確に行うことができる。ステップＳ１９の分岐命令検索処理の詳細は、図７のフローチャートを用いて後述する。
【００４４】
（ステップＳ２０）
分岐命令第２検索部１４は、ステップＳ１５で求めた検索アドレス範囲のすべてに対して、分岐命令の検索処理を行ったかどうかを判断する。分岐命令第２検索部１４は、すべての検索アドレス範囲に対して分岐命令の検索処理を行った場合には、ステップＳ２２に進み、すべての検索アドレス範囲に対して分岐命令の検索処理を行っていない場合には、ステップＳ２１に進む。
【００４５】
（ステップＳ２１）
分岐命令第２検索部１４は、ステップＳ１５で求めた検索アドレス範囲に対して、次の検索アドレス範囲に注目を移し、ステップＳ１９に進む。
【００４６】
（ステップＳ２２）
デバッガ１０の利用者が、デバッグの開始を指示をすると、ロードモジュール１の実行が開始され、トラップ管理テーブル１６に基づいて、デバッガ１０の制御が行われる。
【００４７】
次に、ステップＳ１９の分岐命令検索処理の詳細について説明する。図７は、図６のフローチャートのステップＳ１９における分岐命令の検索処理のフローチャートである。
【００４８】
（ステップＳ５０）
分岐命令第２検索部１４は、注目中の検索アドレス範囲に対応するアドレス−行番号変換テーブル３の該当箇所を検索する。
【００４９】
（ステップＳ５１）
分岐命令第２検索部１４は、アドレス−行番号変換テーブル３の最初のエントリに注目する。
【００５０】
（ステップＳ５２）
分岐命令第２検索部１４は、アドレス−行番号変換テーブル３の注目中のエントリを取得する。
【００５１】
（ステップＳ５３）
分岐命令第２検索部１４は、ステップＳ５２で取得したエントリのタイプ情報を参照して、命令コードであるかどうかを判別する。分岐命令第２検索部１４は、取得したエントリが命令コードである場合には、ステップＳ５４に進み、所得したエントリが命令コードではない場合には、ステップＳ５５に進む。
【００５２】
（ステップＳ５４）
分岐命令第２検索部１４は、取得したエントリのアドレスを検索アドレスとして確定し、ステップＳ５５に進む。
【００５３】
（ステップＳ５５）
分岐命令第２検索部１４は、アドレス−行番号変換テーブル３の注目中の検索アドレス範囲のすべてのエントリに対して、分岐命令の検索アドレスの確定処理を行ったかどうかを判断する。分岐命令第２検索部１４は、注目中の検索アドレス範囲のすべてのエントリに対して分岐命令の検索アドレスの確定処理を行った場合には、ステップＳ５７に進み、注目中の検索アドレス範囲のすべてのエントリに対して分岐命令の検索アドレスの確定処理を行っていない場合には、ステップＳ５６に進む。
【００５４】
（ステップＳ５６）
分岐命令第２検索部１４は、アドレス−行番号変換テーブル３の次のエントリに注目を移し、ステップＳ５２に進む。
【００５５】
（ステップＳ５７）
分岐命令第２検索部１４は、ステップＳ５４で確定した検索アドレスの最初の検索アドレスに注目する。
【００５６】
（ステップＳ５８）
トラップ命令埋込部１５は、注目中の検索アドレスの命令コードを参照する。
【００５７】
（ステップＳ５９）
トラップ命令埋込部１５は、ステップＳ５８で参照した命令コードが、分岐命令であるかどうかを判別する。トラップ命令埋込部１５は、参照した命令コードが分岐命令である場合には、ステップＳ６０に進み、参照した命令コードが分岐命令ではない場合には、ステップＳ６２に進む。
【００５８】
（ステップＳ６０）
トラップ命令埋込部１５は、分岐命令のアドレス、分岐命令の形式を、それぞれトラップ管理テーブル１６のアドレス、分岐命令形式に格納する。
【００５９】
（ステップＳ６１）
トラップ命令埋込部１５は、ステップＳ５８で参照した検索アドレスの分岐命令をトラップ命令に置き換える。
【００６０】
（ステップＳ６２）
トラップ命令埋込部１５は、ステップＳ５４で確定したすべての検索アドレスを参照したかどうかを判断する。トラップ命令埋込部１５は、すべての検索アドレスを参照した場合には、分岐命令の検索処理を終了し、すべての検索アドレスを参照していない場合には、ステップＳ６３に進む。
【００６１】
（ステップＳ６３）
トラップ命令埋込部１５は、ステップＳ５４で確定した次の検索アドレスに注目を移し、ステップＳ５８に進む。
【００６２】
本実施形態のデバッガ１０によれば、分岐命令第２検索部を備えることにより、メモリ上で、プログラムの手続き単位（関数等のモジュール単位）で、ＣＰＵに実行させるための命令と、ロードモジュール１が実行される際に参照されるデータが混在した場合でも、正確に分岐命令の検出ができる。そのため、より精度の高いカバレッジ測定ができ、また、分岐命令第２検索部を備える本実施形態のデバッガ１０は、ロードモジュール１からソースプログラムを逆アセンブルする際にも有用である。
【００６３】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【符号の説明】
【００６４】
１  ロードモジュール
２  シンボル−アドレス変換テーブル
３  アドレス−行番号変換テーブル
４  命令コード
５  データ領域
１０  デバッガ
１１  シンボル−アドレス変換テーブル読込部
１２  アドレス−行番号変換テーブル読込部
１３  分岐命令第１検索部
１４  分岐命令第２検索部
１５  トラップ命令埋込部
１６  トラップ管理テーブル
１７  通過状態判定部
１８  網羅状態編集部
２０  表示部
２１  入力部
２２  ＣＰＵ
２３  補助記憶装置
２４  メモリ
２５  システムバス
１００  デバッガプログラム
１０１ａ〜１０１ｃ  ソースプログラム
１０２ａ〜１０２ｃ  ロードモジュール
【図１】
2012088793.tif 000003
【図２】
2012088793.tif 000004
【図３】
2012088793.tif 000005
【図４】
2012088793.tif 000006
【図５】
2012088793.tif 000007
【図６】
2012088793.tif 000008
【図７】
2012088793.tif 000009
【図８】
2012088793.tif 000010