(57)【要約】【課題】デバッグ情報を効率よく取得できるデバッグ効率のよいデバッグシステムおよび方法を提供する。【解決手段】ブレークポイントでプログラムの実行を停止し、プログラム実行装置で実行される前記プログラムのデバッグの支援を行うデバッグシステムであって、プログラムの実行が停止される以前の複数の時点で、前記プログラム実行装置の動作状態を示す情報をダンプするダンプ制御手段と、前記ダンプ制御手段がダンプした前記プログラム実行装置の動作状態を示す情報を蓄積するダンプ情報蓄積部とを備えることを特徴とする。【選択図】図３
2009059005.tif 000002
【特許請求の範囲】
【請求項１】
ブレークポイントでプログラムの実行を停止し、プログラム実行装置で実行される前記プログラムのデバッグの支援を行うデバッグシステムであって、
プログラムの実行が停止される以前の複数の時点で、前記プログラム実行装置の動作状態を示す情報をダンプするダンプ制御手段と、
前記ダンプ制御手段がダンプした前記プログラム実行装置の動作状態を示す情報を蓄積するダンプ情報蓄積部と
を備えることを特徴とするデバッグシステム。
【請求項２】
前記プログラム実行装置の動作状態を示す情報はメモリのスタック領域の内容を含み、
前記ダンプ制御手段は、前記複数の時点で、前記メモリのスタック領域の内容をダンプする
ことを特徴とする請求項１に記載のデバッグシステム。
【請求項３】
前記プログラム実行装置の動作状態を示す情報は、ＣＰＵにおけるシステムレジスタに記憶された、ＣＰＵの状態を示す情報またはＣＰＵが検出したエラー情報を含み、
前記ダンプ制御手段は、前記複数の時点で、前記ＣＰＵの状態を示す情報またはＣＰＵが検出したエラー情報をダンプする
ことを特徴とする請求項１に記載のデバッグシステム。
【請求項４】
前記プログラム実行装置の動作状態を示す情報はキャッシュメモリまたはＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）の内容を含み、
前記ダンプ制御手段は、前記複数の時点で、前記キャッシュメモリまたはＴＬＢエントリの内容をダンプする
ことを特徴とする請求項１に記載のデバッグシステム。
【請求項５】
前記プログラム実行装置の動作状態を示す情報は、メモリ、ＣＰＵにおけるシステムレジスタ、キャッシュメモリおよびＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）の少なくとも１つを含む
ことを特徴とする請求項１に記載のデバッグシステム。
【請求項６】
前記デバッグシステムは、さらに、前記複数の時点でトリガ信号を発生するトリガ信号発生手段を備え、
前記ダンプ制御手段は、
前記トリガ信号が発生したとき、前記プログラム実行装置の動作状態を示す情報をダンプする
ことを特徴とする請求項１または５に記載のデバッグシステム。
【請求項７】
前記デバッグシステムは、さらに、キャッシュメモリのスラッシング状態の発生を検出するキャッシュスラッシング検出部を備え、
前記トリガ信号発生手段は、前記キャッシュスラッシング検出部がキャッシュメモリのスラッシング状態の発生を検出したとき、前記トリガ信号を発生する
ことを特徴とする請求項６に記載のデバッグシステム。
【請求項８】
前記デバッグシステムは、さらに、ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）のスラッシング状態の発生を検出するＴＬＢスラッシング検出部を備え、
前記トリガ信号発生手段は、前記ＴＬＢスラッシング検出部がＴＬＢのスラッシング状態の発生を検出したとき、前記トリガ信号を発生する
ことを特徴とする請求項６に記載のデバッグシステム。
【請求項９】
前記デバッグシステムは、さらに、実行中の命令が特定の命令であることを検出する特定命令検出部を備え、
前記トリガ信号発生手段は、実行中の命令が特定の命令であることを前記ＣＰＵ実行命令検出部が検出したとき、前記トリガ信号を発生する
ことを特徴とする請求項６に記載のデバッグシステム。
【請求項１０】
前記デバッグシステムは、さらに、プログラム実行装置におけるプログラムカウンタの値が特定の範囲内であることを検出する特定範囲内検出部を備え、
前記トリガ信号発生手段は、プログラム実行装置におけるプログラムカウンタの値が特定の範囲内であることを前記特定範囲内検出部が検出したとき、前記トリガ信号を発生する
ことを特徴とする請求項６に記載のデバッグシステム。
【請求項１１】
前記デバッグシステムは、さらに、特定のループの繰り返しを検出するループ繰り返し検出部を備え、
前記トリガ信号発生手段は、前記ループ繰り返し検出部が前記特定のループの繰り返しを検出したとき、前記トリガ信号を発生する
ことを特徴とする請求項６に記載のデバッグシステム。
【請求項１２】
前記デバッグシステムは、さらに、特定の割り込み信号を検出する割り込み信号検出部を備え、
前記トリガ信号発生手段は、前記割り込み信号検出部が前記特定の割り込み信号を検出したとき、前記トリガ信号を発生する
ことを特徴とする請求項６に記載のデバッグシステム。
【請求項１３】
前記デバッグシステムは、さらに、バスの動作異常を検出するバス動作異常検出部を備え、
前記トリガ信号発生手段は、前記バス動作異常検出部が前記バスの動作異常を検出したとき、前記トリガ信号を発生する
ことを特徴とする請求項６に記載のデバッグシステム。
【請求項１４】
前記デバッグシステムは、さらに、
実行中の命令が特定の命令であることを検出する特定命令検出部と、
プログラム実行装置におけるプログラムカウンタの値が特定の範囲内であることを検出する特定範囲内検出部と、
特定のループの繰り返しを検出するループ繰り返し検出部と、
特定の割り込み信号を検出する割り込み信号検出部と、
バスの動作異常を検出するバス動作異常検出部と、
ユーザ操作を受け付ける受付手段とを備え、
前記トリガ信号発生手段は、前記受付手段が受け付けた前記ユーザ操作に基づいて、前記特定命令検出部の検出結果、前記特定範囲内検出部の検出結果、前記ループ繰り返し検出部の検出結果、前記割り込み信号検出部の検出結果、および前記バス動作異常検出部の検出結果をそれぞれ選択または非選択し、選択した検出結果に対応する前記特定命令検出部、前記特定範囲内検出部、前記ループ繰り返し検出部、前記割り込み信号検出部、および前記バス動作異常検出部が検出結果をそれぞれ検出したときに前記トリガ信号を発生する
ことを特徴とする請求項６に記載のデバッグシステム。
【請求項１５】
前記デバッグシステムは、さらに、
不揮発メモリと、
前記不揮発メモリの書き込みを制御する不揮発メモリ制御手段と、
前記ダンプ制御手段および前記ダンプ情報蓄積部への電源供給を停止する停止制御部とを備え、
前記不揮発メモリ制御手段は、前記不揮発性メモリに前記ダンプ情報蓄積部に蓄積された前記プログラム実行装置の動作状態を示す情報を書き込み、
前記ダンプ制御手段は、前記不揮発性メモリに前記プログラム実行装置の動作状態を示す情報が書き込まれた後、前記停止制御部に前記動作を停止させる信号を出力し、
前記停止制御部は、前記不揮発メモリ制御手段が前記不揮発性メモリに前記情報が書き込まれた後に、前記ダンプ制御手段および前記ダンプ情報蓄積部への電源供給を停止する
ことを特徴とする請求項１に記載のデバッグシステム。
【請求項１６】
ブレークポイントでプログラムの実行を停止し、プログラム実行装置を用いて前記プログラムのデバッグの支援を行う方法であって、
プログラムの実行が停止される以前の複数の時点で、前記プログラム実行装置の動作状態を示す情報をダンプ情報蓄積部にダンプするダンプ制御ステップを含み、
前記ダンプ制御ステップは前記情報を前記ダンプ情報蓄積部に蓄積する
ことを特徴とする方法。
【請求項１７】
ブレークポイントでプログラムの実行を停止し、プログラム実行装置で実行される前記プログラムのデバッグの支援を行うためのプログラムであって、
プログラムの実行が停止される以前の複数の時点で、前記プログラム実行装置の動作状態を示す情報をダンプ情報蓄積部にダンプするダンプ制御ステップを含み、
前記ダンプ制御ステップは前記情報を前記ダンプ情報蓄積部に蓄積する
ことをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバッグシステムおよび方法に関し、特に、ブレークポイントでプログラムの実行を停止し、プログラム実行装置で実行されるプログラムのデバッグの支援を行うデバッグシステムおよび方法に関する。
【背景技術】
【０００２】
プロセッサ上においてプログラムの実行を一時的に停止させてプログラムの実行状態を表示するデバッグ装置は、プログラム開発において有用である。デバッグ装置では、プログラムの動作エラーとなるプログラムの不具合（バグ）の発見や修正、すなわちデバッグを支援する。また、デバッグ装置では、デバッグを効率よく行うためにさまざまなものが提案されている（例えば、特許文献１。）。
【０００３】
上記特許文献１のデバッグ装置では、デバッグ中に作業を中断する必要がある場合に、中断した時点のデバッグの状態を外部記憶装置へ退避させ、その後に、デバッグを中断した時点のデバッグの状態に復帰できる。
【０００４】
さらに、デバッグ中のプログラムカウンタの履歴をいったんトレース用メモリに格納し、後に外部記憶装置に退避させることで、実行の流れを調べることが可能なデバッグ装置も提案されている。
【特許文献１】特開平５−２５０２０８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来技術によれば、プロセッサにおけるプログラムの実行の流れを調べるためには、デバッグ作業者は、その都度適切なトリガ条件をデバッグ装置に設定し、例えばプログラムカウンタの履歴といったデバッグに必要な情報（以下、デバッグ情報と記載。）を取得しなければならなかった。デバッグ作業者が、デバッグ情報を取得するために、何度もトリガ条件を設定しデバッグ情報の取得を繰り返す必要があり、デバッグ効率が悪かった。
【０００６】
本発明は、上記の問題に着目してなされたものであり、デバッグ情報を効率よく取得できるデバッグ効率のよいデバッグシステムおよび方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明に係るデバッグシステムは、ブレークポイントでプログラムの実行を停止し、プログラム実行装置で実行される前記プログラムのデバッグの支援を行うデバッグシステムであって、プログラムの実行が停止される以前の複数の時点で、前記プログラム実行装置の動作状態を示す情報をダンプするダンプ制御手段と、前記ダンプ制御手段がダンプした前記プログラム実行装置の動作状態を示す情報を蓄積するダンプ情報蓄積部とを備えることを特徴とする。
【０００８】
この構成により、プログラムの実行が停止される一回のプログラム実行で、プログラム実行中の複数の時点における前記プログラム実行装置の動作状態を示す情報をデバッグ情報として取得することができる。それにより、デバッグ情報を効率よく取得できるデバッグ効率のよいデバッグシステムの実現が可能になる。
【０００９】
また、前記プログラム実行装置の動作状態を示す情報はメモリのスタック領域の内容を含み、前記ダンプ制御手段は、前記複数の時点で、前記メモリのスタック領域の内容をダンプしてもよい。
【００１０】
この構成により、プログラム実行中の複数の時点におけるスタック領域の内容の出力が可能になる。すなわち、プログラムの実行が停止される一回のプログラム実行で、時系列に沿ったスタック領域の内容をデバッグ情報として取得することができる。それにより、デバッグ情報を効率よく取得できる。
【００１１】
また、前記プログラム実行装置の動作状態を示す情報は、ＣＰＵにおけるシステムレジスタに記憶された、ＣＰＵの状態を示す情報またはＣＰＵが検出したエラー情報を含み、前記ダンプ制御手段は、前記複数の時点で、前記ＣＰＵの状態を示す情報またはＣＰＵが検出したエラー情報をダンプしてもよい。
【００１２】
この構成により、プログラム実行中の複数の時点におけるＣＰＵの状態を示す情報またはＣＰＵが検出したエラー情報の出力が可能になる。すなわち、プログラムの実行が停止される一回のプログラム実行で、時系列に沿ってＣＰＵの状態を示す情報またはＣＰＵが検出したエラー情報をデバッグとして取得できるので、複数のエラーが発生する場合、その順序および各エラー発生時のＣＰＵの状態を一度に調べることが可能になる。つまり、デバッグ情報を効率よく取得できる。
【００１３】
また、前記プログラム実行装置の動作状態を示す情報はキャッシュメモリまたはＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）の内容を含み、前記ダンプ制御手段は、前記複数の時点で、前記キャッシュメモリまたはＴＬＢエントリの内容をダンプしてもよい。
【００１４】
この構成により、プログラム実行中の複数の時点におけるキャッシュメモリまたはＴＬＢエントリの内容の出力が可能になる。すなわち、プログラムの実行が停止される一回のプログラム実行で、時系列に沿ってキャッシュメモリあるいはＴＬＢエントリの内容をデバッグ情報として取得できる。デバッグ情報として、プログラム実行の時系列に沿ったキャッシュメモリあるいはＴＬＢエントリの使用状況を一度に調べることが可能になるので、デバッグ情報を効率よく取得できる。
【００１５】
また、前記プログラム実行装置の動作状態を示す情報は、メモリ、ＣＰＵにおけるシステムレジスタ、キャッシュメモリおよびＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）の少なくとも１つを含んでもよい。
【００１６】
この構成により、プログラムの実行が停止される一回のプログラム実行で、時系列に沿ってＣＰＵの状態を示す情報、ＣＰＵが検出したエラー情報、キャッシュメモリの内容、ＴＬＢエントリの内容の少なくとも１つ以上をデバッグ情報として取得できるので、デバッグ情報を効率よく取得できる。
【００１７】
また、前記デバッグシステムは、さらに、前記複数の時点でトリガ信号を発生するトリガ信号発生手段を備え、前記ダンプ制御手段は、前記トリガ信号が発生したとき、前記プログラム実行装置の動作状態を示す情報をダンプしてもよい。
【００１８】
この構成により、トリガ信号が発生したときに、プログラム実行装置の動作状態を示す情報をデバッグ情報として取得することができる。それにより、例えば、キャッシュスラッシング発生などの所要のイベント発生時におけるデバッグ情報を時系列に取得することができる。
【００１９】
また、前記デバッグシステムは、さらに、キャッシュメモリのスラッシング状態の発生を検出するキャッシュスラッシング検出部を備え、前記トリガ信号発生手段は、前記キャッシュスラッシング検出部がキャッシュメモリのスラッシング状態の発生を検出したとき、前記トリガ信号を発生してもよい。
【００２０】
これにより、性能劣化をもたらすキャッシュスラッシング状態がいつ起きているかの情報と、その時点でのプログラム実行装置の動作状態をデバッグ情報として取得することができる。
【００２１】
また、前記デバッグシステムは、さらに、ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）のスラッシング状態の発生を検出するＴＬＢスラッシング検出部を備え、前記トリガ信号発生手段は、前記ＴＬＢスラッシング検出部がＴＬＢのスラッシング状態の発生を検出したとき、前記トリガ信号を発生してもよい。
【００２２】
これにより、性能劣化をもたらすＴＬＢスラッシング状態がいつ起きているかの情報と、その時点でのプログラム実行装置の動作状態をデバッグ情報として取得することができる。
【００２３】
また、前記デバッグシステムは、さらに、実行中の命令が特定の命令であることを検出する特定命令検出部を備え、前記トリガ信号発生手段は、実行中の命令が特定の命令であることを前記ＣＰＵ実行命令検出部が検出したとき、前記トリガ信号を発生してもよい。
【００２４】
これにより、特定命令が実行された時点でのプログラム実行装置の動作状態をデバッグ情報として取得することができる。さらに、ダンプするタイミングを特定命令が実行された時点と限定することで、ダンプ情報蓄積部の容量の削減が可能となる。
【００２５】
また、前記デバッグシステムは、さらに、プログラム実行装置におけるプログラムカウンタの値が特定の範囲内であることを検出する特定範囲内検出部を備え、前記トリガ信号発生手段は、プログラム実行装置におけるプログラムカウンタの値が特定の範囲内であることを前記特定範囲内検出部が検出したとき、前記トリガ信号を発生してもよい。
【００２６】
これにより、特定のプログラムカウンタの値が特定の範囲内である時点でのプログラム実行装置の動作状態をデバッグ情報として取得することができる。さらに、ダンプするタイミングを特定のプログラムカウンタの値が特定の範囲内である時点と限定することで、ダンプ情報蓄積部の容量の削減が可能となる。
【００２７】
また、前記デバッグシステムは、さらに、特定のループの繰り返しを検出するループ繰り返し検出部を備え、前記トリガ信号発生手段は、前記ループ繰り返し検出部が前記特定のループの繰り返しを検出したとき、前記トリガ信号を発生してもよい。
【００２８】
これにより、特定のループの繰り返しが続いてしまい、実行中のプログラムがエラー状態となった場合でも、プログラムの実行を停止した後に、プログラム実行装置の動作状態を必要なデバッグ情報として取得することが可能になる。
【００２９】
また、前記デバッグシステムは、さらに、特定の割り込み信号を検出する割り込み信号検出部を備え、前記トリガ信号発生手段は、前記割り込み信号検出部が前記特定の割り込み信号を検出したとき、前記トリガ信号を発生してもよい。
【００３０】
これにより、ＣＰＵが割り込みを検出する前の特定の割り込みが発生した時点でのプログラム実行装置の動作状態をデバッグ情報として取得することが可能になる。
【００３１】
また、前記デバッグシステムは、さらに、バスの動作異常を検出するバス動作異常検出部を備え、前記トリガ信号発生手段は、前記バス動作異常検出部が前記バスの動作異常を検出したとき、前記トリガ信号を発生してもよい。
【００３２】
これにより、ＣＰＵがバスエラー例外を検出する前のバスの動作異常を検出した時点でプログラム実行装置の動作状態をデバッグ情報として取得することが可能になる。
【００３３】
また、前記デバッグシステムは、さらに、実行中の命令が特定の命令であることを検出する特定命令検出部と、プログラム実行装置におけるプログラムカウンタの値が特定の範囲内であることを検出する特定範囲内検出部と、特定のループの繰り返しを検出するループ繰り返し検出部と、特定の割り込み信号を検出する割り込み信号検出部と、バスの動作異常を検出するバス動作異常検出部と、ユーザ操作を受け付ける受付手段とを備え、前記トリガ信号発生手段は、前記受付手段が受け付けた前記ユーザ操作に基づいて、前記特定命令検出部の検出結果、前記特定範囲内検出部の検出結果、前記ループ繰り返し検出部の検出結果、前記割り込み信号検出部の検出結果、および前記バス動作異常検出部の検出結果をそれぞれ選択または非選択し、選択した検出結果に対応する前記特定命令検出部、前記特定範囲内検出部、前記ループ繰り返し検出部、前記割り込み信号検出部、および前記バス動作異常検出部が検出結果をそれぞれ検出したときに前記トリガ信号を発生してもよい。
【００３４】
これにより、ユーザ操作に基づいて、ユーザが所望する、例えば、キャッシュスラッシング発生などの所要のイベント発生時でのプログラム実行装置の動作状態を示す情報をデバッグ情報として取得することができる。
【００３５】
また、前記デバッグシステムは、さらに、不揮発メモリと、前記不揮発メモリの書き込みを制御する不揮発メモリ制御手段と、前記ダンプ制御手段および前記ダンプ情報蓄積部への電源供給を停止する停止制御部とを備え、前記不揮発メモリ制御手段は、前記不揮発性メモリに前記ダンプ情報蓄積部に蓄積された前記プログラム実行装置の動作状態を示す情報を書き込み、前記ダンプ制御手段は、前記不揮発性メモリに前記プログラム実行装置の動作状態を示す情報が書き込まれた後、前記停止制御部に前記動作を停止させる信号を出力し、前記停止制御部は、前記不揮発メモリ制御手段が前記不揮発性メモリに前記情報が書き込まれた後に、前記ダンプ制御手段および前記ダンプ情報蓄積部への電源供給を停止してもよい。
【００３６】
これにより、プログラム実行装置の動作状態を示す情報をデバッグ情報として取得後に、デバッグシステムへの電源供給が停止されても、取得したデバッグ情報を保存することができる。
【００３７】
なお、本発明は、装置として実現するだけでなく、このような装置が備える処理手段を備える集積回路として実現したり、その装置を構成する処理手段をステップとする方法として実現したりすることもできる。
【発明の効果】
【００３８】
本発明によれば、デバッグ情報を効率よく取得できるデバッグ効率のよいデバッグシステムおよび方法を実現することができる。
【発明を実施するための最良の形態】
【００３９】
以下、本発明の実施形態について、図面を用いて説明する。
【００４０】
図１は、本発明の実施の形態におけるプログラムデバッグシステムの外観を示す図である。図１のプログラムデバッグシステム１は、プログラムデバッグ装置２とプログラム実行装置３とからなる。
【００４１】
プログラムデバッグ装置２は、本体装置２ａと、表示装置２ｂと、入力装置２ｃとを備える。本体装置２ａは、デバッグ作業者からの各種操作指示を、入力装置２ｃを介して受け、プログラム実行装置３に対してデバッグ対象プログラムの実行を制御し、実行終了後に予めデバッグ作業者より指定されたデバッグ情報を表示装置２ｂにより表示する装置である。
【００４２】
プログラムデバッグ装置２は、デバッグ対象プログラムがプログラム実行装置３で実行される前に、デバッグ作業に必要とするデバッグ情報に対応するトリガ条件がデバッグ作業者により設定される。ここで、デバッグ情報とは、例えばプログラムカウンタの履歴や、実行される関数の戻り番地や引数、コンテキスト中の局所変数などのスタック領域の内容、ＣＰＵの状態を示す情報またはＣＰＵが検出したエラー情報の出力などである。
【００４３】
プログラム実行装置３は、本体装置３ａ、表示装置３ｂ、入力装置３ｃを備え、デバッグ対象プログラムを実行するプロセッサ（またはプロセッサを備える評価用ボード）の動作を模倣するシミュレーションソフトウェアを実行するデータ処理装置であり、ＬＡＮケーブル４を介してプログラムデバッグ装置２から制御される。プログラム実行装置３は、ターゲットシステムが設計段階でまだ存在しない場合にその代役を務めることができる。
【００４４】
図２は、他のプログラムデバッグシステム５の外観を示す図である。同図のプログラムデバッグシステム５は、図１と比べて、プログラム実行装置３の代わりにプログラム実行装置６を備える点が異なっている。プログラム実行装置６は、プロセッサを備える評価用ボードまたはプロセッサであり、接続ケーブル７を介して、プログラムデバッグ装置２から制御される。
【００４５】
プログラムデバッグ装置２は、図１のようにシミュレータであるプログラム実行装置３に接続されている場合も、図２のようにプロセッサ（または評価用ボード）であるプログラム実行装置６に接続されている場合も、本質的に同様に動作する。
【００４６】
また、プログラムデバッグ装置２のコンピュータ上で、上記シミュレーションソフトウェアをも実行し、プログラム実行装置３と兼用してもよい。
【００４７】
図３は、本発明の実施の形態におけるデバッグシステムの構成を示すブロック図である。
【００４８】
図３において、デバッグシステム１００は、ブレークポイントでプログラムの実行を停止し、プログラム実行装置で実行される前記プログラムのデバッグの支援を行うデバッグシステムであって、デバッグ制御回路１０１と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１０と、ＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）１１１と、ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）スラッシング検出回路１１２と、キャッシュ制御回路１２０と、キャッシュスラッシング検出回路１２１と、キャッシュメモリ１２２と、外部メモリ１３０と、割り込み制御回路１４０と、割り込み信号検出部１４１と、バス監視回路１５０と、システム制御回路１６０と、ダンプ出力部１７０と、ダンプ蓄積部１７１と、不揮発メモリ制御回路１７２と、不揮発メモリ１７３と、受付部１８０とを備える。
【００４９】
ここで、ＣＰＵ１１０、ＭＭＵ１１１、ＴＬＢスラッシング検出回路１１２、キャッシュ制御回路１２０、キャッシュスラッシング検出回路１２１、キャッシュメモリ１２２、外部メモリ１３０、およびバス監視回路１５０は、図１あるいは図２で示したプログラム実行装置３あるいはプログラム実行装置６を構成する。
【００５０】
ＣＰＵ１１０は、内部にＭＭＵ１１１と演算や実行状態の保持に用いる記憶素子である複数のレジスタ（不図示）とを備える。ＣＰＵ１１０は、外部メモリ１３０に記憶されているデバッグ対象のプログラムを実行する。ＣＰＵ１１０は、デバッグ対象プログラムの実行の際に、プログラムカウンタの値、スタックポインタの値、システムレジスタの値および実行される命令の情報をそれぞれ信号線Ｓ１０３、信号線Ｓ１０４、バスＳ１０５、および信号線Ｓ１０６を介してデバッグ制御回路１０１に送る。
【００５１】
ＭＭＵ１１１は、ＣＰＵ１１０の内部に含まれ、物理メモリ空間を仮想メモリ空間に割り当てる。ＭＭＵ１１１は、デバッグ対象プログラムの実行の際に、バスＳ１０１を介して、ＴＬＢエントリの内容をデバッグ制御回路１０１に送る。
【００５２】
ＴＬＢスラッシング検出回路１１２は、本発明に係るＴＬＢスラッシング検出部に相当し、ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）のスラッシング状態の発生を検出する。具体的には、ＭＭＵ１１１の内部に構成され、ＴＬＢのスラッシング状態を検出すると、ＴＬＢのスラッシング状態を検出したことを示すＴＬＢスラッシング検出信号を、信号線Ｓ１０２を介してデバッグ制御回路１０１に送る。
【００５３】
ここで、ＴＬＢスラッシング状態は、ＴＬＢが一度にメモリをマップできる範囲を超えるとページング処理が多発し、ＴＬＢを制御するプログラムがＣＰＵ１１０の大部分を占めて、システム全体の機能が発揮できない状態を言う。
【００５４】
キャッシュメモリ１２２は、外部メモリ１３０に記憶されたＣＰＵ１１０の使用頻度の高いデータを蓄積し、低速な外部メモリ１３０へのアクセスを減らすことでＣＰＵ１１０の処理の高速化を支援する。キャッシュメモリ１２２は、バスＳ１２２を介して、外部メモリ１３０とデータの授受を行う。
【００５５】
キャッシュ制御回路１２０は、バスＳ１０７を介して、ＣＰＵ１１０とキャッシュメモリ１２２および外部メモリ１３０とデータの授受を行う。また、キャッシュ制御回路１２０は、バスＳ１１０を介して、外部メモリ１３０とデータの授受を行う。キャッシュ制御回路１２０は、バスＳ１２２を介して、キャッシュメモリ１２２とデータの授受を行う。また、キャッシュ制御回路１２０は、バスＳ１０９を介して、キャッシュメモリ１２２の内容を示すエントリをデバッグ制御回路１０１に送る。
【００５６】
キャッシュスラッシング検出回路１２１は、本発明に係るキャッシュスラッシング検出部に相当し、キャッシュメモリ１２２のスラッシング状態の発生を検出する。具体的には、キャッシュメモリ１２２のスラッシング状態を検出すると、信号線Ｓ１０８を介して、キャッシュスラッシング検出信号をデバッグ制御回路１０１に送る。
【００５７】
ここで、キャッシュスラッシング状態は、キャッシュメモリ１２２の記憶領域が不足するとリファレンス処理が多発し、キャッシュメモリ１２２を制御するプログラムがＣＰＵ１１０の大部分を占めて、システム全体の機能が発揮できない状態を言う。
【００５８】
外部メモリ１３０は、キャッシュ制御回路１２０とバスＳ１１０で接続され、バスＳ１１０を介して、キャッシュ制御回路１２０とデータの授受を行う。また、外部メモリ１３０は、バスＳ１１０を介して、メモリ上のスタック領域を、デバッグ制御回路１０１の要求に応じてデバッグ制御回路１０１に送る。
【００５９】
ここで、メモリ上のスタック領域には、例えば、実行される関数の戻り番地や、引数、コンテキスト中の局所変数などを示す情報が含まれている。
【００６０】
バス監視回路１５０は、本発明に係るバス動作異常検出部に相当し、バスの動作異常を検出する。具体的には、バスＳ１１０の状態を監視し、特定の条件を満たす場合に動作異常であると判断し、信号線Ｓ１１１を介して、バスが動作異常状態であることを示す信号をデバッグ制御回路１０１に送る。
【００６１】
ここで、特定の条件を満たす場合とは、例えば、各種バスエラーが発生した場合などを言う。
【００６２】
割り込み制御回路１４０は、割り込み信号が入力されたとき、割り込み処理プログラムを起動し、割り込み処理プログラムの実行後に元のプログラムを再開する制御を行う。割り込み制御回路１４０は、信号線Ｓ１１３、信号線Ｓ１１４、信号線Ｓ１１５および信号線Ｓ１１６を介して受けた割り込み信号をＣＰＵ１１０に伝える役割を持つ。
【００６３】
割り込み信号検出部１４１は、本発明に係る割り込み信号検出部に相当し、特定の割り込み信号を検出する。具体的には、割り込み制御回路１４０に含まれ、複数の信号線Ｓ１１３、信号線Ｓ１１４、信号線Ｓ１１５および信号線Ｓ１１６を介して受ける割り込み信号が特定の条件になった場合に、信号線Ｓ１２３を介して、特定割り込み信号をデバッグ制御回路１０１に送る。ここで、特定の条件とは、例えば、割り込み処理の優先度を表す割り込みレベルの値が一定値以上などの条件である。
【００６４】
デバッグ制御回路１０１は、デバッグ対象のプログラムの実行が停止される以前の複数の時点で、プログラム実行装置３あるいは６の動作状態を示す情報をダンプ出力部１７０にダンプする。
【００６５】
ここで、プログラム実行装置３または６の動作状態を示す情報とは、例えば、次の（１）〜（４）の少なくとも１つである。（１）実行される関数の戻り番地や引数、局所変数などが格納された外部メモリ１３０のスタック領域の内容、（２）ＣＰＵ１１０の状態あるいはＣＰＵ１１０が検出したエラー情報が格納されたシステムレジスタの情報、（３）キャッシュメモリ１２２のエントリ内容、（４）ＴＬＢのエントリの内容である。
【００６６】
受付部１８０は、ユーザ操作を受け付けてデバッグ制御回路１０１に指示をする。受付部１８０は、ユーザ指示に従い、デバッグ制御回路１０１に指示することでトリガ信号発生部１０２が有するフラグレジスタの設定を有効または無効にする。トリガ信号発生部１０２のフラグレジスタの設定が有効にされた場合には、有効にされたフラグレジスタに対応する検出結果信号が選択される。選択された検出結果信号が入力された時点でトリガ信号発生部１０２はトリガ信号を発生する。
【００６７】
図４は、本発明の実施の形態におけるデバッグ制御回路１０１の構成を示すブロック図である。
【００６８】
デバッグ制御回路１０１は、図４に示すように、トリガ信号発生部１０２と、状態検出部１０４と、ダンプ制御部１０３とを備える。
【００６９】
デバッグ制御回路１０１は、トリガ信号発生部１０２がトリガ信号を発生したときに、ダンプ制御部１０３によりプログラム実行装置３または６の動作状態を示す情報をダンプし、ダンプ出力部１７０へ出力する。
【００７０】
状態検出部１０４は、本発明における特定命令検出部、特定範囲内検出部、ループ繰り返し検出部に相当する。
【００７１】
状態検出部１０４は、実行中の命令が特定の命令であることを検出する。具体的には、ＣＰＵ１１０から信号線Ｓ１０６を介して、実行される命令の情報が入力されて、入力された情報が、特定の命令かどうかを検出している。状態検出部１０４は、ＣＰＵ１１０における実行中の命令が特定の命令であることを検出したとき、実行される命令が特定の命令であることを示す検出結果信号をトリガ信号発生部１０２に出力する。
【００７２】
また、状態検出部１０４は、プログラムカウンタの値が特定の範囲内であることを検出する。具体的には、ＣＰＵ１１０から信号線Ｓ１０３を介して、プログラムカウンタ値が入力されて、入力されたプログラムカウンタ値が、特定の範囲内にあるかどうかを検出している。状態検出部１０４は、ＣＰＵ１１０におけるプログラムカウンタの値が特定の範囲内にあることを検出したとき、プログラムカウンタの値が特定の範囲内にあることを示す検出結果信号をトリガ信号発生部１０２に出力する。
【００７３】
また、状態検出部１０４は、プログラムカウンタの値を監視して特定のループ繰り返しの発生を検出する。具体的には、ＣＰＵ１１０から信号線Ｓ１０３を介して、プログラムカウンタ値が入力されて、入力されたプログラムカウンタ値から特定のループ繰り返しの発生の有無を検出している。状態検出部１０４は、プログラムカウンタ値から特定のループ繰り返しの発生を検出したとき、特定のループ繰り返しの検出を示す検出結果信号をトリガ信号発生部１０２に出力する。
【００７４】
トリガ信号発生部１０２は、本発明におけるトリガ信号発生手段に相当し、前記複数の時点でトリガ信号を発生する。
【００７５】
トリガ信号発生部１０２は、有効にされたフラグレジスタに対応する検出結果信号が、状態検出部１０４からの検出結果信号の場合に、状態検出部１０４から検出結果信号が入力され、検出結果信号が入力された時点でトリガ信号を発生する。
【００７６】
また、トリガ信号発生部１０２は、有効にされたフラグレジスタに対応する検出結果信号が、ＴＬＢスラッシング検出回路１１２からの検出結果信号の場合、ＴＬＢスラッシング検出回路１１２から信号線Ｓ１０２を介して、ＴＬＢのスラッシング状態を検出したことを示す検出結果信号が入力され、検出結果信号が入力された時点でトリガ信号を発生する。
【００７７】
また、トリガ信号発生部１０２は、有効にされたフラグレジスタに対応する検出結果信号が、キャッシュスラッシング検出回路１２１からの検出結果信号の場合、キャッシュスラッシング検出回路１２１から信号線Ｓ１０８を介して、キャッシュスラッシング状態を検出したことを示す検出結果信号が入力された時点で、トリガ信号を発生する。
【００７８】
また、トリガ信号発生部１０２は、有効にされたフラグレジスタに対応する検出結果信号が、割り込み信号検出部１４１からの検出結果信号の場合、割り込み信号検出部１４１から信号線Ｓ１２３を介して、特定の割り込み信号を検出したことを示す検出結果信号が入力され、検出結果信号が入力された時点で、トリガ信号を発生する。
【００７９】
また、トリガ信号発生部１０２は、有効にされたフラグレジスタに対応する検出結果信号が、割り込み信号検出部１４１からの検出結果信号の場合、バス監視回路１５０から信号線Ｓ１１１を介して、バスが動作異常状態であることを示す検出結果信号が入力され、検出結果信号が入力された時点で、トリガ信号を発生する。
【００８０】
ダンプ制御部１０３は、トリガ信号発生部１０２がトリガ信号を発生した時点で、ユーザ、例えばプログラム実行装置３または６の動作状態を示す情報（１）〜（４）においてデバッグ作業者から予め指定された情報をダンプし、ダンプ出力部１７０へ出力する。
【００８１】
また、ダンプ制御部１０３は、受付部１８０を介してのユーザ指示により、外部メモリ１３０のスタック領域の内容、ＣＰＵ１１０の状態、ＣＰＵ１１０が検出したエラー情報が格納されたシステムレジスタの情報、キャッシュメモリ１２２のエントリ内容、およびＴＬＢのエントリの内容の少なくとも１つ以上を選択し、ダンプ出力部１７０に出力されるプログラム実行装置３または６の動作状態を示す情報（以下、ダンプ情報と記載。）とすることができる。
【００８２】
ダンプ制御部１０３は、ＣＰＵ１１０から信号線Ｓ１０４を介してスタックポインタ値が入力される。ダンプ制御部１０３は、外部メモリ１３０のスタック領域をダンプ情報としてダンプする場合には、トリガ信号発生部１０２がトリガ信号を発生した時点で、ダンプすべきスタックの位置を入力されたスタックポインタ値で特定して外部メモリ１３０のスタック領域をダンプする。つまり、ダンプ制御部１０３は、外部メモリ１３０のスタック領域をダンプ出力部１７０へ出力する。
【００８３】
また、ダンプ制御部１０３は、ＭＭＵ１１１からバスＳ１０１を介して、ＴＬＢのエントリの内容が入力される。ダンプ制御部１０３は、ＴＬＢのエントリの内容をダンプ情報としてダンプする場合には、トリガ信号発生部１０２がトリガ信号を発生した時点で、ＴＬＢのエントリの内容をダンプする。つまり、ダンプ制御部１０３は、ＴＬＢのエントリの内容をダンプ出力部１７０へ出力する。
【００８４】
また、ダンプ制御部１０３は、キャッシュ制御回路１２０からバスＳ１０９を介して、キャッシュエントリの内容が入力される。ダンプ制御部１０３は、キャッシュエントリの内容をダンプ情報としてダンプする場合には、トリガ信号発生部１０２がトリガ信号を発生した時点で、キャッシュエントリの内容をダンプする。つまり、ダンプ制御部１０３は、キャッシュエントリの内容をダンプ出力部１７０へ出力する。
【００８５】
また、ダンプ制御部１０３は、受付部１８０を介してのユーザ指示に従い、トリガ信号発生部１０２を制御して、トリガ信号発生部１０２が有するフラグレジスタの設定を有効または無効にする。トリガ信号発生部１０２のフラグレジスタの設定を有効にすることで、有効にされたフラグレジスタに対応する検出結果トリガ信号発生部１０２が発生するトリガ信号を選択することができる。
【００８６】
さらに、ダンプ制御部１０３は、信号線Ｓ１１７を介して、システム制御回路１６０に、例えば、ダンプ制御部１０３およびダンプ蓄積部１７１などデバッグシステムへの電源供給を停止する旨を示す停止指示信号を送る。
【００８７】
システム制御回路１６０は、本発明における停止制御部に相当し、前記ダンプ制御手段および前記ダンプ情報蓄積部への電源供給を停止する。具体的には、ダンプ制御部１０３から信号線Ｓ１１７を介して、ダンプ制御部１０３およびダンプ蓄積部１７１などデバッグシステムへの電源供給を停止する旨を示す停止指示信号が入力されると、信号線Ｓ１１８を介して、予め指定されたデバッグシステム、例えば、ダンプ蓄積部１７１などにシステム停止信号を送る。
【００８８】
ダンプ出力部１７０は、デバッグ制御回路１０１におけるダンプ制御部１０３からバスＳ１１９を介して、ダンプ情報を入力される。ダンプ出力部１７０は、入力されたダンプ情報を、ダンプ蓄積部１７１または不揮発メモリ制御回路１７２にバスＳ１２０を介して送る。
【００８９】
ダンプ蓄積部１７１は、本発明におけるダンプ情報蓄積部に相当し、前記ダンプ制御手段がダンプした前記プログラム実行装置の動作状態を示す情報を蓄積する。具体的には、ダンプ出力部１７０から出力されたダンプ情報を蓄積する。
【００９０】
不揮発メモリ制御回路１７２は、本発明における不揮発メモリ制御手段に相当し、前記不揮発メモリ１７３の書き込みを制御する。具体的には、不揮発メモリ１７３にバスＳ１２１を介して、ダンプ出力部１７０から入力されたダンプ情報をデータとして書き込む。
【００９１】
次に、本発明のデバッグシステムの処理について以下説明する。
【００９２】
図５は、本発明の実施の形態におけるデバッグシステムのダンプ処理を説明するフローチャートである。
【００９３】
まず、受付部１８０は、ユーザ操作によってトリガ信号を発生させるイベントが指定される。ここで、イベントとは、実行される命令が特定の命令であること、プログラムカウンタの値が特定の範囲内にあること、特定のループ繰り返しであること、ＴＬＢのスラッシング状態、キャッシュスラッシング状態、および特定の割り込み信号の入力、バスが動作異常状態であることである。
【００９４】
次に、トリガ信号発生部１０２は、ダンプ制御部１０３により、受付部１８０が指示するイベントが検出された時点でトリガ信号を発生するよう設定される。
【００９５】
次に、トリガ信号発生部１０２は、受付部１８０が指示するイベントが検出されたときに、トリガ信号を発生する（Ｓ２０１）。
【００９６】
すなわち、トリガ信号発生部１０２は、状態検出部１０４、ＴＬＢスラッシング検出回路１１２、キャッシュスラッシング検出回路１２１、割り込み信号検出部１４１およびバス監視回路１５０が、イベントを検出し、検出したことを示す信号が入力された時点で、トリガ信号を発生する。
【００９７】
次に、ダンプ制御部１０３は、トリガ信号発生部１０２がトリガ信号を発生した時点で、ダンプを実行する（Ｓ２０２）。すなわち、ダンプ制御部１０３は、トリガ信号発生部１０２がトリガ信号を発生した時点で、ダンプ情報をダンプし、ダンプ出力部１７０へ出力する。ダンプ出力部１７０は、入力されたダンプ情報を、例えば、ダンプ蓄積部１７１に出力する。
【００９８】
次に、ダンプ制御部１０３は、デバッグ対象のプログラムが実行中であるかを判断する（Ｓ２０３）。デバッグ対象のプログラムが実行中である場合（Ｓ２０３のＹｅｓの場合）、再度、ダンプ制御部１０３は、トリガ信号発生部１０２がトリガ信号を発生した時点で、ダンプを実行する。
【００９９】
なお、ダンプ制御部１０３は、デバッグ対象のプログラムが実行中でない場合（Ｓ２０３のＮｏの場合）、すなわち、デバッグ対象のプログラムがブレークポイントで停止している場合には、ダンプ処理を停止する。
【０１００】
以上のように、デバッグシステム１００はダンプ処理を行う。
【０１０１】
図６は、本発明の実施の形態におけるトリガ信号を決定する処理を説明するフローチャートである。
【０１０２】
まず、ダンプ制御部１０３は、トリガ信号を指定するユーザ操作があるかを受付部１８０に確認する（Ｓ３０１）。
【０１０３】
次に、ダンプ制御部１０３は、イベントとしてＴＬＢスラッシング状態を指定するよう指示があるかどうかを受付部１８０に確認する（Ｓ３０２）。受付部１８０にイベントとしてＴＬＢスラッシング状態を指定する指示がある場合には（Ｓ３０２のＹｅｓ）、ダンプ制御部１０３は、トリガ信号発生部１０２がＴＬＢスラッシング状態のイベントが検出された時点でトリガ信号を発生する設定をする。すなわち、ＴＬＢスラッシング状態のイベントに対応するトリガ信号発生部１０２が有するレジスタフラグの設定を行うことで、ＴＬＢのスラッシング状態の検出をトリガ信号とする設定を有効または無効にする（Ｓ３０３）。
【０１０４】
次に、ダンプ制御部１０３は、イベントとしてキャッシュスラッシング状態を指定するよう指示があるかどうかを受付部１８０に確認する（Ｓ３０４）。受付部１８０にイベントとしてキャッシュスラッシング状態を指定する指示がある場合には（Ｓ３０４のＹｅｓ）、ダンプ制御部１０３は、トリガ信号発生部１０２がキャッシュスラッシング状態のイベントが検出された時点でトリガ信号を発生する設定をする。すなわち、キャッシュスラッシング状態のイベントに対応するトリガ信号発生部１０２が有するレジスタフラグの設定を行うことで、キャッシュのスラッシング状態の検出をトリガ信号とする設定を有効または無効にする（Ｓ３０５）。
【０１０５】
次に、ダンプ制御部１０３は、イベントとして特定の命令をＣＰＵ１１０が実行中であることを指定するよう指示があるかどうかを受付部１８０に確認する（Ｓ３０６）。受付部１８０にイベントとして特定の命令をＣＰＵ１１０が実行中であることを指定する指示がある場合には（Ｓ３０６のＹｅｓ）、ダンプ制御部１０３は、トリガ信号発生部１０２が特定の命令をＣＰＵ１１０が実行中であることのイベントが検出された時点でトリガ信号を発生する設定をする。すなわち、特定の命令をＣＰＵ１１０が実行中であることのイベントに対応するトリガ信号発生部１０２が有するレジスタフラグの設定を行うことで、特定の命令をＣＰＵ１１０が実行中であることの検出をトリガ信号とする設定を有効または無効にする（Ｓ３０７）。
【０１０６】
次に、ダンプ制御部１０３は、イベントとしてＣＰＵ１１０のプログラムカウンタ（以下、ＰＣと記載。）が特定の範囲内であることを指定するよう指示があるかどうかを受付部１８０に確認する（Ｓ３０８）。受付部１８０にイベントとしてＣＰＵ１１０のＰＣが特定の範囲内であることを指定する指示がある場合には（Ｓ３０８のＹｅｓ）、ダンプ制御部１０３は、トリガ信号発生部１０２がＣＰＵ１１０のＰＣが特定の範囲内であることのイベントが検出された時点でトリガ信号を発生する設定をする。すなわち、ＣＰＵ１１０のＰＣが特定の範囲内であることのイベントに対応するトリガ信号発生部１０２が有するレジスタフラグの設定を行うことで、ＣＰＵ１１０のＰＣが特定の範囲内であることの検出をトリガ信号とする設定を有効または無効にする（Ｓ３０９）。
【０１０７】
次に、ダンプ制御部１０３は、イベントとして特定のループの繰り返しを指定するよう指示があるかどうかを受付部１８０に確認する（Ｓ３１０）。受付部１８０にイベントとして特定のループの繰り返しを指定する指示がある場合には（Ｓ３１０のＹｅｓ）、ダンプ制御部１０３は、トリガ信号発生部１０２が特定のループの繰り返しのイベントが検出された時点でトリガ信号を発生する設定をする。すなわち、特定のループの繰り返しのイベントに対応するトリガ信号発生部１０２が有するレジスタフラグの設定を行うことで、特定のループの繰り返しの検出をトリガ信号とする設定を有効または無効にする（Ｓ３１１）。
【０１０８】
次に、ダンプ制御部１０３は、イベントとして特定の割り込み信号を指定するよう指示があるかどうかを受付部１８０に確認する（Ｓ３１２）。受付部１８０にイベントとして特定の割り込み信号を指定する指示がある場合には（Ｓ３１２のＹｅｓ）、ダンプ制御部１０３は、トリガ信号発生部１０２が特定の割り込み信号のイベントが検出された時点でトリガ信号を発生する設定をする。すなわち、特定の割り込み信号のイベントに対応するトリガ信号発生部１０２が有するレジスタフラグの設定を行うことで、特定の割り込み信号の検出をトリガ信号とする設定を有効または無効にする（Ｓ３１３）。
【０１０９】
次に、ダンプ制御部１０３は、イベントとしてバスの動作異常を指定するよう指示があるかどうかを受付部１８０に確認する（Ｓ３１４）。受付部１８０にイベントとしてバスの動作異常を指定する指示がある場合には（Ｓ３１４のＹｅｓ）、ダンプ制御部１０３は、トリガ信号発生部１０２がバスの動作異常のイベントが検出された時点でトリガ信号を発生する設定をする。すなわち、バスの動作異常のイベントに対応するトリガ信号発生部１０２が有するレジスタフラグの設定を行うことで、バスの動作異常の検出をトリガ信号とする設定を有効または無効にする（Ｓ３１５）。
【０１１０】
以上のように、受付部１８０を介してユーザ操作によってトリガ信号を発生させるイベントが指定され、トリガ信号発生部１０２は、受付部１８０に従って、指定されたイベント検出に対応するトリガ信号の発生を決定することができる。
【０１１１】
図７は、本発明の実施の形態におけるデバッグ情報を表示する処理を説明するフローチャートである。
【０１１２】
まず、ダンプ制御部１０３は、表示を指定するユーザ操作があるかを受付部１８０に確認する（Ｓ４０１）。
【０１１３】
ここで、表示とは、図１または図２で示される、例えばモニターなどの表示装置２ｂに表示されることである。
【０１１４】
次に、ダンプ制御部１０３は、ＴＬＢスラッシング履歴を表示指定する指示があるかどうかを受付部１８０に確認する（Ｓ４０２）。受付部１８０にＴＬＢスラッシング履歴を表示指定する指示がある場合には（Ｓ４０２のＹｅｓ）、ダンプ制御部１０３は、ダンプ蓄積部１７１または不揮発メモリ１７３に蓄積されているダンプ情報の中で、ＴＬＢスラッシング履歴を表示装置に送る指示をする。表示装置は送られたＴＬＢスラッシング履歴を表示する（Ｓ４０３）。
【０１１５】
次に、ダンプ制御部１０３は、キャッシュスラッシング履歴を表示指定する指示があるかどうかを受付部１８０に確認する（Ｓ４０４）。受付部１８０にキャッシュスラッシング履歴を表示指定する指示がある場合には（Ｓ４０４のＹｅｓ）、ダンプ制御部１０３は、ダンプ蓄積部１７１または不揮発メモリ１７３に蓄積されているダンプ情報の中で、キャッシュスラッシング履歴を表示装置に送る指示をする。表示装置は送られたキャッシュスラッシング履歴を表示する（Ｓ４０５）。
【０１１６】
次に、ダンプ制御部１０３は、ダンプした外部メモリ１３０のスタック領域内容履歴を表示指定する指示があるかどうかを受付部１８０に確認する（Ｓ４０６）。受付部１８０にダンプした外部メモリ１３０のスタック領域内容履歴を表示指定する指示がある場合には（Ｓ４０６のＹｅｓ）、ダンプ制御部１０３は、ダンプ蓄積部１７１または不揮発メモリ１７３に蓄積されているダンプ情報の中で、ダンプした外部メモリ１３０のスタック領域内容履歴を表示装置に送る指示をする。表示装置は送られたダンプした外部メモリ１３０のスタック領域内容履歴を表示する（Ｓ４０７）。
【０１１７】
次に、ダンプ制御部１０３は、エラー情報履歴を表示指定する指示があるかどうかを受付部１８０に確認する（Ｓ４０８）。受付部１８０にエラー情報履歴を表示指定する指示がある場合には（Ｓ４０８のＹｅｓ）、ダンプ制御部１０３は、ダンプ蓄積部１７１または不揮発メモリ１７３に蓄積されているダンプ情報の中で、エラー情報履歴を表示装置に送る指示をする。表示装置は送られたエラー情報履歴を表示する（Ｓ４０９）。
【０１１８】
以上、受付部１８０を介してユーザ操作によって表示装置２ｂに表示する内容が指定され、ダンプ制御部１０３は、受付部１８０に従って、指定された表示内容に対応するダンプ情報を表示装置２ｂに表示させることができる。
【０１１９】
以上の構成から、プログラムの実行が停止される一回のプログラム実行で、時系列に沿ったスタック領域の内容をデバッグ情報として取得することができる。それにより、例えば時系列に沿ってスタックトップの情報から、複数の関数が連続的に実行される場合のプログラムの動作履歴や関数の引数、局所変数の値を調べることができ、プログラムが誤動作する場合を解析することができる。
【０１２０】
また、プログラムの実行が停止されるまでの一回のプログラム実行で、時系列に沿ってＣＰＵ１１０の状態を示す情報またはＣＰＵ１１０が検出したエラー情報をデバッグ情報として取得できる。それにより、複数のエラーが発生する場合、その順序および各エラー発生時のＣＰＵ１１０の状態を一度に調べることが可能になる。例えば、複数のシステムエラーが発生した場合でも、上述したようにシステムレジスタの履歴を取得でき、その順序関係を一度の実行で保存することができる。すなわち、プログラムのデバッグ効率を向上することができる。
【０１２１】
また、プログラムの実行が停止されるまでの一回のプログラム実行で、時系列に沿ってキャッシュメモリ１２２あるいはＴＬＢエントリの内容をデバッグ情報として取得できる。それにより、プログラム実行の時系列に沿ったキャッシュメモリ１２２あるいはＴＬＢエントリの使用状況を一度に調べることができる。例えば、キャッシュあるいはＴＬＢのスラッシング状態が発生した時点でのキャッシュやＴＬＢのエントリを調べることで、プログラムの高速実行を妨げている箇所を時系列に沿って調べることができる。
【０１２２】
また、プログラムの実行が停止されるまでの一回のプログラム実行で、性能劣化をもたらすキャッシュスラッシング状態がいつ起きているかの情報と、その時点でのプログラム実行装置の動作状態をデバッグ情報として取得できる。また、性能劣化をもたらすＴＬＢスラッシング状態がいつ起きているかの情報と、その時点でのプログラム実行装置の動作状態をデバッグ情報として取得できる。
【０１２３】
また、特定命令が実行された時点でのプログラム実行装置の動作状態および特定のプログラムカウンタの値が特定の範囲内である時点でのプログラム実行装置の動作状態をデバッグ情報として取得できる。このように、ダンプするタイミングを特定のプログラムカウンタの値が特定の範囲内である時点と限定することで、ダンプ情報蓄積部の容量の削減も可能になる。すなわち、特定範囲の特定命令の実行時のみデバッグ情報をダンプすることで、予めエラーとなる箇所の候補がわかっている場合に、外部記憶装置の使用量を抑えることができるのでより長時間に渡ってデバッグ情報の取得が可能となる。
【０１２４】
また、実行中のプログラムが特定のループ部分の実行を繰り返した場合に異常状態と判断してデバッグ情報をダンプすることにより、異常状態となるループの箇所が未知の場合でも、該当箇所でデバッグ情報を取得することが可能である。
【０１２５】
また、ＣＰＵが割り込みを検出する前の特定の割り込みが発生した時点やＣＰＵがバスエラー例外を検出する前のバスの動作異常を検出した時点でのプログラム実行装置の動作状態をデバッグ情報として取得できる。例えば、割り込み制御回路１４０が特定の複数の割り込みを受けた場合には、異常状態と判断してデバッグ情報を出力することにより、割り込み制御回路１４０の仕様に従ってＣＰＵが判別する状態以外にも異常状態として判断することが可能になり、ダンプする条件をより広くすることが可能である。バスの動作が異常であることを検出した場合には、デバッグ情報をダンプすることにより、ＣＰＵがバスエラーを検出するより以前の状態での情報をダンプすることで、より異常状態に近い、早い段階でのデバッグ情報の出力が可能となる。
【０１２６】
また、プログラム実行装置の動作状態を示す情報をデバッグ情報として取得後に、デバッグシステムへの電源供給が停止されても、不揮発メモリ１７３の情報は消えないので、取得したデバッグ情報を保存することができる。さらに、システム制御回路１６０がデバッグシステムへの電源供給が停止することで、不揮発メモリ１７３にデバッグ情報が書きこまれた後に、ＣＰＵ１１０以外のブロックから不揮発メモリ１７３にデータが書き込まれることを防ぐことができるので、より確実にデバッグ情報を保存することができる。
【０１２７】
また、受付部１８０を介してトリガ信号発生部１０２のトリガ発生をユーザ操作に基づいて、ユーザが所望する、例えば、キャッシュスラッシング発生などの所要のイベント発生時に設定することで、所要のイベント発生時でのプログラム実行装置の動作状態を示す情報をデバッグ情報として取得することができる。
【０１２８】
以上のように、プログラムの実行が停止されるまでの一回のプログラム実行で、プログラム実行中の所望のイベントが発生する複数の時点におけるプログラム実行装置の動作状態を示す情報をデバッグ情報として取得することができる。
【０１２９】
以上のように本発明の実施形態では、プログラムの実行が停止されるまでの一回のプログラム実行で、プログラム実行中の複数の時点におけるプログラム実行装置の動作状態を示す情報をデバッグ情報として取得することができる。それにより、デバッグ情報を効率よく取得できるデバッグ効率のよいデバッグシステムおよび方法を実現することができる。
【０１３０】
なお、図８は、デバッグシステム１００が利用可能なデバッグ対象となるデバッグＣＰＵを用いた組み込みシステムの回路基板２０２を一例として示す図である。
【０１３１】
図８に示すように、例えば、携帯電話２０３、セットトップボックス２０４、デジタルテレビ２０５および自動車２０７に搭載される車載端末２０６等に組み込むＣＰＵを用いた組み込みシステムの回路基板２０２をデバッグシステム１００のデバッグ対象としてもよい。
【０１３２】
また、本発明の実施の形態では、ＣＰＵ１１０、ＭＭＵ１１１、ＴＬＢスラッシング検出回路１１２、キャッシュ制御回路１２０、キャッシュスラッシング検出回路１２１、キャッシュメモリ１２２、外部メモリ１３０、およびバス監視回路１５０は、図１あるいは図２で示した、プログラム実行装置３あるいはプログラム実行装置６を構成するとしているが、これに限定されない。ＴＬＢスラッシング検出回路１１２、キャッシュ制御回路１２０、キャッシュスラッシング検出回路１２１、およびバス監視回路１５０がデバッグ制御回路１０１を含む、例えば、図１および図３のプログラムデバッグ装置２に構成されてもよい。また、デバッグシステム１００が同一チップに構成されていてもよく、例えば、図８で示した組み込みシステムと接続し外部メモリ１３０にデバッグ対象のプログラムを格納してプログラムを実行してもよい。すなわちデバッグシステム１００がプログラム実行装置６およびプログラムデバッグ装置２を兼用してもよい。
【０１３３】
以上、本発明のデバッグシステムおよび方法について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
【産業上の利用可能性】
【０１３４】
本発明は、デバッグシステムおよび方法に利用でき、特に、携帯電話、デジタルテレビ、車載端末等、ＣＰＵを用いた組み込みシステムを対象にデバッグを行うデバッグシステムおよび方法に利用することができる。
【図面の簡単な説明】
【０１３５】
【図１】本発明の実施の形態におけるプログラムデバッグシステム１の外観を示す図である。
【図２】本発明の実施の形態におけるプログラムデバッグシステム５の外観を示す図である。
【図３】本発明の実施の形態におけるデバッグシステムの構成を示すブロック図である。
【図４】本発明の実施の形態におけるデバッグ制御回路の構成を示すブロック図である。
【図５】本発明の実施の形態におけるデバッグシステムのダンプ処理を説明するフローチャートである。
【図６】本発明の実施の形態におけるトリガ信号を決定する処理を説明するフローチャートである。
【図７】本発明の実施の形態におけるデバッグ情報を表示する処理を説明するフローチャートである。
【図８】デバッグシステム２０１が利用可能なデバッグ対象となるデバッグＣＰＵを用いた組み込みシステムの回路基板２０２を一例として示す図である。
【符号の説明】
【０１３６】
１  プログラムデバッグシステム
２  プログラムデバッグ装置
２ａ  本体装置
２ｂ  表示装置
２ｃ  入力装置
３  プログラム実行装置
３ａ  本体装置
３ｂ  表示装置
３ｃ  入力装置
４  ＬＡＮケーブル
５  プログラムデバッグシステム
６  プログラム実行装置
７  接続ケーブル
１００  デバッグシステム
１０１  デバッグ制御回路
１０２  トリガ信号発生部
１０３  ダンプ制御部
１０４  状態検出部
１１０  ＣＰＵ
１１１  ＭＭＵ
１１２  ＴＬＢスラッシング検出回路
１２０  キャッシュ制御回路
１２１  キャッシュスラッシング検出回路
１２２  キャッシュメモリ
１３０  外部メモリ
１４０  割り込み制御回路
１４１  割り込み信号検出部
１５０  バス監視回路
１６０  システム制御回路
１７０  ダンプ出力部
１７１  ダンプ蓄積部
１７２  不揮発メモリ制御回路
１７３  不揮発メモリ
１８０  受付部
２０２  回路基板
２０３  携帯電話
２０４  セットトップボックス
２０５  デジタルテレビ
２０６  車載端末
２０７  自動車
Ｓ１０１、Ｓ１０５、Ｓ１０７、Ｓ１０９、Ｓ１１０、Ｓ１１９、Ｓ１２０、Ｓ１２１、Ｓ１２２  バス
Ｓ１０２、Ｓ１０３、Ｓ１０４、Ｓ１０６、Ｓ１０８、Ｓ１１１、Ｓ１１３、Ｓ１１４、Ｓ１１５、Ｓ１１６、Ｓ１１７、Ｓ１２３  信号線
【図１】
2009059005.tif 000003
【図２】
2009059005.tif 000004
【図３】
2009059005.tif 000005
【図４】
2009059005.tif 000006
【図５】
2009059005.tif 000007
【図６】
2009059005.tif 000008
【図７】
2009059005.tif 000009
【図８】
2009059005.tif 000010