(57)【要約】【課題】デバッグ属性情報に応じた必要なデバッグコードを出力し、ソフトウェアのデバッグの効率を向上させる情報処理装置、及び、ソフトウェアのデバッグ方法を提供すること。【解決手段】本発明にかかる情報処理装置は、デバッグの属性を表わすデバッグ属性情報が設定されたデバッグコードを含むプログラムを実行するものであって、デバッグコードを実行する際、デバッグコードに設定されたデバッグ属性情報に基づいて、デバッグコードの出力情報の出力先を決定する出力制御部を備える。【選択図】図２
2010039622.tif 000002
【特許請求の範囲】
【請求項１】
デバッグの属性を表わすデバッグ属性情報が設定されたデバッグコードを含むプログラムを実行する情報処理装置であって、
前記デバッグコードを実行する際、前記デバッグコードに設定されたデバッグ属性情報に基づいて、前記デバッグコードの出力情報の出力先を決定する出力制御部を備える、情報処理装置。
【請求項２】
前記出力制御部は、前記デバッグ属性情報が前記出力情報の出力を許可するためのデバッグ出力条件を満たす場合に、前記出力先を外部バスに決定する、請求項１に記載の情報処理装置。
【請求項３】
前記出力制御部は、前記デバッグ属性情報が前記デバッグ出力条件を満たさない場合に、前記出力先を内部バスに決定する、請求項２に記載の情報処理装置。
【請求項４】
前記デバッグ属性情報は、当該デバッグコードにおける優先度であり、
前記デバッグ出力条件は、前記出力情報の出力を許可する前記優先度の閾値を表わす情報であり、
前記出力制御部は、前記デバッグ属性情報が前記デバッグ出力条件を超える優先度であるか否かにより、前記出力先を決定する請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記デバッグ属性情報は、当該デバッグコードの出力情報の出力先である論理アドレスに関する情報であり、
前記デバッグ出力条件は、前記出力情報の出力を許可する前記出力先の論理アドレスの範囲に関するアドレス情報であり、かつ、複数の前記デバッグ属性情報の一部であり、
前記出力制御部は、前記デバッグ属性情報が前記アドレス情報の範囲内であるか否かにより、前記出力先を決定する請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項６】
前記デバッグ属性情報は、当該デバッグコードにおける種類を識別するデバッグ種類情報であり、
前記デバッグ出力条件は、前記出力情報の出力を許可する前記デバッグ種類情報であり、
前記出力制御部は、前記デバッグ属性情報が前記デバッグ出力条件に該当するか否かにより、前記出力先を決定する請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項７】
前記デバッグ出力条件は、複数の前記デバッグ種類情報のそれぞれが前記出力先と対応付けられており、
前記出力制御部は、前記デバッグコードに設定されたデバッグ種類情報に応じて、当該デバッグ種類情報と対応付けられた出力先に決定する請求項６に記載の情報処理装置。
【請求項８】
前記デバッグ出力条件を定めるデバッグ出力条件情報を格納するレジスタをさらに備え、
前記出力制御部は、前記レジスタに格納されたデバッグ出力条件情報に基づいて、前記出力先を決定する、請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
デバッグの属性を表わすデバッグ属性情報が設定されたデバッグコードを含むプログラムを実行する情報処理装置におけるソフトウェアのデバッグ方法であって、
前記デバッグコードを実行する際、前記デバッグコードに設定されたデバッグ属性情報を抽出するステップと、
抽出されたデバッグ属性情報に基づいて、前記デバッグコードの出力情報の出力先を決定する決定ステップと、
決定された出力先に前記出力情報を出力するステップと、を備えるデバッグ方法。
【請求項１０】
前記決定ステップは、前記デバッグ属性情報が前記出力情報の出力を許可するためのデバッグ出力条件を満たす場合に、前記出力先を外部バスに決定する、請求項９に記載のデバッグ方法。
【請求項１１】
前記決定ステップは、前記デバッグ属性情報が前記デバッグ出力条件を満たさない場合に、前記出力先を内部バスに決定する、請求項１０に記載のデバッグ方法。
【請求項１２】
前記デバッグ属性情報は、当該デバッグコードにおける優先度であり、
前記デバッグ出力条件は、前記出力情報の出力を許可する前記優先度の閾値を表わす情報であり、
前記決定ステップは、前記デバッグ属性情報が前記デバッグ出力条件を超える優先度であるか否かにより、前記出力先を決定する請求項９乃至１１のいずれか１項に記載のデバッグ方法。
【請求項１３】
前記デバッグ属性情報は、当該デバッグコードの出力情報の出力先である論理アドレスに関する情報であり、
前記デバッグ出力条件は、前記出力情報の出力を許可する前記出力先の論理アドレスの範囲に関する情報であり、
前記決定ステップは、前記デバッグ属性情報が前記デバッグ出力条件の範囲内であるか否かにより、前記出力先を決定する請求項９乃至１１のいずれか１項に記載のデバッグ方法。
【請求項１４】
前記デバッグ属性情報は、当該デバッグコードにおける種類を識別するデバッグ種類情報であり、
前記デバッグ出力条件は、前記出力情報の出力を許可する前記デバッグ種類情報であり、
前記決定ステップは、前記デバッグ属性情報が前記デバッグ出力条件に該当するか否かにより、前記出力先を決定する請求項９乃至１１のいずれか１項に記載のデバッグ方法。
【請求項１５】
前記デバッグ出力条件は、複数の前記デバッグ種類情報のそれぞれが前記出力先と対応付けられており、
前記決定ステップは、前記デバッグコードに設定されたデバッグ種類情報に応じて、当該デバッグ種類情報と対応付けられた出力先に決定する請求項１４に記載のデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、及びソフトウェアのデバッグ方法に関し、特に、デバッグの属性を表わすデバッグ属性情報が設定されたデバッグコードを含むプログラムを実行する情報処理装置、及びソフトウェアのデバッグ方法に関する。
【背景技術】
【０００２】
通信機器の分野では、基地局等の通信対象との通信処理タイミングが重要である。そのため、通信機器等の組み込みシステムにおけるソフトウェアのバグを解析する際に、ターゲットシステムの処理を止めてデバッグを行うことは、ほとんどの場合できない。そこで、通信処理を実施後にログでその内容を確認し、デバッグを行うことが一般的である。
【０００３】
そして、上述したソフトウェアのデバッグには、バスモニタの利用が進んでいる。組み込みシステムにおけるソフトウェアのデバッグをバスモニタで行う場合、特定のメモリへのアクセスをデバッグ情報のデータと看做してデータを抽出することで、必要なデバッグ情報を得ることが出来る。
【０００４】
しかし、デバッグ用の特定メモリへの書き込み処理（ダミーライト）は、メインメモリアクセスや外部バスアクセスなどのボトルネックにより、ターゲットの動作タイミングが変化し、動作に影響を与えてしまうことがある。また、製品出荷時にデバッグ用コードを削除する必要があるため、ソフトウェアのメンテナンス性を低下させてしまっている。
【０００５】
尚、関連する技術として、特許文献１に、読出し専用メモリに書き込まれたプログラムをデバッグするためのマイクロプログラムのデバッグ方式が開示されている。特許文献１に開示されたデバッグ方式は、予めストップ命令及びデバッグ命令という割り込み処理と、当該割り込み処理を行うためのプログラム上のアドレスとを設定しておき、当該プログラムの実行時に、当該アドレスを処理する際に、割り込み処理を行わせるものである。これにより、デバッグ時においてもプログラムの処理速度が通常動作時と変わらないようにすることができる。
【０００６】
図８は、特許文献１にかかるマイクロプログラムのデバッグ方式に関するハードウェア構成の一例を示したブロック図である。図８に示すハードウェアは、アドレスレジスタ８１と、モード決定レジスタ８２と、プロセッサ８３と、アドレスデコード部８４と、読出専用メモリ８５と、マイクロ命令格納レジスタ８６とを備える。
【０００７】
アドレスレジスタ８１には、デバッグ時にアドレスストップ命令を実行するためのストップアドレスが格納されている。マイクロ命令格納レジスタ８６には、ジャンプ命令が格納されている。
【０００８】
アドレスデコード部８４は、アドレスレジスタ８１及びモード決定レジスタ８２を参照する。そして、アドレスデコード部８４は、デバッグモード時に、プロセッサ８３がアドレスレジスタ８１に格納されたアドレスと同じアドレスにアクセスした場合、読出専用メモリ８５へアクセスせずに、マイクロ命令格納レジスタ８６へアクセスする。また、アドレスデコード部８４は、通常モード時に、常時、読出専用メモリ８５へアクセスする。
【特許文献１】特開平５−１００８９３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ところで、本願の出願人は、デバッグコードを含むプログラムを実行する際に、デバッグ設定に応じて、当該デバッグコードの実行結果の出力先を内部バスか外部バスへ切り替える情報処理装置及びソフトウェアのデバッグ方法に関する発明を出願済みである（平成１９年１２月２８日出願の特願２００７−３３８７２５号）。
【００１０】
しかしながら、特願２００７−３３８７２５号には、デバッグ設定に応じて、全てのデバッグコードの実行結果を外部バスへ出力するか否かという制御しかできず、デバッグの効率が悪いという問題点がある。
【００１１】
すなわち、特願２００７−３３８７２５号にかかる情報処理装置が備えるＣＰＵ（Central Processing Unit）は、判定レジスタに格納されたデバッグ設定の有効無効を示す情報のみにより、出力先を切り替えている。そして、デバッグ設定が有効の場合、デバッグコードの実行結果の出力先を外部バスとすることで、バスモニタにより実行結果を取得することができ、デバッグを可能としている。また、デバッグ設定が無効の場合、デバッグコードの実行結果の出力先を内部バスとすることで、当該ＣＰＵの内部レジスタへ出力するなどして、通常動作におけるデバッグコードの処理による処理パフォーマンスの低下を防ぐことができるものである。
【００１２】
しかし、ターゲットプログラムをデバッグする場合、デバッグの進行状況やデバッグコードが出力する結果の性質によっては、必ずしも、全てのデバッグコードの実行結果を外部バスへ出力しなくてもよい場合がある。それは、デバッグ時においては、デバッグコードによって、常に必要とされる重要な情報を出力するものと、特定の場合のみに必要とされる情報を出力するものとが存在するからである。
【００１３】
例えば、ステートマシンの状態遷移の結果や、動作の不具合が発生した場合にその不具合が発生した動作を行った関数の結果等は、デバッグ時においては、常に必要とされる重要な情報と言える。一方、特定の演算に使用する変数の値等は、特定の場合のみに必要とされる情報であり、デバッグ時において必ずしも必要でない情報と言える。
【００１４】
ところが、特願２００７−３３８７２５号のように、デバッグ設定が有効な場合に、全てのデバッグコードの出力結果を外部バスへ出力することにより、当該外部バスを監視するバスモニタは、必要以上の情報を取得することとなり、重要な情報が埋もれてしまう場合がある。そのため、デバッグの効率が著しく低下することとなる。
【課題を解決するための手段】
【００１５】
本発明にかかる情報処理装置は、デバッグの属性を表わすデバッグ属性情報が設定されたデバッグコードを含むプログラムを実行するものであって、前記デバッグコードを実行する際、前記デバッグコードに設定されたデバッグ属性情報に基づいて、前記デバッグコードの出力情報の出力先を決定する出力制御部を備える。
【００１６】
本発明にかかるソフトウェアのデバッグ方法は、デバッグの属性を表わすデバッグ属性情報が設定されたデバッグコードを含むプログラムを実行する情報処理装置におけるソフトウェアのデバッグ方法であって、前記デバッグコードを実行する際、前記デバッグコードに設定されたデバッグ属性情報を抽出するステップと、抽出されたデバッグ属性情報に基づいて、前記デバッグコードの出力情報の出力先を決定する決定ステップと、決定された出力先に前記出力情報を出力するステップと、を備える。
【００１７】
上述した本発明にかかる情報処理装置及びソフトウェアのデバッグ方法によれば、全てのデバッグコードの出力情報を同一の出力先へ出力することがなく、デバッグコードごとに設定されたデバッグ属性情報に基づいて、適切な出力先を決定することができる。そのため、デバッグの状況に応じて、必要なデバッグコードにおける出力情報のみを取捨選択して外部バスへ出力することも可能となり、デバッグを効率的に行うことができる。
【発明の効果】
【００１８】
本発明により、デバッグ属性情報に応じた必要なデバッグコードを出力し、ソフトウェアのデバッグの効率を向上させる情報処理装置、及び、当該情報処理装置におけるソフトウェアのデバッグ方法を提供することができる。
【発明を実施するための最良の形態】
【００１９】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００２０】
＜発明の実施の形態１＞
図１は、本発明の実施の形態１にかかる情報処理装置１及びデバッグ方法が適用されるシステムの主要な部分の構成を示すブロック図である。情報処理装置１は、通信機器などの組み込み機器に用いられる組み込みソフトウェアが動作可能なものである。情報処理装置１は、ＣＰＵ（Central Processing Unit）１１と、メインメモリ１２と、外部バス１３と、バスモニタインタフェース（Ｉ／Ｆ）１４、デバッグ設定端子１５とを含む。
【００２１】
ＣＰＵ１１は、外部バス１３を介して、メインメモリ１２、バスモニタＩ／Ｆ１４その他と接続され、外部のＩ／Ｏポートを介してデバッグ設定端子１５と接続されている。ＣＰＵ１１は、命令フェッチアクセスによってメインメモリ１２から命令を読み出し、読み出した命令をデコードし、デコードされた命令に応じた処理、例えば、算術演算及び論理演算等の演算処理、並びに、メインメモリ１２及びその他外部バス１３に接続されたペリフェラル（周辺機器）に対するリードアクセス及びライトアクセスを実行する。ＣＰＵ１１は、本発明の実施の形態１でデバッグ対象となるデバッグコードが記載された実行形式プログラムの命令を実行する。また、ＣＰＵ１１は、起動時にデバッグ設定端子１５から端子の値を読み出すことができる。さらに、ＣＰＵ１１は、内部の論理アドレス空間のメモリマップにて、予めデバッグ情報の出力用の特定のメモリ領域（ダミーライト領域）が定義されているものとする。
【００２２】
また、上述したデバッグコードは、当該デバッグコードに記載されたデバッグ処理の属性を表わすデバッグ属性情報が設定されている。当該デバッグコードには、デバッグ属性情報として、実行形式プログラムにおけるデバッグに関する優先度であるプライオリティ値が設定されている。プライオリティ値とは、当該デバッグコードの出力情報が、デバッグを行うにあたりどの程度重要なのかを示す値、すなわち、当該デバッグコードをどの程度、外部に出力してモニタしておかなければならないかを示す値である。
【００２３】
例えば、ステートマシンの状態遷移の結果を出力するデバッグコードや、実行結果のエラーが発生した場合にそのエラーが発生した動作を行った関数を出力するデバッグコードは、その実行結果を常に外部に出力してログを取得できるようにしておく必要性が高い。そのため、このような重要なデバッグコードにおけるプライオリティ値は、高く設定される。逆に、常時、デバッグコードの出力を外部に出力する必要がないデバッグコード、例えば、特定の演算に使用する変数の値を出力するデバッグコードには、上述した重要なデバッグコードに対するプライオリティ値より低いプライオリティ値が設定される。
【００２４】
尚、プライオリティ値は、少なくとも２種類の値のいずれかであればよい。また、プライオリティ値は、３種類以上の値のいずれかであってもよい。例えば、プライオリティ値が、"０"，"１"，"２"の３種類である場合、プライオリティ値の重要度は、数値が大きいほど高くなるものとする。
【００２５】
また、上述したデバッグコードは、当該デバッグコードの実行結果であるデバッグ情報（出力情報）をダミーライト領域へ書き込む命令であるとする。すなわち、当該出力情報の書込先アドレスにダミーライト領域が指定されているものである。
【００２６】
メインメモリ１２は、外部バス１３を介して、ＣＰＵ１１、バスモニタＩ／Ｆ１４等と接続されている。メインメモリ１２は、ＣＰＵ１１に読み出されて実行される実行形式プログラムを格納するための命令コード格納領域、並びに実行形式プログラムによって使用されるデータを格納するためのデータ格納領域として使用される。つまり、メインメモリ１２は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、フラッシュメモリ等の組合せである。
【００２７】
外部バス１３は、アドレスバス及びデータバスの総称である。バスモニタＩ／Ｆ１４は、外部バス１３を介して、ＣＰＵ１１、メインメモリ１２等と接続されている。また、バスモニタＩ／Ｆ１４は、バスモニタ２との接続インタフェースであり、外部バス１３に流れるデータを取得し、バスモニタ２へ送ることができる。
【００２８】
デバッグ設定端子１５は、情報処理装置１の外部に取り付けられた端子であり、外部から設定可能である。例えば、デバッグ設定端子１５は、テスト評価用のボードに設けられた端子である。その場合、デバッグ設定端子１５は、ターゲットプログラムのデバッグを行う者から、端末３のデバッガ等を介して、ＣＰＵ１１が上述したデバッグコードに設定されたプライオリティ値と比較する閾値の入力を受け付け、当該閾値の設定を反映するようにしてもよい。または、デバッグ設定端子１５は、切り替えスイッチであり、上述したソフトウェア設計者により、当該ボード上の切り替えスイッチの設定を受け付けるようにしてもよい。これにより、ＣＰＵ１１は、デバッグ設定端子１５に設定された閾値に基づいて、動作をすることができる。
【００２９】
バスモニタ２は、バスモニタＩ／Ｆ１４と接続され、情報処理装置１の外部バス１３を監視し、バスモニタＩ／Ｆ１４を経由して外部バス１３に流れるデータを取得し、表示する装置である。ここで、バスモニタ２は、ＣＰＵ１１のダミーライト領域へ出力され、外部バス１３に流れるデータを取得できるように設定済みとする。これにより、バスモニタ２は、デバッグ情報を取得することができる。また、バスモニタ２は、端末３と接続され、取得したデータを端末３へ送ることができる。
【００３０】
端末３は、バスモニタ２と接続され、バスモニタ２から送られる外部バス１３に流れるデータを取得し、画面に表示するものである。端末３は、一般的なコンピュータシステムであればよく、例えば、パーソナルコンピュータであればよい。
【００３１】
つまり、本発明の実施の形態１にかかる情報処理装置１に格納されたソフトウェアのデバッグを行う者は、デバッグ設定端子１５にデバッグコードのプライオリティ値の閾値を設定した上で、実行形式プログラムを実行することにより、デバッグ情報がバスモニタ２を通じて、端末３に表示され、デバッグ情報の確認をすることができる。
【００３２】
図２は、本発明の実施の形態１にかかる情報処理装置１の構成の概要を示すブロック図である。ＣＰＵ１１は、命令実行部１１１と、デバッグプライオリティ判定レジスタ１１２と、内部レジスタ１１３と、出力制御部１１４と、内部バス１１５とを含む。尚、図１と同様のものについては同一の符号を付けており、詳細な説明は省略する。
【００３３】
命令実行部１１１は、メインメモリ１２から命令を読み出し、命令レジスタ（不図示）へ格納し、読み出した命令をデコードし、命令に応じた処理を実行する。このとき、命令実行部１１１は、命令に指定された論理アドレスに基づき動作をするが、メインメモリ１２やその他ペリフェラルへのアクセスが発生する場合には、命令及び論理アドレスを出力制御部１１４へ供給する。命令実行部１１１は、出力制御部１１４により論理アドレスから変換された物理アドレス宛へ、外部バス１３を介して、メインメモリ１２やその他ペリフェラルに対するリードアクセス及びライトアクセスを実行する。
【００３４】
デバッグプライオリティ判定レジスタ１１２は、出力情報の出力を許可するためのデバッグ出力条件であるプライオリティ値の閾値を格納するレジスタである。当該閾値は、例えば、ｂｉｔ０をプライオリティ０に、また、ｂｉｔ１をプライオリティ１に対応させる。又は、当該閾値は、プライオリティ値の定義が３種類以上の場合、複数桁のｂｉｔにより階層的に定義してもよい。また、デバッグプライオリティ判定レジスタ１１２は、ＣＰＵ１１の起動時にデバッグ設定端子１５の値に応じて、値が格納される。
【００３５】
出力制御部１１４は、命令実行部１１１から送られる論理アドレスを物理アドレスへ変換する機構である。そして、出力制御部１１４は、命令実行部１１１から送られる論理アドレスが、ダミーライト領域であるかを判定し、ダミーライト領域へのアクセスである場合、物理アドレスを決定する。出力制御部１１４は、アクセス設定のバスを切り替えることで、物理アドレスを決定する。具体的には、出力制御部１１４は、命令実行部１１１から送られる命令に含まれるプライオリティ値を抽出し、また、デバッグプライオリティ判定レジスタ１１２から閾値を取得し、当該プライオリティ値と閾値とを比較して、当該プライオリティ値が閾値より大きい場合、アクセス設定を外部バス１３へ、当該プライオリティ値が閾値未満である場合、アクセス設定を内部バス１１５へ切り替えを行う。
【００３６】
内部レジスタ１１３は、内部バス１１５を介して、出力制御部１１４と接続されている。内部レジスタ１１３は、ＣＰＵ１１内に設けられた高速な記憶装置であり、例えば、キャッシュメモリである。内部レジスタ１１３には、使用頻度の高いデータが格納される。また、内部レジスタ１１３は、ダミーライト領域へのアクセス用領域を備えているものとする。内部バス１１５は、内部レジスタ１１３及び出力制御部１１４等に接続され、アドレスバス及びデータバスの総称である。
【００３７】
図３は、本発明の実施の形態１にかかるソフトウェアのデバッグ方法処理の概要を示すフローチャート図である。まず、ＣＰＵ１１の命令実行部１１１は、メインメモリ１２から命令を読み出し、命令レジスタへ格納する（Ｓ１１）。このとき取得される命令は、デバッグコードやデバッグコード以外の通常の処理コードが含まれる。
【００３８】
次に、命令実行部１１１は、命令レジスタに格納された命令をデコードする（Ｓ１２）。このとき、命令実行部１１１は、デコードされた命令を出力制御部１１４へ通知する。ここで、デコードされた命令がデバッグコードである場合、デコードされた命令には、プライオリティ値及びダミーライト領域が指定された書込先アドレスが含まれる。尚、命令実行部１１１における命令のデコードその他の処理は、公知なものであるため、詳細な説明は省略する。
【００３９】
その後、出力制御部１１４は、デコードされた命令の書込先アドレスがダミーライト領域であるか否かを判定する（Ｓ１３）。具体的には、出力制御部１１４は、命令実行部１１１から通知されたデコードされた命令に含まれる書込先アドレスを抽出する。そして、出力制御部１１４は、当該書込先アドレスが予めメモリマップにダミーライト領域として定義された論理アドレスに含まれるか否かを判定する。
【００４０】
ダミーライト領域であると判定された場合、ステップＳ１４へ進み、出力制御部１１４は、出力制御処理を実行する（Ｓ１４）。出力制御処理の詳細は、図４にて後述する。また、ステップＳ１３において、ダミーライト領域でないと判定された場合、出力制御部１１４は処理を終了する。または、ステップＳ１１へ戻り、命令実行部１１１は、次の命令をメインメモリ１２から読み出してもよい。
【００４１】
図４は、本発明の実施の形態１にかかる出力制御処理を示すフローチャート図である。まず、出力制御部１１４は、デバッグコードに設定されたプライオリティ値を抽出する（Ｓ１４１）。具体的には、出力制御部１１４は、命令実行部１１１から通知されたデコードされた命令に含まれるプライオリティ値を抽出する。次に、出力制御部１１４は、デバッグプライオリティ判定レジスタ１１２から閾値を取得する（Ｓ１４２）。
【００４２】
そして、出力制御部１１４は、プライオリティ値が閾値より大きいか否かを判定する（Ｓ１４３）。プライオリティ値が閾値より大きい場合、出力制御部１１４は、当該デコードされた命令の実行結果である出力情報を外部バスへ出力する（Ｓ１４４）。具体的には、出力制御部１１４は、外部バス１３へアクセス設定する。ここで、当該デコードされた命令は、書込先アドレスがダミーライト領域であるためデバッグコードである。そして、命令実行部１１１により当該デバッグコードが実行された結果の出力情報は、外部バス１３を介してメインメモリ１２又はその他ペリフェラルへ書き込まれ、同時に、バスモニタ２にて取得可能となる。
【００４３】
また、ステップＳ１４３において、プライオリティ値が閾値未満である場合、出力制御部１１４は、当該出力情報を内部バス１１５へ出力する（Ｓ１４５）。具体的には、出力制御部１１４は、内部バス１１５へアクセス設定する。そして、命令実行部１１１により当該デバッグコードが実行された結果の出力情報は、内部バス１１５を介して、内部レジスタ１１３へ書き込まれる。
【００４４】
これにより、バスモニタ２は、デバッグを行わない通常動作時、又は、当該デバッグコードのプライオリティ値を閾値未満に設定されていた場合、当該デバッグコードの出力情報を取得不可能となる。また、このとき、内部バス１１５を介した内部レジスタ１１３への書き込み処理は、外部バス１３を介したＣＰＵ１１外部への出力と比べ、処理の負荷は無視できる。尚、このとき、書き込まれる内部レジスタ１１３の領域は、ダミーライト領域専用の領域であり、ステップＳ１４５による書き込みによって、ＣＰＵ１１の他の動作には影響は与えない。
【００４５】
図５は、本発明の実施の形態１にかかるデバッグ方法の概念図である。メインメモリ１２は、デバッグコード１２１を格納し、一部の領域にダミーライト領域１２２が定義されている。デバッグコード１２１は、プライオリティ値及び書込先アドレスが設定されている。そして、デバッグコード１２１における書込先アドレスは、ダミーライト領域１２２が設定されている。また、ダミーライト領域１２２に含まれる出力情報１２３、及び内部レジスタ１１３に含まれる出力情報１２４は、共に、デバッグコード１２１の実行結果である出力情報である。尚、出力情報１２３及び出力情報１２４は、便宜上、同一図に記載しているが、出力制御部１１４の判定結果により、いずれか一方のみが書き込まれるものであり、同時に存在するものではない。また、ＣＰＵ１１は、図２の構成に加え、命令レジスタ１１６を図示する。尚、図５について、図１、図２と重複する内容については、説明を省略する。以下は、本発明の実施の形態にかかるＣＰＵ１１によりデバッグコード１２１が実行される流れを図５を中心に適宜、図３及び図４を参照して説明する。
【００４６】
まず、ＣＰＵ１１の命令実行部１１１は、メインメモリ１２からデバッグコード１２１を読み出し、命令レジスタ１１６へ格納する（Ｓ１１）。次に、命令実行部１１１は、命令レジスタ１１６から命令を読み出し、当該命令をデコードする（Ｓ１２）。そして、命令実行部１１１は、デコードされた命令を出力制御部１１４へ通知し、出力制御部１１４は、当該命令に含まれる書込先アドレスを抽出する（Ｓ１３）。ここでは、当該書込先アドレスは、ダミーライト領域であると判定される。そして、出力制御部１１４は、当該命令からプライオリティ値を抽出（Ｓ１４１）し、デバッグプライオリティ判定レジスタ１１２から閾値を取得する（Ｓ１４２）。
【００４７】
そして、出力制御部１１４は、抽出されたプライオリティ値と閾値とを比較する（Ｓ１４３）。このとき、プライオリティ値がデバッグプライオリティ判定レジスタ１１２に格納された閾値より大きい場合、ダミーライト領域１２２に出力情報１２３が書き込まれる（Ｓ１４４）。また、プライオリティ値が閾値未満である場合、内部レジスタ１１３に出力情報１２４が書き込まれる（Ｓ１４５）。
【００４８】
以上のことから、本発明の実施の形態１にかかる情報処理装置１及びデバッグ方法により、デバッグコードに設定されたデバッグ属性情報であるプライオリティ値に応じて、デバッグコードの実行結果である出力情報の出力先を制御することができる。つまり、デバッグを行う者は、デバッグ設定端子の設定でユーザがログ出力したいデバッグ用コードを選択することができる。これにより、必要なデバッグコードの出力情報のみをバスモニタ等で監視することができ、不必要な出力情報を省くことができるため、デバッグの効率を向上させることができる。
【００４９】
また、上述した特願２００７−３３８７２５号では、デバッグ時にデバッグ設定端子の値が有効か無効かにより、一律にすべてのデバッグコードの実行結果を内部レジスタ又は外部に出力されるものであり、一部のデバッグコードの実行結果を外部に出力することができず、デバッグの効率化が図れなかった。
【００５０】
それに対し、本発明の実施の形態１では、デバッグの状況に応じて、デバッグ設定端子１５に入力される閾値の値が変更されることにより、出力を許可するデバッグコードを変更することができる。例えば、デバッグ設定端子１５を介してＣＰＵ１１に入力される閾値を低くすることで、外部のバスモニタに出力情報を出力させたいデバッグコードの数を増やすことができる。
【００５１】
また、本発明の実施の形態１では、ダミーライト書き込み先を内部レジスタ１１３とすることで、外部バスアクセスによるオーバーヘッドをなくし、デバッグ用コードが入ったままでも通常時とほぼ同様の動作を保障することができる。これにより、デバッグ用コードを削除することなく、正式コードとしてリリースすることが可能となる。
【００５２】
＜発明の実施の形態２＞
本発明の実施の形態２では、本発明の実施の形態１に変更を加え、出力を許可するダミーライト領域の範囲を制限することにより、デバッグコードの出力情報の外部出力を制御するものである。
【００５３】
図６は、本発明の実施の形態２にかかる情報処理装置１ａの構成の概要を示すブロック図である。尚、図６において、図２と同様の構成については、同一の符号を付け、説明は省略する。
【００５４】
図６において、図２のＣＰＵ１１がＣＰＵ１１ａに、図２のデバッグ設定端子１５がデバッグ設定端子１５ａに置き換わったものである。また、ＣＰＵ１１ａが備えるデバッグアドレス判定レジスタ１１２ａは、図２のデバッグプライオリティ判定レジスタ１１２とは異なり、出力情報の出力を許可するためのデバッグ出力条件である論理アドレスの範囲であるアドレス情報を格納するレジスタである。また、当該アドレス情報は、ダミーライト領域のうち一部の範囲を示すものである。言い換えれば、当該アドレス情報は、複数のデバッグコードに設定された複数のデバッグ属性情報の一部分である。そのため、本発明の実施の形態２で対象とする複数のデバッグコードには、ダミーライト領域のうち、それぞれ異なる書込先アドレスが設定されたものとなる。例えば、ダミーライト領域が論理アドレスである０ｘ００００−０ｘ１０００、及び、０ｘ１０００−０ｘ２０００と定義されている場合、当該アドレス情報は、ｂｉｔ０を０ｘ００００−０ｘ１０００、ｂｉｔ１を０ｘ１０００−０ｘ２０００のアドレスに対応しているものとする。また、デバッグアドレス判定レジスタ１１２ａは、ＣＰＵ１１ａの起動時にデバッグ設定端子１５ａの値に応じて、値が格納される。
【００５５】
また、ＣＰＵ１１ａが備える出力制御部１１４ａは、図２の出力制御部１１４とは異なり、命令実行部１１１から送られる命令に含まれる書込先アドレスを抽出し、また、デバッグアドレス判定レジスタ１１２ａから出力条件であるアドレス情報を取得し、当該書込先アドレスとアドレス情報とを比較して、当該書込先アドレスがアドレス情報に含まれる場合、アクセス設定を外部バス１３へ、当該書込先アドレスがアドレス情報に含まれない場合、アクセス設定を内部バス１１５へ切り替えを行う。
【００５６】
また、デバッグ設定端子１５ａは、図２のデバッグ設定端子１５とは異なり、上述したアドレス情報の値が設定される。例えば、アドレス情報の値は、ダミーライト領域の論理アドレスが複数の範囲に分割され、それぞれ異なるｂｉｔに対応付けられた値である。
【００５７】
図７は、本発明の実施の形態２にかかる出力制御処理を示すフローチャート図である。まず、出力制御部１１４ａは、デバッグコードに設定された書込先アドレスを抽出する（Ｓ２４１）。具体的には、出力制御部１１４ａは、命令実行部１１１から通知されたデコードされた命令に含まれる書込先の論理アドレスを抽出する。次に、出力制御部１１４ａは、デバッグアドレス判定レジスタ１１２ａからアドレス情報を取得する（Ｓ２４２）。
【００５８】
そして、出力制御部１１４ａは、書込先アドレスがアドレス情報に含まれるか否かを判定する（Ｓ２４３）。書込先アドレスがアドレス情報に含まれている場合、出力制御部１１４ａは、当該デコードされた命令の実行結果である出力情報を外部バスへ出力する（Ｓ２４４）。具体的には、出力制御部１１４ａは、外部バス１３へアクセス設定する。ここで、当該デコードされた命令は、書込先アドレスがダミーライト領域であるためデバッグコードである。そして、命令実行部１１１により当該デバッグコードが実行された結果の出力情報は、外部バス１３を介してメインメモリ１２又はその他ペリフェラルへ書き込まれ、同時に、バスモニタ２にて取得可能となる。
【００５９】
また、ステップＳ２４３において、書込先アドレスがアドレス情報に含まれていない場合、出力制御部１１４ａは、当該出力情報を内部バスへ出力する（Ｓ２４５）。具体的には、出力制御部１１４ａは、内部バス１１５へアクセス設定する。そして、命令実行部１１１により当該デバッグコードが実行された結果の出力情報は、内部バス１１５を介して、内部レジスタ１１３へ書き込まれる。
【００６０】
例えば、ターゲットプログラムの前半部分と後半部分とで、デバッグコードの実行結果の書込先アドレスを異なるようにすることができる。または、ターゲットプログラムのある変数の値を出力するデバッグコードについては、特定の書込先アドレスを設定するようにしてもよい。
【００６１】
これにより、ターゲットプログラムにデバッグコードを記述する際、予め、デバッグコードの内容に応じて、複数の異なる論理アドレスを書込先アドレスとして設定しておくことで、デバッグ時に、書込先アドレスごとにバスモニタ２への出力制御を行うことができる。そのため、デバッグを効率的に行うことができる。
【００６２】
＜その他の発明の実施の形態＞
尚、本発明において、発明の実施の形態１及び発明の実施の形態２の機能を両方備えていても良い。つまり、本発明にかかるＣＰＵは、デバッグプライオリティ判定レジスタ１１２及びデバッグアドレス判定レジスタ１１２ａの両方を備えていても良い。これにより、例えば、プライオリティ値の優先度が最大である場合であっても、書込先アドレスによっては、出力を制御することが可能となる。
【００６３】
具体的には、当該ＣＰＵに備える出力制御部により、次のような処理を行えばよい。まず、当該出力制御部は、ステップＳ１４１及びＳ２４１を実行することで、デバッグコードに設定されたプライオリティ値及び書込先アドレスを抽出する。次に、当該出力制御部は、ステップＳ１４２及びＳ２４２を実行することで、デバッグプライオリティ判定レジスタ１１２及びデバッグアドレス判定レジスタ１１２ａから閾値及びアドレス情報を取得する。そして、当該出力制御部は、ステップＳ１４３で抽出されたプライオリティ値が閾値より大きく、かつ、ステップＳ２４３で抽出された書込先アドレスがアドレス情報の範囲内である場合に、出力情報を外部バスへ出力するようにすればよい。これにより、ソフトウェアのデバッグを行う者は、よりきめ細かなデバッグコードの出力情報の制御を行うことができ、デバッグの効率をさらに向上させることができる。
【００６４】
尚、上述した図４のステップＳ１４１及びＳ１４２の処理順序は、これに限定されない。同様に、上述した図７のステップＳ２４１及びＳ２４２の処理順序は、これに限定されない。
【００６５】
尚、本発明の実施の形態１にかかるＣＰＵ１１によるデバッグ設定端子１５の設定値の読み込み処理は、ＣＰＵ１１の起動時に行われるものとしたが、これに限定されない。例えば、ＣＰＵ１１は、動作中に定期的に、ポートを監視し、端子の値が変更されたことを検知し、判定レジスタに反映するようにすればよい。これは、本発明の実施の形態２についても同様であることは勿論である。
【００６６】
尚、本発明の実施の形態１にかかるＣＰＵ１１は、デバッグ設定をデバッグ設定端子１５により行うものとしたが、これに限定されない。例えば、デバッグ設定は、端末３を介して、ソフトウェアによりメインメモリ１２などの不揮発性メモリに格納されてもよい。その場合、ＣＰＵ１１により、当該不揮発性メモリから読み出すようにすればよい。これは、本発明の実施の形態２についても同様であることは勿論である。これにより、本発明にかかる情報処理装置が商用機等の外からは端子の操作が不可能なものである場合であっても、デバッグ出力の切り替えが可能となる。これは、本発明の実施の形態２についても同様であることは勿論である。
【００６７】
尚、本発明の実施の形態１にかかる出力制御部１１４は、プライオリティ値が閾値未満である場合、当該出力情報を内部バス１１５へ出力するものとしたが、これに限定されない。例えば、出力制御部１１４は、プライオリティ値が閾値未満である場合、アクセス設定を行わないようにしてもよい。すなわち、プライオリティ値が閾値未満である場合、当該ダミーライト領域への出力は、保存されない。そのため、内部バス１１５へのアクセス処理も発生しないことにより、通常動作時におけるデバッグコードの処理負荷を軽減することができる。これは、本発明の実施の形態２についても同様であることは勿論である。
【００６８】
尚、本発明にかかるデバッグ属性情報は、デバッグコードにおける種類を識別するデバッグ種類情報であり、本発明にかかるデバッグ出力条件は、出力情報の出力を許可するデバッグ種類情報であり、本発明にかかる出力制御部は、デバッグ属性情報がデバッグ出力条件に該当するか否かにより、出力先を決定するようにしてもよい。
【００６９】
さらに、本発明にかかるデバッグ出力条件は、複数のデバッグ種類情報のそれぞれが出力先と対応付けられており、本発明にかかる出力制御部は、デバッグコードに設定されたデバッグ種類情報に応じて、当該デバッグ種類情報と対応付けられた出力先に決定するようにしてもよい。
【００７０】
すなわち、本発明にかかるデバッグ属性情報は、本発明の実施の形態１にかかるプライオリティ値のような優先度に限定されない。例えば、当該デバッグ属性情報は、デバッグコードの出力情報により種類分けをしておいても構わない。また、デバッグプライオリティ判定レジスタ１１２又はデバッグアドレス判定レジスタ１１２ａに複数の条件を組み合わせて設定しておいても構わない。これにより、出力情報を複数の尺度で制御することができるため、デバッグ状況に応じて必要な出力情報を使い分けることができ、デバッグの効率を向上させることができる。
【００７１】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【００７２】
【図１】本発明の実施の形態１にかかる情報処理装置及びデバッグ方法が適用されるシステムの主要な部分の構成を示すブロック図である。
【図２】本発明の実施の形態１にかかる情報処理装置の構成の概要を示すブロック図である。
【図３】本発明の実施の形態１にかかるソフトウェアのデバッグ方法処理の概要を示すフローチャート図である。
【図４】本発明の実施の形態１にかかる出力制御処理を示すフローチャート図である。
【図５】本発明の実施の形態１にかかるデバッグ方法の概念図である。
【図６】本発明の実施の形態２にかかる情報処理装置の構成の概要を示すブロック図である。
【図７】本発明の実施の形態２にかかる出力制御処理を示すフローチャート図である。
【図８】関連技術におけるマイクロプログラムのデバッグ方式に関するハードウェア構成の一例を示したブロック図である。
【符号の説明】
【００７３】
１  情報処理装置
１ａ  情報処理装置
１１  ＣＰＵ
１１ａ  ＣＰＵ
１１１  命令実行部
１１２  デバッグプライオリティ判定レジスタ
１１２ａ  デバッグアドレス判定レジスタ
１１３  内部レジスタ
１１４  出力制御部
１１４ａ  出力制御部
１１５  内部バス
１１６  命令レジスタ
１２  メインメモリ
１２１  デバッグコード
１２２  ダミーライト領域
１２３  出力情報
１２４  出力情報
１３  外部バス
１４  バスモニタＩ／Ｆ
１５  デバッグ設定端子
１５ａ  デバッグ設定端子
２  バスモニタ
３  端末
８１  アドレスレジスタ
８２  モード決定レジスタ
８３  プロセッサ
８４  アドレスデコード部
８５  読出専用メモリ
８６  マイクロ命令格納レジスタ
【図１】
2010039622.tif 000003
【図２】
2010039622.tif 000004
【図３】
2010039622.tif 000005
【図４】
2010039622.tif 000006
【図５】
2010039622.tif 000007
【図６】
2010039622.tif 000008
【図７】
2010039622.tif 000009
【図８】
2010039622.tif 000010