(57)【要約】【課題】プログラム保護機能を有するプロセッサのデバッグ効率を向上させることができるデバッグ装置を提供する。【解決手段】デバッグ装置１は、プロセッサコア２１で実行されるプログラムが保護プログラムから非保護プログラムに遷移したか否かを、前記プロセッサからの保護プログラム実行を示す信号に基づいて検出し、実行されるプログラムが保護プログラムから非保護プログラムに遷移したことが検出された場合、プロセッサコア２１で実行される非保護プログラムの実行を停止させる検出回路１１を有する。【選択図】図１
2010211310.tif 000002
【特許請求の範囲】
【請求項１】
プログラム保護機能を有するプロセッサで実行されるプログラムのデバッグを行うデバッグ装置であって、
前記プロセッサで実行されるプログラムが保護プログラムから非保護プログラムに遷移したか否かを、前記プロセッサからの保護プログラム実行を示す信号に基づいて検出する検出部と、
実行されるプログラムが前記検出部により前記保護プログラムから前記非保護プログラムに遷移したことが検出された場合、前記プロセッサで実行される前記非保護プログラムの実行を停止させる停止部と、
を有することを特徴とするデバッグ装置。
【請求項２】
前記プロセッサに設けられた、デバッグ対象のアドレスが保護プログラムか否かを判別するための保護プログラム判別レジスタに基づいて、前記プロセッサでデバッグ対象のアドレスが前記保護プログラムか前記非保護プログラムかを判別する判別部を有することを特徴とする請求項１に記載のデバッグ装置。
【請求項３】
前記デバッグを行うためのデバッグ指示があったとき、前記判別部が前記プロセッサでデバッグ対象のアドレスが前記保護プログラムであると判定した場合、前記デバッグ指示を実行できないことを示すメッセージを出力することを特徴とする請求項２に記載のデバッグ装置。
【請求項４】
前記デバッグ指示は、逆アセンブル表示、ソフトウェアブレークポイント設定、又は、メモリアクセスであることを特徴とする請求項３に記載のデバッグ装置。
【請求項５】
プログラム保護機能を有するプロセッサで実行されるプログラムのデバッグを行うデバッグ方法であって、
前記プロセッサで実行されるプログラムが保護プログラムから非保護プログラムに遷移したか否かを、前記プロセッサからの保護プログラム実行を示す信号に基づいて検出し、
実行されるプログラムが前記保護プログラムから前記非保護プログラムに遷移したことが検出された場合、前記プロセッサで実行される前記非保護プログラムの実行を停止させることを特徴とするデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバッグ装置及びデバッグ方法に関し、特に、プログラム保護機能を有するプロセッサで実行されるプログラムをデバッグするデバッグ装置及びデバッグ方法に関する。
【背景技術】
【０００２】
近年、ユーザが開発したプログラムが不正に監視される、あるいは、改竄されるのを防ぐため、プログラムを保護する技術が開発されている。保護対象のプログラムをプロセッサ外部のメモリに保存する場合は、保護対象のプログラムに暗号化を施してからプロセッサ外部のメモリに保存する。この暗号化されたプログラムは、プロセッサ内部の保護されたメモリに読み込まれる際に、復号化されてからプロセッサ内部の保護されたメモリに読み込まれる。その後、プロセッサは、読み込まれた保護対象のプログラムを実行する。
【０００３】
しかし、トレースが可能なデバック機能を内蔵したプロセッサは、保護対象のプログラムを実行した場合、トレース情報をデバッグ装置に出力することができる。デバッグ装置は、そのトレース情報からプログラムの実行順序及びデータアクセス情報等を得ることができる。また、デバッグ装置は、デバッグ例外を用いてプロセッサにプログラムをシングルステップにより実行させ、レジスタ値の変化情報を得ることができる。ユーザは、これらの情報に基づいて、例えば、アルゴリズム、即ち、プログラムの処理内容を解析できてしまうという問題があった。
【０００４】
そこで、保護対象のプログラムを実行する場合は、トレース情報の出力を抑止するとともに、デバッグ例外の発生を抑止するプログラム保護機能を持つプロセッサが提案されている（例えば、特許文献１参照）。
【０００５】
このプログラム保護機能を持つプロセッサは、保護対象のプログラムを実行する際に、トレース情報の出力及びデバッグ例外の発生を抑止する。そのため、デバッグ装置は、プログラムの処理内容を解析することができない。
【０００６】
しかし、このようなプログラム保護機能を持つプロセッサによってプログラムの開発を行う場合、例えば、複数の保護されたプログラムと複数の保護されていないプログラムとが混在したプログラムのデバッグを行うことがある。このとき、デバッグ装置は、プロセッサが保護対象のプログラムを実行中の場合、プログラムの実行を停止させて、共通の変数及びレジスタの値を参照することができないため、プログラム保護機能を有するプロセッサのデバッグ効率が低下するという問題があった。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−５８５８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、プログラム保護機能を有するプロセッサのデバッグ効率を向上させることができるデバッグ装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一態様によれば、プログラム保護機能を有するプロセッサで実行されるプログラムのデバッグを行うデバッグ装置であって、前記プロセッサで実行されるプログラムが保護プログラムから非保護プログラムに遷移したか否かを、前記プロセッサからの保護プログラム実行を示す信号に基づいて検出する検出部と、実行されるプログラムが前記検出部により前記保護プログラムから前記非保護プログラムに遷移したことが検出された場合、前記プロセッサで実行される前記非保護プログラムの実行を停止させる停止部とを有することを特徴とするデバッグ装置を提供することができる。
【発明の効果】
【００１０】
本発明のデバッグ装置によれば、プログラム保護機能を有するプロセッサのデバッグ効率を向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施の形態に係るデバッグ装置を有するデバッグシステムの構成を示すブロック図である。
【図２】トレースステータス信号TSの例を説明するための説明図である。
【図３】検出回路１１の構成の例を説明するためのブロック図である。
【図４】プログラムの実行が保護プログラムから非保護プログラムに遷移した際に、プログラムの実行を停止させる処理の流れの例を説明するためのフローチャートである。
【図５】プログラムの保護状態を判別する処理の流れの例を説明するためのフローチャートである。
【図６Ａ】逆アセンブル表示の処理の流れの例を説明するためのフローチャートである。
【図６Ｂ】逆アセンブル表示の処理の流れの例を説明するためのフローチャートである。
【図７】SWブレークポイント設定の流れの例を説明するためのフローチャートである。
【図８】メモリアクセスの処理の流れの例を説明するためのフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面を参照して本発明の実施の形態について詳細に説明する。  
まず、図１に基づき、本発明のデバッグ装置を有するデバッグシステムの構成について説明する。図１は、本発明の実施の形態に係るデバッグ装置を有するデバッグシステムの構成を示すブロック図である。
【００１３】
図１に示すように、デバッグシステム１００は、デバッグ装置１と、プロセッサ２と、外部メモリ３とを有して構成されている。デバッグ装置１は、検出回路１１を有して構成されている。プロセッサ２は、プログラム保護機能を有し、プロセッサコア２１と、復号化ユニット２２と、デバッグサポートユニット２３と、命令メモリ２４と、バス２５とを有して構成されている。
【００１４】
外部メモリ３には、暗号化が施されていない複数の保護されていないプログラムと、暗号化が施された複数の保護されたプログラムとが格納されている。以下、保護されていないプログラムを非保護プログラム、保護されたプログラムを保護プログラムという。
【００１５】
外部メモリ３に格納されている保護プログラム及び非保護プログラムは、バス２５を介して復号化ユニット２２に供給される。復号化ユニット２２は、供給されたプログラムが暗号化された保護プログラムの場合、その保護プログラムを復号化し、平文に変換する。復号化ユニット２２は、この平文に変換された保護プログラムを命令メモリ２４に書き込む。一方、復号化ユニット２２は、供給されたプログラムが暗号化されていない非保護プログラムの場合、何もせずにこの非保護プログラムを命令メモリ２４に書き込む。
【００１６】
命令メモリ２４は、復号化ユニット２２により平文に変換された保護プログラム及び非保護プログラムをそれぞれ所定の記憶領域に記憶する。
【００１７】
プロセッサコア２１は、命令メモリ２４から命令コードを読み出し、読み出した命令コードを実行する。
【００１８】
デバッグサポートユニット２３は、プロセッサコア２１が非保護プログラムを実行中の場合、実行されている命令コードの実行状況を示すトレースステータス信号TSと、この命令コードのアドレス情報を示すトレースアドレス信号TAとをデバッグ装置１に出力する。また、デバッグサポートユニット２３は、プロセッサコア２１が保護プログラムを実行中の場合、保護プログラムを実行中であることを示すトレースステータス信号TSをデバッグ装置１に出力する。
【００１９】
デバッグ装置１には、デバッグサポートユニット２３からプロセッサコア２１により実行されたプログラムのトレース情報を示す信号が供給される。トレース情報を示す信号は、トレースステータス信号TS及びトレースアドレス信号TAから構成されている。デバッグ装置１は、トレースステータス信号TSから実行中の命令の種類を取得し、トレースアドレス信号TAから実行中の命令のアドレス情報を取得する。デバッグ装置１は、取得した命令の種類及びアドレス情報を図示しないトレースメモリに格納し、格納したトレースメモリ内の情報を解析して、プログラムの実行状況を図示しない表示装置等に表示する。
【００２０】
また、このトレースステータス信号TSは、デバッグ装置１の検出回路１１に供給される。検出回路１１は、トレースステータス信号TSが保護プログラムを実行中から非保護プログラムを実行中に遷移したことを検出する。検出回路１１は、保護プログラムを実行中から非保護プログラムを実行中に遷移したことを検出すると、プログラムの実行を停止させるためのデバッグ制御信号DCをデバッグサポートユニット２３に出力する。デバッグサポートユニット２３は、このプログラムの実行を停止させるためのデバッグ制御信号DCが入力されると、プロセッサコア２１にデバッグ例外を発生させ、プログラムの実行を停止させる。このように、検出回路１１は、プロセッサコア２１で実行されるプログラムが保護プログラムから非保護プログラムに遷移したことを検出する検出部、及び、保護プログラムから非保護プログラムに遷移したことを検出した場合、プロセッサコア２１で実行される非保護プログラムの実行を停止させる信号を出力する停止部を構成する。
【００２１】
なお、デバッグ装置１は、保護プログラムから非保護プログラムに遷移したことを検出しても、プログラムの実行を停止させないようにすることもできる。
【００２２】
デバッグ装置１は、プロセッサコア２１が非保護プログラムを実行中の場合、必要に応じてプログラムの実行を停止させるために、デバッグ制御信号DCを用いて、デバッグサポートユニット２３を制御し、プロセッサコア２１にデバッグ例外を発生させることができる。
【００２３】
ここで、デバッグサポートユニット２３から検出回路１１に出力されるトレースステータス信号TSについて説明する。図２は、トレースステータス信号TSの例を説明するための説明図である。
【００２４】
図２に示すように、トレースステータス信号TSは、デバッグモードを示す信号‘4’b0000’、実行時のトレーストリガ出力を示す信号‘4’b0001’、ストール時のトレーストリガ出力を示す信号‘4’b0010’、シーケンシャル実行を示す信号‘4’b0011’、例外発生を示す信号‘4’b0100’、アドレス出力なしの分岐成立を示す信号‘4’b0101’、アドレス出力ありの分岐成立を示す信号‘4’b0110’、パイプラインストールを示す信号‘4’b0111’、及び、保護プログラム実行を示す信号‘4’b1000’である。
【００２５】
デバッグサポートユニット２３は、プロセッサコア２１が保護プログラムを実行中の場合、実行状況に係わらず、保護プログラム実行を示すトレースステータス信号TS、即ち、‘4’b1000’を検出回路１１に出力する。また、デバッグサポートユニット２３は、プロセッサコア２１が保護プログラムを実行中の場合、実際のアドレス値とは違うアドレス値、例えば、‘０’をトレースアドレス信号TAとしてデバッグ装置１に出力する。なお、デバッグサポートユニット２３は、プロセッサコア２１が分岐命令を実行中であり、分岐先のプログラムが非保護プログラムの場合、分岐先のアドレス値をトレースアドレス信号TAとしてデバッグ装置１に出力してもよい。
【００２６】
一方、デバッグサポートユニット２３は、プロセッサコア２１が非保護プログラムを実行中の場合、実行状況に応じたトレースステータス信号TS、即ち、‘4’b0000’〜‘4’b0111’のいずれかを検出回路１１に出力する。また、デバッグサポートユニット２３は、プロセッサコア２１が非保護プログラムを実行中の場合、実行中の命令のアドレス値あるいは分岐先のアドレス値をトレースアドレス信号TAとしてデバッグ装置１に出力する。
【００２７】
このように出力されたトレースステータス信号TSに基づいて、上述したように、検出回路１１において保護プログラムから非保護プログラムへの遷移が検出されることになる。
【００２８】
ここで、検出回路１１の構成について説明する。図３は、検出回路１１の構成の例を説明するためのブロック図である。図３に示すように、検出回路１１は、比較回路３１と、立下り検出回路３２とを有して構成されている。
【００２９】
比較回路３１には、保護プログラム実行を示すトレースステータス信号TSと同一の信号、即ち、本実施の形態では‘4’b1000’が供給される。さらに、比較回路３１には、デバッグサポートユニット２３からトレースステータス信号TSが供給される。比較回路３１は、‘4'b1000’とトレースステータス信号TSとの値を比較し、比較結果を立下り検出回路３２に出力する。比較回路３１は、例えば、値が一致した場合、出力信号として‘H’を立下り検出回路３２に出力し、値が一致しない場合、出力信号として‘L’を立下り検出回路３２に出力する。
【００３０】
立下り検出回路３２は、比較回路３１からの出力信号の立下りを検出し、検出結果をデバッグ制御信号DCとしてデバッグサポートユニット２３に出力する。立下り検出回路３２は、比較回路３１の出力信号が‘H’から‘L’に変化したことを検出すると、遷移信号として‘H’を出力する。一方、立下り検出回路３２は、比較回路３１の出力信号が上述したH’から‘L’以外に変化、即ち、‘H’から‘H’、‘L’から‘L’、又は、‘L’から‘H’に変化したことを検出すると、遷移信号として‘L’を出力する。
【００３１】
この遷移信号は、上述したようにデバッグ制御信号DCとして、デバッグサポートユニット２３に出力される。デバッグサポートユニット２３は、デバッグ制御信号DCが‘H’となると、プログラムの実行を停止させる制御信号をプロセッサコア２１に出力し、プログラムの実行を停止させる。
【００３２】
なお、検出回路１１は、比較回路３１及び立下り検出回路３２により構成されているが、保護プログラムから非保護プログラムに遷移したことを検出できる回路構成であれば、他の回路構成であってもよい。例えば、比較回路３１がトレースステータス信号TSと‘4'b1000’を比較し、値が一致したときに‘L’を出力し、値が一致しないときに‘H’を出力する場合、立下り検出回路３２に代わり立上り検出回路を用い、‘L’から‘H’に変化したことを検出すれば、保護プログラムから非保護プログラムに遷移したことを検出できる。
【００３３】
次に、プログラムの実行が保護プログラムから非保護プログラムに遷移した際に、プログラムの実行を停止させる処理について説明する。図４は、プログラムの実行が保護プログラムから非保護プログラムに遷移した際に、プログラムの実行を停止させる処理の流れの例を説明するためのフローチャートである。
【００３４】
まず、トレースステータス信号TSと保護プログラム実行を示す信号とが比較される（ステップＳ１）。この比較結果に基づいて、プロセッサコア２１が実行しているプログラムが保護プログラムか否かが判定される（ステップＳ２）。保護プログラムでない場合、NOとなり、ステップＳ１に戻る。保護プログラムの場合、YESとなり、トレースステータス信号TSと保護プログラム実行を示す信号とが比較される（ステップＳ３）。この比較結果に基づいて、プロセッサコア２１が実行しているプログラムが非保護プログラムか否かが判定される（ステップＳ４）。非保護プログラムでない場合、NOとなり、ステップＳ３に戻る。非保護プログラムの場合、YESとなり、プログラムの実行を停止させるデバッグ制御信号DCが出力される（ステップＳ５）。
【００３５】
以上の処理により、保護プログラムが実行されている場合、トレースステータス信号TSは、保護プログラム実行を示す‘4’b1000’になっており、プログラムの実行が保護プログラムから非保護プログラムに遷移した場合、トレースステータス信号TSは、実行状況に応じて、例えば‘4’b0110’となる。このとき、デバッグ装置１は、トレースステータス信号TSが‘4’b1000’から‘4’b0110’に変化したことを検出すると、デバッグ制御信号DCを用いて、デバッグサポートユニット２３を制御し、プロセッサコア２１にデバッグ例外を発生させて、プログラムの実行を停止させる。これにより、保護プログラムから非保護プログラムに遷移すると同時に、プログラムの実行を停止することができる。この結果、保護プログラムから非保護プログラムに遷移したときのレジスタ値等を確認できるため、保護プログラムの実行中にレジスタ等が意図しない値に書き換わっていないか否かを確認することができる。
【００３６】
上述した処理では、保護プログラムから非保護プログラムに遷移すると同時に、プログラムの実行を停止するように制御しているが、プロセッサコア２１の高速化により、保護プログラムから非保護プログラムに遷移した後、実際にプログラムが停止するまでに非保護プログラムが数命令実行される場合がある。しかしながら、非保護プログラムであればデバッグ装置１により、実行された数命令を解析し、レジスタ値の書き換えがあったか否かが確認できる。そのため、書き換えがないレジスタ値、即ち、保護プログラムを実行中の最終的なレジスタ値を確認することにより、数命令後にプログラムが停止された場合でも、保護プログラムの実行中にレジスタ等が意図しない値に書き換わっていないか否かを確認することができる。
【００３７】
なお、プロセッサ２に保護プログラムの判別用の保護プログラム判別レジスタを設け、デバッグ対象のアドレスが保護プログラムか否かを、デバッグ装置１より判別できるようにしてもよい。これにより、デバッグ装置１は、ユーザからデバッグ指示がされた場合に、デバッグ対象のアドレスが保護プログラムか否かを判別し、その判別結果に基づいて処理内容を変更する。
【００３８】
図１に示すように、プロセッサ２は、さらに保護プログラム判別レジスタ４１を有して構成されている。保護プログラム判別レジスタ４１は、３つのレジスタ４１ａ、４１ｂ及び４１ｃを有して構成されている。
【００３９】
レジスタ４１ａは、プロセッサ２に保護機能があるか否か示す情報が格納されるレジスタである。
【００４０】
レジスタ４１ｂは、プロセッサ２に保護機能がある場合に、その保護機能を使うか否かを示す情報が格納されるレジスタである。
【００４１】
レジスタ４１ｃは、命令メモリ２４の複数の記憶領域のそれぞれが保護状態であるか否かの情報が格納されるレジスタである。
【００４２】
デバッグ装置１は、デバッグサポートユニット２３に各レジスタ４１ａ〜４１ｃを読み出す指示を出力する。デバッグサポートユニット２３は、各レジスタ４１ａ〜４１ｃを読み出す指示を受けると、プロセッサコア２１に各レジスタ４１ａ〜４１ｃを読み出す指示を出力する。プロセッサコア２１は、この指示に基づいて、各レジスタ４１ａ〜４１ｃのレジスタ値を読み出し、読み出した各レジスタ４１ａ〜４１ｃのレジスタ値をデバッグサポートユニット２３に出力する。デバッグサポートユニット２３は、これらのレジスタ値をデバッグ装置１に出力する。これにより、デバッグ装置１は、デバッグ対象のアドレスが保護プログラムか非保護プログラムかを判別することができる。
【００４３】
上述したように、デバッグ装置１は、保護プログラムから非保護プログラムに遷移したことを検出して、プログラムの実行を停止しているが、デバッグ装置１は、ユーザからデバッグ指示があったときに各レジスタ４１ａ〜４１ｃを読み出し、デバッグ対象のアドレスが保護プログラムか否かを判別するようになっている。デバッグ装置１は、この判別結果に基づいて、デバッグ指示があったときの処理内容を変更する。
【００４４】
ここで、後述する保護プログラムの判別処理で実行されるプログラムの保護状態を判別する処理について説明する。図５は、プログラムの保護状態を判別する処理の流れの例を説明するためのフローチャートである。
【００４５】
まず、プロセッサ２に保護機能があるか否かが判定される（ステップＳ１１）。保護機能がない場合、NOとなり、プロセッサ２に保護機能がない、言い換えると、命令メモリ２４に保護機能がないと判定される（ステップＳ１２）。この場合、デバッグ対象のアドレスは非保護プログラムと判別される。保護機能がある場合、YESとなり、保護機能を使用するか否かが判定される（ステップＳ１３）。保護機能を使用しない場合、NOとなり、命令メモリ２４の保護機能がオフになっていると判定される（ステップＳ１４）。この場合、デバッグ対象のアドレスは非保護プログラムと判別される。保護機能を使用する場合、YESとなり、デバッグ対象のアドレスが保護領域か否かが判定される（ステップＳ１５）。保護領域でない場合、NOとなり、保護されていない状態であると判定される（ステップＳ１６）。保護領域の場合、YESとなり、保護されている状態であると判定される（ステップＳ１７）。この場合、デバッグ対象のアドレスは保護プログラムと判別される。このように、ステップＳ１１〜ステップＳ１７は、デバッグ対象のアドレスが保護プログラムか非保護プログラムかを判別する判別部を構成する。
【００４６】
以上の処理により、デバッグ装置１は、デバッグ対象のアドレスが保護プログラムか否かを判別することができる。
【００４７】
次に、逆アセンブル表示の処理について説明する。図６A及び図６Bは、逆アセンブル表示の処理の流れの例を説明するためのフローチャートである。
【００４８】
まず、逆アセンブル表示を行うアドレスが命令メモリ２４の領域か否かが判定される（ステップＳ２１）。命令メモリ２４の領域でない場合、NOとなり、逆アセンブル表示処理を実行する（ステップＳ２２）。命令メモリ２４の領域の場合、YESとなり、保護プログラムか否かが判定される（ステップＳ２３）。即ち、ここでは、図５の処理が実行され、保護プログラムか否かが判定される。保護プログラムでない場合、NOとなり、逆アセンブル表示処理を実行する（ステップＳ２４）。保護プログラムの場合、YESとなり、逆アセンブル表示処理を実行しない（ステップＳ２５）。なお、逆アセンブル表示処理を実行しないことを示すメッセージを、例えば、図示しない表示装置に表示し、ユーザに通知してもよい。
【００４９】
ここで、ステップＳ２２及びＳ２４の逆アセンブル表示処理について図６Bを用いて説明する。
【００５０】
まず、オブジェクトファイルが読み込まれる（ステップＳ２６）。該当するニーモニックがあるか否かが判定される（ステップＳ２７）。該当するニーモニックがない場合、NOとなり、逆アセンブルを実行しない（ステップＳ２８）。該当するニーモニックがある場合、YESとなり、逆アセンブルを実行し、逆アセンブル結果を表示する（ステップＳ２９）。
【００５１】
以上の処理により、保護プログラムの場合は、逆アセンブリ表示処理を実行しないので、誤った逆アセンブル表示を行わない、また、逆アセンブル表示を行うとしたアドレスは保護プログラムであることが分かり、デバッグ効率を高めることができる。
【００５２】
次に、ソフトウェア（以下、SWという）ブレークポイントの設定の処理について説明する。図７は、SWブレークポイント設定の処理の流れの例を説明するためのフローチャートである。
【００５３】
まず、SWブレークを設定するアドレスが命令メモリ２４の領域か否かが判定される（ステップＳ３１）。命令メモリ２４の領域でない場合、NOとなり、SWブレーク設定を実行する（ステップＳ３２）。命令メモリ２４の領域の場合、YESとなり、保護プログラムか否かが判定される（ステップＳ３３）。即ち、ここでは、図５の処理が実行され、保護プログラムか否かが判定される。保護プログラムでない場合、NOとなり、SWブレーク設定を実行する（ステップＳ３４）。保護プログラムの場合、YESとなり、SWブレーク設定を実行できないことを示すエラーを返す（ステップＳ３５）。このSWブレーク設定を実行できないことを示すエラーは、例えば、図示しない表示装置に表示することで、ユーザに通知することができる。
【００５４】
以上の処理により、保護プログラムの場合は、SWブレーク設定を実行しないので、SWブレークを設定しようとしたアドレスは保護プログラムであることが分かり、デバッグ効率を高めることができる。
【００５５】
図８は、メモリアクセスの処理の流れの例を説明するためのフローチャートである。
【００５６】
まず、メモリアクセスを行うアドレスが命令メモリ２４の領域か否かが判定される（ステップＳ４１）。命令メモリ２４の領域でない場合、NOとなり、メモリアクセスを実行する（ステップＳ４２）。命令メモリ２４の領域の場合、YESとなり、保護プログラムか否かが判定される（ステップＳ４３）。即ち、ここでは、図５の処理が実行され、保護プログラムか否かが判定される。保護プログラムでない場合、NOとなり、メモリアクセスを実行する（ステップＳ４４）。保護プログラムの場合、YESとなり、メモリアクセスを実行できないことを示すエラーを返す（ステップＳ４５）。このメモリアクセスを実行できないことを示すエラーは、例えば、図示しない表示装置に表示することで、ユーザに通知することができる。
【００５７】
以上の処理により、保護プログラムの場合は、メモリアクセスを実行しないので、メモリアクセスを行おうとしたアドレスは保護プログラムであることが分かり、デバッグ効率を高めることができる。
【００５８】
以上のように、デバッグ装置１は、プログラムの実行が保護プログラムから非保護プログラムに遷移した際に、プログラムの実行を停止させることができる。そのため、デバッグ装置１は、プログラム保護機能を持つプロセッサにおいて、複数の保護されたプログラムと複数の保護されていないプログラムとが混在したプログラムのデバッグを行う際に、共通の変数及びレジスタ値が書き換えられたか否かの確認ができる。この結果、デバッグ装置１は、プログラムの実行を停止させた後、即ち、保護プログラムの実行直後の共通の変数及びレジスタ値が容易に参照でき、デバッグ効率を向上させることができる。
【００５９】
よって、本実施の形態のデバッグ装置によれば、プログラム保護機能を有するプロセッサのデバッグ効率を向上させることができる。
【００６０】
なお、本明細書におけるフローチャート中の各ステップは、その性質に反しない限り、実行順序を変更し、複数同時に実行し、あるいは実行毎に異なった順序で実行してもよい。
【００６１】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【符号の説明】
【００６２】
１…デバッグ装置、２…プロセッサ、３…外部メモリ、１１…検出回路、２１…プロセッサコア、２２…復号化ユニット、２３…デバッグサポートユニット、２４…命令メモリ、３１…比較回路、３２…立下り検出回路、４１…保護プログラム判別レジスタ。
【図１】
2010211310.tif 000003
【図２】
2010211310.tif 000004
【図３】
2010211310.tif 000005
【図４】
2010211310.tif 000006
【図５】
2010211310.tif 000007
【図６Ａ】
2010211310.tif 000008
【図６Ｂ】
2010211310.tif 000009
【図７】
2010211310.tif 000010
【図８】
2010211310.tif 000011