"半導体集積回路のプログラムを検証するエミュレータおよびデバッガを備え、前記エミュレータは、デバッグコマンドを埋め込んだ前記プログラムを実行するプログラム実行部と、前記デバッガと前記エミュレータの相互から制御される記憶部と、前記記憶部を参照して前記プログラムの中断を制御するデバッグコマンドブレーク制御部と、を備え、前記デバッガは、前記エミュレータから通知された中断指示を検出するデバッグコマンドブレーク検出部と、前記記憶部に格納された情報に基づいてデバッグコマンドを前記エミュレータから読み出すデバッグコマンド文字列読み出し部と、前記デバッグコマンドブレーク制御部からの中断指示により前記エミュレータが中断中に前記デバッガが前記デバッグコマンドを実行するための制御を行うデバッグコマンド実行部と、中断されたプログラムの再開を前記エミュレータに通知する復帰制御部と、を備えることを特徴とするデバッグ装置。前記エミュレータで実行するプログラム内にデバッグコマンドを埋め込み、該プログラム上から前記記憶部および前記デバッグコマンドブレーク制御部を経由して前記デバッガにプログラムの中断を通知し、前記デバッガは前記通知を前記デバッグコマンドブレーク検出部で検出し、中断中である場合には、前記デバッグコマンド文字列読み出し部が前記記憶部に格納された情報を基にデバッグコマンドを前記エミュレータから読み出し、読み出したデバッグコマンドを前記デバッグコマンド実行部で実行し、前記復帰制御部により前記エミュレータにプログラムの実行を再開させることを特徴とする、請求項1に記載のデバッグ装置。前記記憶部は、前記デバッグコマンドブレーク制御部にプログラムが中断したかを通知するデバッグコマンドブレーク因子部と、中断中にデバッガが実行するデバッグコマンド情報を格納する文字列情報部と、プログラム復帰時に前記エミュレータにデバッグコマンドの実行結果を伝えるための戻り値部と、を備えることを特徴とする、請求項1または2に記載のデバッグ装置。デバッグコマンドを埋め込んだプログラムを実行し、該デバッグコマンドにより該プログラムの実行を中断する場合には、該デバッグコマンドを示す第1の情報および該プログラムの中断を示す第2の情報を出力するエミュレータと、前記第2の情報を受けると、前記第1の情報が示すデバッグコマンドを前記エミュレータから読み出して、読み出したデバッグコマンドを実行し、実行結果を戻り値として前記エミュレータに出力するとともに、前記プログラムの実行を再開するように前記エミュレータに指示するデバッガと、を備えることを特徴とするデバッグ装置。エミュレータが、デバッグコマンドを埋め込んだプログラムを実行する工程と、前記デバッグコマンドにより前記プログラムの実行を中断する場合には、前記デバッグコマンドを示す第1の情報および前記プログラムの中断を示す第2の情報を出力する工程と、を含み、デバッガが、前記第2の情報を受けると、前記第1の情報が示すデバッグコマンドを前記エミュレータから読み出す工程と、読み出したデバッグコマンドを実行し、実行結果を戻り値として前記エミュレータに出力する工程と、前記プログラムの実行を再開するように前記エミュレータに指示する工程と、を含むことを特徴とするデバッグ方法。以下の分析は、本発明者によってなされたものである。特許文献1に記載されたデバッガでは、プログラムを実行する前に、専用の読み取りコマンドreadコマンドにより、プログラムシステム100から読み取りコマンドで指定されたまたは全部のモジュール毎の情報を読み取ってデバッグ情報ファイル302を作成し、プログラム実行前に、専用の設定コマンドsetコマンドにより、デバッグ情報ファイル302から中断点以下ブレークポイントという。を含めたデバッグ情報をデバッガ21に設定する。したがって、デバッグのための事前準備が煩雑となる。そこで、デバッグのための事前準備を簡略化してデバッグ作業の効率を向上させることが課題となる。本発明の第1の視点に係るデバッグ装置は、半導体集積回路のプログラムを検証するエミュレータおよびデバッガを備え、前記エミュレータは、デバッグコマンドを埋め込んだ前記プログラムを実行するプログラム実行部と、前記デバッガと前記エミュレータの相互から制御される記憶部と、前記記憶部を参照して前記プログラムの中断を制御するデバッグコマンドブレーク制御部と、を備え、前記デバッガは、前記エミュレータから通知された中断指示を検出するデバッグコマンドブレーク検出部と、前記記憶部に格納された情報に基づいてデバッグコマンドを前記エミュレータから読み出すデバッグコマンド文字列読み出し部と、前記デバッグコマンドブレーク制御部からの中断指示により前記エミュレータが中断中に前記デバッガが前記デバッグコマンドを実行するための制御を行うデバッグコマンド実行部と、中断されたプログラムの再開を前記エミュレータに通知する復帰制御部と、を備える。本発明の第2の視点に係るデバッグ装置は、デバッグコマンドを埋め込んだプログラムを実行し、該デバッグコマンドにより該プログラムの実行を中断する場合には、該デバッグコマンドを示す第1の情報および該プログラムの中断を示す第2の情報を出力するエミュレータと、前記第2の情報を受けると、前記第1の情報が示すデバッグコマンドを前記エミュレータから読み出して、読み出したデバッグコマンドを実行し、実行結果を戻り値として前記エミュレータに出力するとともに、前記プログラムの実行を再開するように前記エミュレータに指示するデバッガと、を備える。本発明の第3の視点に係るデバッグ方法は、エミュレータが、デバッグコマンドを埋め込んだプログラムを実行する工程と、前記デバッグコマンドにより該プログラムの実行を中断する場合には、前記デバッグコマンドを示す第1の情報および前記プログラムの中断を示す第2の情報を出力する工程と、を含み、デバッガは、前記第2の情報を受けると、前記第1の情報が示すデバッグコマンドを前記エミュレータから読み出す工程と、読み出したデバッグコマンドを実行し、実行結果を戻り値として前記エミュレータに出力する工程と、前記プログラムの実行を再開するように前記エミュレータに指示する工程と、を含む。本発明に係るデバッグ装置およびデバッグ方法によると、デバッグのための事前準備が簡略化され、デバッグ作業の効率を向上することができる。はじめに、本発明の概要について説明する。なお、この概要に付記する図面参照符号は、専ら理解を助けるための例示であり、本発明を図示の態様に限定することを意図するものではない。図1を参照すると、デバッグ装置1は、デバッグコマンドを埋め込んだプログラムを実行し、デバッグコマンドによりプログラムの実行を中断する場合には、デバッグコマンドを示す第1の情報例えば、文字列ポインタ7およびプログラムの中断を示す第2の情報例えば、デバッグコマンドブレーク因子を出力するエミュレータ2と、第2の情報6を受けると、第1の情報7が示すデバッグコマンドをエミュレータ2から読み出して、読み出したデバッグコマンドを実行し、実行結果を戻り値8としてエミュレータ2に出力するとともに、プログラムの実行を再開するようにエミュレータ2に指示するデバッガ30と、を備える。また、エミュレータ2は、第1の情報7、第2の情報6、および、戻り値8の少なくともいずれかを保持する記憶部例えば、レジスタ9を備えていてもよい。さらに、エミュレータ2は、第1の情報7として、デバッグコマンドの文字列へのポインタを出力するようにしてもよい。図1を参照すると、デバッグ装置1は、半導体集積回路のプログラムを検証するエミュレータ2およびデバッガ30を備え、エミュレータ2は、デバッグコマンドを埋め込んだプログラムを実行するプログラム実行部例えばCPU3と、デバッガ30とエミュレータ2の相互から制御される記憶部例えばレジスタ9と、記憶部9を参照してプログラムの中断を制御するデバッグコマンドブレーク制御部5と、を備え、デバッガ30は、エミュレータ2から通知された中断指示を検出するデバッグコマンドブレーク検出部31と、記憶部9に格納された情報に基づいてデバッグコマンドをエミュレータ2から読み出すデバッグコマンド文字列読み出し部32と、デバッグコマンドブレーク制御部5からの中断指示によりエミュレータ2が中断中にデバッガ30がデバッグコマンドを実行するための制御を行うデバッグコマンド実行部34と、中断されたプログラムの再開をエミュレータ2に通知する復帰制御部35と、を備えていてもよい。また、エミュレータ2で実行するプログラム内にデバッグコマンドを埋め込み、プログラム上から記憶部9およびデバッグコマンドブレーク制御部5を経由してデバッガ30にプログラムの中断を通知し、デバッガ30は該通知をデバッグコマンドブレーク検出部31で検出し、中断中である場合には、デバッグコマンド文字列読み出し部32が記憶部9に格納された情報を基にデバッグコマンドをエミュレータ2から読み出し、読み出したデバッグ用コマンドをデバッグコマンド実行部34で実行し、復帰制御部35によりエミュレータ2にプログラムの実行を再開させるようにしてもよい。さらに、記憶部9は、デバッグコマンドブレーク制御部5にプログラムが中断したかを通知するデバッグコマンドブレーク因子部デバッグコマンドブレーク因子6と、中断中にデバッガ30が実行するデバッグコマンド情報を格納する文字列情報部文字列ポインタ7と、プログラム復帰時にエミュレータ2にデバッグコマンドの実行結果を伝えるための戻り値部戻り値8と、を備えることが好ましい。また、戻り値部8は、実行結果を記憶するとともに、エミュレータ2が復帰制御部35の指示に応じて再開するプログラムに、実行結果を渡すようにしてもよい。図3を参照すると、本発明のデバッグ方法は、エミュレータが、デバッグコマンドを埋め込んだプログラムを実行する工程ステップS5、S6と、デバッグコマンドによりプログラムの実行を中断する場合には、デバッグコマンドを示す第1の情報およびプログラムの中断を示す第2の情報を出力する工程ステップS7、S8と、を含み、デバッガが、第2の情報を受けるとステップS10のYes、第1の情報が示すデバッグコマンドをエミュレータから読み出す工程ステップS11と、読み出したデバッグコマンドを実行し、実行結果を戻り値として前記エミュレータに出力する工程ステップS12、S13と、プログラムの実行を再開するようにエミュレータに指示する工程ステップS14と、を含む。また、上記のデバッグ方法において、エミュレータが、第1の情報として、デバッグコマンドの文字列へのポインタを出力してもよい。また、デバッグ方法は、エミュレータとデバッガを用いて半導体集積回路のプログラムを検証するデバッグ方法であって、エミュレータが、デバッグマンドを埋め込んだプログラムを実行する工程ステップS5と、プログラム上から記憶部を経由して、デバッガにプログラムの中断を通知する工程ステップS8、S9と、デバッガが、前記通知を検出する工程ステップS10と、中断中である場合にはステップS10のYes、エミュレータの記憶部に格納した情報に基づいてデバッグコマンドをエミュレータから読み出す工程ステップS11と、読み出したデバッグコマンドを実行する工程ステップS12と、中断されたプログラムの再開をエミュレータに通知する工程ステップS14と、を含んでいてもよい。さらに、デバッグ方法は、デバッガが、デバッグコマンドを実行して得られた実行結果をエミュレータに記録する工程ステップS13を含んでいてもよい。本発明に係るデバッグ装置およびデバッグ方法では、プログラム中からデバッガへデバッグコマンドの情報を通知することにより、プログラムからデバッグ情報デバッグコマンドが記述されているモジュール名、プロシジャ名、行番号などを抽出するreadコマンド処理と、デバッグ情報を元にブレークポイントとデバッグコマンドを設定するsetコマンド処理という事前準備が不要となり、デバッグ作業の効率が向上する。実施形態実施形態に係るデバッグ装置について、図面を参照して説明する。図1は、本実施形態のデバッグ装置の構成を一例として示すブロック図である。図1を参照すると、デバッグ装置1は、プログラムをエミュレーションするエミュレータ2と、プログラムをデバッグするときの情報表示や設定を制御するデバッガ30とを備えている。エミュレータ2は、プログラムを実行するCPU3と、ユーザ回路である周辺回路4と、PCブレークなどが発生したときと同様に、エミュレータ2内のCPU3や周辺回路4を停止させるデバッグコマンドブレークを制御するデバッグコマンドブレーク制御部5と、各種データを設定保持するレジスタ9と、プログラムを格納するRAM、FlashROM等のメモリ非図示とを備えている。レジスタ9は、デバッグコマンドブレークの要因を格納するデバッグコマンドブレーク因子6と、デバッグコマンドの文字列のポインタを格納する文字列ポインタ7と、デバッグコマンド実行時の結果を格納する戻り値8とを保持する。レジスタ9は、CPU3からデバッグコマンドブレーク因子6が書き込まれる本実施形態では、例えば1が書き込まれるものとする。。すると、デバッグコマンドブレーク制御部5は、デバッグコマンドブレーク発生の通知をデバッグコマンドブレーク検出部31に出力する。また、レジスタ9は、CPU3からデバッグコマンドの文字列のポインタを文字列ポインタ7として入力し、デバッグコマンド文字列読み出し部32へ出力する。さらに、レジスタは、復帰制御部35からデバッグコマンドの実行結果を戻り値8として入力し、CPU3へ出力する。デバッガ30は、デバッグコマンドブレークを検出するデバッグコマンドブレーク検出部31と、デバッグコマンドの文字列をメモリレジスタ9から読み出すデバッグコマンド文字列読み出し部32と、デバッグコマンドを実行するデバッグコマンド実行部34と、デバッグコマンドブレークを解除する復帰制御部35とを備えている。デバッグコマンド実行部34は、図5に示した従来機能24に相当する。プログラム50は、コンパイル後にデバッガ30を経由してエミュレータ2のCPU3にロードされて、CPU3によって実行される。CPU3は、レジスタ9の戻り値8を入力とし、レジスタ9のデバッグコマンドブレーク因子6にブレーク要因を出力し、レジスタ9の文字列ポインタ7を出力する。周辺回路4は、デバッグコマンド実行部34から動作開始の通知を入力し、動作結果をデバッグコマンド実行部34へ出力する。デバッグコマンドブレーク制御部5は、レジスタ9のデバッグコマンドブレーク因子6からのデバッグコマンドブレークの発生と、復帰制御部35からのデバッグコマンドブレークの解除とを入力とし、デバッグコマンドブレーク発生の通知をデバッグコマンドブレーク検出部31へ出力する。デバッグコマンドブレーク検出部31は、デバッグコマンドブレーク制御部5からのデバッグコマンドブレーク発生の通知を入力とし、デバッグコマンドブレーク発生の通知をデバッグコマンド文字列読み出し部32へ出力する。デバッグコマンド文字列読み出し部32は、デバッグコマンドブレーク検出部31からのデバッグコマンドブレークの発生の通知と、レジスタ9からの文字列ポインタ7とを入力とし、デバッグコマンドの文字列をデバッグコマンド実行部34へ出力する。デバッグコマンド実行部34は、周辺回路4からの動作結果と、デバッグコマンド文字列読み出し部32からのデバッグコマンドの文字列とを入力とし、動作開始の通知を周辺回路4へ出力し、デバッグコマンドの実行結果を復帰制御部35へ出力する。復帰制御部35は、デバッグコマンド実行部34からのデバッグコマンドの実行結果を入力とし、デバッグコマンドブレークの解除通知をデバッグコマンドブレーク制御部5へ出力し、デバッグコマンドの実行結果をレジスタ9の戻り値8へ出力する。図2は、本実施形態におけるプログラムの記述例であり、図1のプログラム50の詳細な構成を示す。図2を参照すると、プログラム50は、メインルーチン51と、メインルーチン51から呼び出されるデバッグコマンド関数52とを含む。メインルーチン51として、デバッグコマンド関数52を呼び出す例が記述されている。実際にデバッグコマンド関数52を呼び出す行は、6行目のdata=debug_commandget_sigINT0;である。引き数のget_sigINT0は、デバッガ30がデバッグ機能として用意しているデバッグコマンドの一例であり、周辺回路4の中にある端子INT0の値をリードして値を返すデバッグコマンド非図示である。デバッグコマンド関数52は、引き数として送られたデバッグコマンドをデバッガ30に通知する関数である。図3は、本実施形態のデバッグ装置1の動作を一例として示すフローチャートである。図3を参照して、図1および図2の動作を説明する。プログラム作成者は、図2のメインルーチン51に示すように、INT0の値をリードしたい行にデバッグコマンド関数を記述するステップS1。プログラム作成者は、例えば、CソースまたはCライブラリで作成されるデバッグコマンド関数52とメインルーチン51を一緒にコンパイルして、ロードモジュールを作成するステップS2。ロードモジュールを作成すると、デバッガ30を起動して、コンパイラで作成したロードモジュールを、デバッガ30を経由してエミュレータ2のCPU3にロードするステップS3。デバッガ30は、ロードしたプログラム50を実行するステップS4。エミュレータ2のCPU3は、デバッガ30のプログラム実行にあわせてエミュレーションを開始するステップS5。エミュレータ2において、ステップS5でプログラム実行が開始されて、ステップS1で記述したデバッグコマンド関数を呼び出すための記述行まで進むと、メインルーチン51からデバッグコマンド関数52が呼び出され、デバッグコマンド関数52が開始されるステップS6。デバッグコマンド関数52は、メインルーチン51からデバッグコマンド関数52への引き数として送られたデバッグコマンドの文字列へのポインタを文字列ポインタ7に書き込むステップS7。本実施形態では、デバッグコマンド関数52のcharbufが文字列ポインタ7に書き込まれるポインタとなる。CPU3は、デバッグコマンド関数52の処理でデバッグコマンドブレーク因子6に1を書き込むステップS8。すると、レジスタ9は、デバッグコマンドブレーク制御部5にPCブレークなどが発生したときと同様に、エミュレータ2のCPU3や周辺回路4を停止させるデバッグコマンドブレークの発生を、デバッグコマンドブレーク制御部5へ通知する。デバッグコマンドブレーク制御部5は、デバッグコマンドブレーク因子6からの通知により、デバッグコマンドブレークを発生させステップS9、デバッガ30のデバッグコマンドブレーク検出部31に通知する。デバッグコマンドブレーク検出部31は、エミュレータ2から通知されたブレークがデバッグコマンドブレークか否かを判定するステップS10。デバッグコマンドブレークでない場合にはステップS10のNo、従来技術と同様に、従来機能24の処理を行うステップS17。一方、デバッグコマンドブレークの場合にはステップS10のYes、デバッグコマンドブレークが発生したことをデバッグコマンド文字列読み出し部32へ通知する。デバッグコマンド文字列読み出し部32は、デバッグコマンドブレーク検出部31からデバッグコマンドブレーク発生の通知を受け取ると、エミュレータ2のレジスタ9の文字列ポインタ7からデバッグコマンドの文字列のポインタをリードし、ポインタが示すメモリからデバッグコマンドの文字列を読み出し、読み出したデバッグコマンドの文字列をデバッグコマンド実行部34に出力するステップS11。デバッグコマンド実行部34は、デバッグコマンド文字列読み出し部32が読み出したデバッグコマンドを実行するステップS12。図2のメインルーチン51に示すデバッグコマンドがget_sigINT0であるため、デバッグコマンド実行部34は、エミュレータ2の周辺回路4から端子INT0の値をリードし、復帰制御部35にリードした値を出力する。復帰制御部35は、デバッグコマンド実行部34でリードした値をエミュレータ2のレジスタ9の戻り値8に書き込むステップS13。復帰制御部35は、デバッグコマンドブレークの解除をエミュレータ2のデバッグコマンドブレーク制御部5に通知するステップS14。デバッグコマンドブレーク制御部5は、デバッガ30の復帰制御部35からのデバッグコマンドブレークの解除を受けて、ステップS9で発生させたデバッグコマンドブレークを解除するステップS15。CPU3は、レジスタ9内の戻り値8をリードし、デバッグコマンド関数52の戻り値としてメインルーチン51へ返すステップS16。さらに、CPU3は、ステップS5に戻り、プログラム50を続けて実行する。図4は、本実施形態のデバッグ装置1の動作メカニズムを説明するための図である。図4を参照して、図1~3の動作を説明する。図4を参照すると、プログラム150は、メインルーチン151と、メインルーチン151から呼び出されるデバッグコマンド関数152とを含む。メインルーチン151において、デバッグコマンド関数152を呼び出す例が記述されている。プログラム150の実行が開始されると図3のステップS4、ステップS5、0x1044番地にて、デバッグコマンド関数152が呼び出されるステップS6。ここで、0xで始まる数値は、16進数を示す。デバッグコマンド関数152に渡される引き数は、デバッガ30にて実行されるデバッグコマンドを示す文字列が格納されているメモリのアドレス文字列のポインタという。を示す。文字列のポインタは、プログラム150のデバッグコマンド関数152の0x2018番地に記載されたbuf1として、レジスタ9の文字列ポインタ7デバッグコマンド関数152内のptという変数に書き込まれるステップS7。本実施形態では、レジスタ9を用いて制御しているが、メモリ等を用いるようにしてもよい。デバッグコマンド関数152の0x2038番地にて、デバッグコマンドブレーク因子デバッグコマンド関数152内のbrという変数に1を書き込むステップS8。0x202Aから始まるwhile文はbrへの書き込みが終了するまで次の行へ進まないための処理であるため、プログラム実行中のCPU3は実行を中断ブレークするステップS9。デバッガ30は、文字列ポインタ7に格納されたアドレスから、デバッグコマンド文字列を読み出してステップS11、デバッグコマンドを実行するステップS12。リード関係のコマンドの場合には、実行結果をレジスタ9の戻り値8デバッグコマンド関数152内のpdataという変数に値を返すステップS13。エミュレータ2は、ブレークした次の命令から再度実行を開始するステップS5。エミュレータ2において、プログラム実行が再開されると、0x10AC番地が次のデバッグコマンド関数152を呼び出しているアドレスであり、上記のステップS7~ステップS12と同様の動作によってデバッグコマンドが実行される。0x10AC番地のデバッグコマンド関数の引き数に記載されているデバッグコマンドであるput_sigINT1d,dataは、0x1044番地で実行されたget_sigINT0の戻り値が代入されているdataの値をINT1に書き込むというライト系のコマンドである。ライト系のデバッグコマンドは実行結果として値を返さない。したがって、レジスタ9内の戻り値8へ、前回行ったデバッグコマンドの実行結果と同一の値または初期値を書きこむステップS13。本実施形態に係るデバッグ装置によると、以下の効果がもたらされる。本実施形態では、プログラム50の中からデバッグコマンドの情報をデバッガ30へ通知する。したがって、プログラム50からデバッグ情報デバッグコマンドが記述されているモジュール名、プロシジャ名、行番号などを抽出するreadコマンド処理と、デバッグ情報を元にブレークポイントとデバッグコマンドを設定するsetコマンド処理とを、事前準備として行う必要がなくなる。また、本実施形態では、プログラム50で実行したデバッグコマンド関数52の戻り値としてデバッグコマンドの実行結果を受け取る。これにより、検証作業を自動化でき、デバッグ作業を効率良く行なうことができる。さらに、本実施形態では、プログラム50内のデバッグコマンド関数52からのデバッグコマンドブレーク因子6への書き込みによりデバッグコマンドブレークを発生させる。このとき、エミュレータ2内で消費するブレークポイントは1個であり、ブレークリソースを最小限に抑えることができる。なお、上記の特許文献等の先行技術文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示請求の範囲を含むの枠内において、さらにその基本的技術思想に基づいて、実施形態の変更調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。"