"コンパイラから出力されたシンボル情報またはセクション情報と、該シンボル情報または該セクション情報に相当するメモリ領域にアクセス可能なプロセッサを示す領域情報とを関連付けて保持する第1の情報テーブルと、プロセッサおよびブレークポイントの種類ごとに設定可能な残数を示す残り設定可能数を保持する第2の情報テーブルと、ユーザが設定したブレークポイント設定アドレスを含むシンボル情報またはセクション情報を前記第1の情報テーブルから抽出し、抽出したシンボル情報またはセクション情報に関連付けられた領域情報が示すプロセッサに対して、前記第2の情報テーブルを参照して設定可能な種類のブレークポイントを設定する振り分け条件用情報収集部と、を備えていることを特徴とするプログラムデバッグ装置。前記領域情報は、複数のプロセッサのうちのいずれか、または、複数のプロセッサのすべてを示すことを特徴とする、請求項1に記載のプログラムデバッグ装置。前記シンボル情報は、シンボルの識別子、属性、アドレスおよびサイズを示すことを特徴とする、請求項1または2に記載のプログラムデバッグ装置。前記セクション情報は、シンボルの識別子、オフセット、データサイズおよびデータタイプを示すことを特徴とする、請求項1または2に記載のプログラムデバッグ装置。前記第2の情報テーブルは、ブレークポイントの種類として、ハードウェアブレークおよびソフトウェアブレークを含むことを特徴とする、請求項1ないし4のいずれか1項に記載のプログラムデバッグ装置。コンパイラから出力されたシンボル情報またはセクション情報と、該シンボル情報または該セクション情報に相当するメモリ領域にアクセス可能なプロセッサを示す領域情報とを関連付けて第1の情報テーブルに格納する工程と、プロセッサおよびブレークポイントの種類ごとに設定可能な残数を示す残り設定可能数を第2の情報テーブルに格納する工程と、ユーザが設定したブレークポイント設定アドレスを含むシンボル情報またはセクション情報を前記第1の情報テーブルから抽出する工程と、抽出したシンボル情報またはセクション情報に関連付けられた領域情報が示すプロセッサに対して、前記第2の情報テーブルを参照して設定可能な種類のブレークポイントを設定する工程と、を含むことを特徴とするプログラムデバッグ方法。前記領域情報は、複数のプロセッサのうちのいずれか、または、複数のプロセッサのすべてを示すことを特徴とする、請求項6に記載のプログラムデバッグ方法。前記シンボル情報は、シンボルの識別子、属性、アドレスおよびサイズを示すことを特徴とする、請求項6または7に記載のプログラムデバッグ方法。前記セクション情報は、シンボルの識別子、オフセット、データサイズおよびデータタイプを示すことを特徴とする、請求項6または7に記載のプログラムデバッグ方法。前記第2の情報テーブルは、ブレークポイントの種類として、ハードウェアブレークおよびソフトウェアブレークを含むことを特徴とする、請求項6ないし9のいずれか1項に記載のプログラムデバッグ方法。以下の分析は、本発明者によってなされたものである。特許文献1に記載されたデバッグ方法では、設定されたブレークポイントでブレークをさせ、ブレーク要因をすべてのプロセッサの履歴と比較する。このとき、PE毎にリアルタイムで実行する必要があるプログラムをデバッグすることができないという問題がある。その理由として、ブレークポイント設定テーブル215に設定された条件より、トラップ命令に置き換えられるソフトウェアブレークポイントをすべてのプロセッサに対して設定し、いずれかの条件でブレークした後に、ブレークポイント履歴テーブル206により、すべてのプロセッサのブレーク要因をブレーク条件と比較しなければならず、必ずすべてのプロセッサをブレークをさせる必要があるためである。そこで、マルチプロセッサシステム用のプログラムをデバッグする際、不要なプロセッサでのブレークを回避し、リアルタイム性を損なわずにプログラムをデバッグできるようにすることが課題となる。本発明の第1の視点に係るプログラムデバッグ装置は、コンパイラから出力されたシンボル情報またはセクション情報と、該シンボル情報または該セクション情報に相当するメモリ領域にアクセス可能なプロセッサを示す領域情報とを関連付けて保持する第1の情報テーブルと、プロセッサおよびブレークポイントの種類ごとに設定可能な残数を示す残り設定可能数を保持する第2の情報テーブルと、ユーザが設定したブレークポイント設定アドレスを含むシンボル情報またはセクション情報を前記第1の情報テーブルから抽出し、抽出したシンボル情報またはセクション情報に関連付けられた領域情報が示すプロセッサに対して、前記第2の情報テーブルを参照して設定可能な種類のブレークポイントを設定する振り分け条件用情報収集部と、を備えている。本発明の第2の視点に係るプログラムデバッグ方法は、コンパイラから出力されたシンボル情報またはセクション情報と、該シンボル情報または該セクション情報に相当するメモリ領域にアクセス可能なプロセッサを示す領域情報とを関連付けて第1の情報テーブルに格納する工程と、プロセッサおよびブレークポイントの種類ごとに設定可能な残数を示す残り設定可能数を第2の情報テーブルに格納する工程と、ユーザが設定したブレークポイント設定アドレスを含むシンボル情報またはセクション情報を前記第1の情報テーブルから抽出する工程と、抽出したシンボル情報またはセクション情報に関連付けられた領域情報が示すプロセッサに対して、前記第2の情報テーブルを参照して設定可能な種類のブレークポイントを設定する工程と、を含む。本発明に係るプログラムデバッグ装置およびプログラムデバッグ方法によると、マルチプロセッサシステム用のプログラムをデバッグする際、不要なPEでのブレークを回避し、リアルタイム性を損なわずにプログラムをデバッグすることができる。はじめに、本発明の概要について説明する。なお、この概要に付記する図面参照符号は、専ら理解を助けるための例示であり、本発明を図示の態様に限定することを意図するものではない。図1を参照すると、プログラムデバッグ装置500は、コンパイラから出力されたシンボル情報またはセクション情報と、該シンボル情報または該セクション情報に相当するメモリ領域にアクセス可能なプロセッサを示す領域情報とを関連付けて保持する第1の情報テーブルシンボル情報テーブル401またはセクション情報テーブル402と、プロセッサおよびブレークポイントの種類ごとに設定可能な残数を示す残り設定可能数を保持する第2の情報テーブルブレークポイント情報テーブル302と、ユーザが設定したブレークポイント設定アドレスを含むシンボル情報またはセクション情報を第1の情報テーブル401または402から抽出し、抽出したシンボル情報またはセクション情報に関連付けられた領域情報が示すプロセッサに対して、第2の情報テーブル302を参照して設定可能な種類のブレークポイントを設定する振り分け条件用情報収集部403と、を備えている。図8を参照すると、領域情報401dまたは402dは、複数のプロセッサのうちのいずれか、または、複数のプロセッサのすべてを示す。また、図8上段を参照すると、シンボル情報は、シンボルの識別子ないし名前、属性401a、アドレス401bおよびサイズ401cを示す。一方、図8下段を参照すると、セクション情報は、シンボルの識別子ないし名前、オフセット402a、データサイズ402bおよびデータタイプ402cを示す。図10を参照すると、第2の情報テーブル302は、ブレークポイントの種類として、ハードウェアブレークおよびソフトウェアブレークを含むことが好ましい。本発明に係るプログラムデバッグ装置によると、マルチプロセッサシステム用のプログラムをデバッグする際、不要なPEでのブレークを回避し、リアルタイム性を損なわずにプログラムをデバッグすることができる。実施形態実施形態に係るプログラムデバッグ装置について、図面を参照して説明する。図1は、本実施形態のプログラムデバッグ装置500の構成を示すブロック図である。図1を参照すると、プログラムデバッグ装置500は、マルチプロセッサシステム701と、マルチプロセッサシステム701用のプログラムをコンパイルするためのコンパイラ801と、コンパイルしたプログラムをデバッグするためのデバッガ部501と、プログラムを実行するためのICEIn-CircuitEmulator601とを備えている。コンパイラ801は、ソースコードおよびリンク指示ファイルを入力とする。コンパイラ801は、シンボル情報、領域情報およびセクション情報を有し、これらの情報をデバッガ部501に渡す。ICE601は、CPUの動作をエミュレーションするデバッグ用のハードウェアである。ICE601は、デバッガ部501からデバッグコマンドが入力されると、マルチプロセッサシステム701から情報を入力してデバッグ用の情報を生成してデバッガ部501に出力するとともに、マルチプロセッサ701の機能を使うためのコマンドを出力する。マルチプロセッサシステム701は、デバッグ対象ハードウェアであり、PE1、PE2、I/O、メモリ、レジスタ等を搭載している。マルチプロセッサシステム701は、ICE601からのコマンドを入力とし、コマンド実行結果の情報をICE601に出力する。デバッガ部501は、GUI部502、実行制御部503、ブレークリソース管理部504、ブレークポイント設定部505、ブレークポイント履歴テーブル206、命令退避領域207、レジスタ退避領域208、および、ブレークポイント振り分け処理部301を備えている。GUI部502は、デバッガ部501の外部装置非図示から情報を入力し、表示装置非図示に出力する。実行制御部503は、ICE601と情報の入出力を行い、実行の制御をする。ブレークリソース管理部504は、ブレークポイント振り分け処理部301からの要求を入力とし、ICE601に使用可能なブレークポイントの種類と残り設定可能数の取得コマンドを出力して、取得した情報をブレークポイント情報テーブル302に出力する。また、ブレークリソース管理部504は、ブレークポイント設定部505からの要求を入力とし、ICE601に使用可能なブレークポイントの種類と残り設定可能数の取得コマンドをブレークポイント設定部505に出力する。ブレークポイント設定部505は、GUI部502、または、ブレークポイント振り分け処理部301を介してブレークポイント設定テーブル205から、ブレークポイント設定情報を入力とし、ICE601にブレークポイント設定コマンドを出力することで、ブレークポイントを設定する。ブレークポイント履歴テーブル206には、発生したブレーク要因の履歴が格納される。命令退避領域207は、ブレークポイント発生条件を示す命令がトラップ命令などに置換される場合、元の命令の退避格納領域として使用される。レジスタ退避領域208は、デバッグ対象プログラム201の実行が中断され、デバッガプログラム202が呼び出されて実行されるときに、各CPUのレジスタ内容を退避させ、格納しておくための退避格納領域である。ブレークポイント振り分け処理部301は、ブレークポイント設定テーブル205、ブレークポイント情報テーブル302、振り分け条件テーブル303、シンボル情報テーブル401、セクション情報テーブル402、振り分け条件用情報収集部403、ブレークポイント振り分け部404、および、コンパイラ情報マージ部405を備えている。ブレークポイント設定テーブル205は、振り分け条件用情報収集部403からCPU-ID205aと有効フラグ205bの値を入力し、ブレークポイント振り分け部404からブレークポイント種類205dの値を入力し、ユーザからGUI部502を介してブレークポイント設定アドレス205cの値を入力し、これらのブレークポイント設定情報をブレークポイント設定部505へ出力する。ブレークポイント情報テーブル302は、ブレークリソース管理部504からブレークポイント種類302aとブレーク使用数PE1/PE2302cとブレーク使用数共用302dと使用可能302eの値を入力し、振り分け条件用情報収集部403から残り設定可能数302bの値を入力し、ブレークポイントの情報をブレークポイント振り分け部404へ出力する。ブレークポイント情報テーブル302を初期化する図2の制御フローチャートと、ブレークポイント設定テーブル205を作成する図3のフローチャートは、ブレークポイント情報テーブル302内に位置する。振り分け条件テーブル303は、振り分け条件用情報収集部403から、変数アクセスブレーク303aとブレークポイント設定アドレスが含まれる領域情報303bの値をそれぞれ入力とし、振り分け条件情報をブレークポイント振り分け部404に出力する。シンボル情報テーブル401は、コンパイラ情報マージ部405が生成するシンボル情報と領域情報をマージした情報を入力とし、シンボル情報を振り分け条件用情報収集部403に出力する。セクション情報テーブル402は、コンパイラ情報マージ部405が生成するセクション情報と領域情報をマージした情報を入力とし、シンボル情報を振り分け条件用情報収集部403に出力する。振り分け条件用情報収集部403は、ブレークポイント設定アドレス205cとシンボル情報テーブル401とブレークリソース管理部504から取得したすべてのブレークポイントの残り設定数の値を入力とし、CPU-ID205aにブレークさせるCPU-IDの値1もしくは2、または、ブレークポイント設定アドレスが共用領域の場合にどのCPUが通ってもブレークするようにすべてのCPU-IDの値を設定するために1、2とする、有効フラグ205bにYESの値、残り設定可能数302bにブレークリソース管理部504から取得したブレークポイントの残り設定数、変数アクセスブレーク303aにYESまたはNOの値、ブレークポイント設定アドレスが含まれる領域情報303bにPE1、PE2または共用の文字列をそれぞれ出力する。ブレークポイント振り分け部404は、残り設定可能数302bとブレークポイント設定アドレスが含まれる領域情報303bの値をそれぞれ入力とし、振り分けたブレークポイントの名称をブレークポイント種類205dに出力する。コンパイラ情報マージ部405は、コンパイラ801から出力されるシンボル情報と領域情報PE1、PE2、または、共用とセクション情報をそれぞれ入力とし、入力情報のシンボル情報と領域情報をマージしてシンボル情報テーブル401を生成し、セクション情報と領域情報をマージしてセクション情報テーブル402を生成する。図8a、図8bは、コンパイラ情報マージ部405によって生成されるテーブルを示す。図8aは、コンパイラ情報マージ部405が生成するシンボル情報テーブル401であり、シンボルの名前とシンボルの属性401aとシンボルのアドレス401bとサイズ401cとプロセッサの領域情報401dとを1組として、シンボルの数分を有する。コンパイラにより、他の情報を追加することもできる。図8bは、コンパイラ情報マージ部405が生成するセクション情報テーブル402であり、シンボルの名前とシンボルのオフセット402aとデータサイズ402bとデータタイプ402cとプロセッサの領域情報402dとを1組として、セクションの数分を有する。コンパイラにより、他の情報を追加することもできる。図8a、図8bの領域情報401d、402dは、ブレークポイント設定アドレスがPE1、PE2、共用のどの領域に含まれるかを調べるための情報である。図9は、ブレークポイント設定テーブル205を示す。ブレークポイント設定テーブル205は、ブレークさせたいCPUのID番号を表すCPU-ID205aと、ブレークポイント設定部505でブレークを設定するか否かを表す有効フラグ205bと、ブレークポイントを設定するアドレスを表すブレークポイント設定アドレス205cと、どのブレークポイントを使用するかを表すブレークポイント種類205dとを1組として、ユーザのブレークポイント設定要求の数分を有する。図10は、ブレークポイント情報テーブル302を示す。ブレークポイント情報テーブル302は、ブレークポイントの名称を表すブレークポイント種類302aと、残りいくつのブレークポイントを設定できるかを表す残り設定可能数302bと、PE1領域またはPE2領域にいくつブレークポイントを設定すればPE1またはPE2がブレークするかを表すブレーク使用数PE1/PE2302cと、共用領域にいくつブレークポイントを設定すればPE1またはPE2が必ずブレークするかを表すブレーク使用数共用302dと、デバッガ部501でサポートされており、デバッグに使用可能か否かを表す使用可能302eとを1組として、設定したブレークの数分を有する。ブレークポイント種類302aと残り設定可能数302bとブレーク使用数PE1/PE2302cとブレーク使用数共用302dは、デバッグシステムに依存する。ブレーク使用数共用302dは、すべてのCPUでブレークさせる必要があるため、拡張ソフトウェアブレーク以外はCPUの数だけ消費する。使用可能302eは、ブレークポイント種類302aのブレーク機能が、現在のデバッグシステムで使える場合にはYES、使えない場合にはNOになる。図11は、振り分け条件テーブル303である。振り分け条件テーブル303は、どのブレークポイントを優先して使用するかを判断するための情報であり、設定するブレーク機能が変数へのアクセスブレークであるかをチェックした結果を設定する変数アクセスブレーク303aと、ブレーク設定アドレスがどの領域に含まれるかをチェックした結果を設定するブレークポイント設定アドレスが含まれる領域情報303bとを有する。図2は、ユーザがデバッグ作業を開始した直後に、デバッガ部501の初期化処理の中で呼ばれる、ブレークポイント情報テーブル302の初期化の制御フローチャートである。図3は、ユーザがデバッグ作業中にブレークポイントを設定する際にブレークポイント設定部505から呼ばれる、作業を開始する際のブレークポイント設定テーブル作成処理の制御フローチャートである。図2および図3を参照して、図1に示したプログラムデバッグ装置の動作を説明する。図2は、ブレークポイント情報テーブル302の初期化の制御フローチャートである。ブレークポイント振り分け処理部301は、ブレークリソース管理部504から、ブレークポイント種類302a、ブレーク使用数PE1/PE2302c、ブレーク使用数共用302d、および、使用可能302eの値を取得し、ブレークポイント情報テーブル302に情報を設定するステップS100。図3は、ブレークポイント設定テーブル205の作成処理の制御フローチャートである。ブレークポイント振り分け処理部301は、ブレークポイント設定テーブル205に新しい行を追加するステップS200。ユーザは、GUI部502を介して、ブレークポイントを設定するアドレスをブレークポイント設定アドレス205cに設定するステップS201。振り分け条件用情報収集部403は、ブレークポイントを振り分けるための判断材料となる情報を、作成または収集して取得するために、図4に示す関数を実行するステップS202。ブレークポイント振り分け部404は、ステップS202で取得した情報を元にブレークポイントを振り分けるために、図5~7に示す関数を実行するステップS203。ブレークポイント振り分け処理部301は、GUI部502を介してユーザにブレークポイントを他にも設定するかを問い合わせステップS204、ユーザが他のブレークポイントを設定する場合にはステップS204のYES、ステップS200へ進み、ユーザが他のブレークポイントを設定しない場合にはステップS204のNO、初期化フローチャートを終了する。図4は、振り分け条件用情報収集部403の制御フローチャートである。振り分け条件用情報収集部403は、シンボル情報テーブル401の一番上のフィールド行を取得するステップS300。振り分け条件用情報収集部403は、フィールドの中身を調べステップS301、フィールドがなければステップS301のYES、ブレークポイント設定アドレス205cが含まれるシンボル情報が見つからなかったのでステップS302に進み、フィールドがあればステップS301のNO、ステップS305に進む。ブレークポイント設定アドレス205cが含まれるシンボル情報が見つからなかったということは、アクセスブレークを設定すべき変数がみつからないことを意味し、変数へのアクセスブレークではないので、振り分け条件用情報収集部403は、変数アクセスブレーク303aをNOに設定するステップS302。ブレークポイント設定アドレス205cが含まれるシンボル情報が見つからなかった場合には、どのブレークポイントを設定するべきかを判断することができないため、PE1でもPE2でもブレークするブレーク機能を選ぶ必要がある。したがって、振り分け条件用情報収集部403は、ブレークポイント設定アドレスが含まれる領域情報303bを共用に設定するステップS303。ブレークポイント設定アドレス205cが含まれるシンボル情報が見つからなかった場合には、どのCPUにブレークポイントを設定するべきかを判断できないため、CPU1でもCPU2でも対象とする。したがって、振り分け条件用情報収集部403は、CPU-ID205aに、CPU1を示す1とCPU2を示す2との両方を表す、1と2を設定するステップS304。振り分け条件用情報収集部403は、ブレークポイント設定アドレス205cがフィールド行のアドレス401b~アドレス401bサイズ401c内に含まれているかを判断しステップS305、領域内に含まれる場合にはステップS305のYES、ステップS307に進み、領域内に含まれない場合にはステップS305のNO、ステップS306に進む。振り分け条件用情報収集部403は、次のフィールド行を取得しステップS306、ステップS301に戻り、処理を繰り返し実行する。振り分け条件用情報収集部403は、フィールド行の属性401aが変数かを判断しステップS307、変数ならばステップS307のYES、変数アクセスブレーク303aをYESに設定してステップS308、ステップS310に進み、変数でなければステップS307のNO、変数アクセスブレーク303aをNOに設定してステップS309、ステップS310に進む。振り分け条件用情報収集部403は、フィールド行の領域情報401dがPE1かを判断しステップS310、PE1ならばステップS310のYES、ステップS311に進み、PE2か共用であればステップS310のNO、ステップS313に進む。振り分け条件用情報収集部403は、ブレークポイント設定アドレスが含まれる領域情報303bをPE1に設定するステップS311。また、振り分け条件用情報収集部403は、CPU-ID205aに1を設定するステップS312。振り分け条件用情報収集部403は、フィールド行の領域情報401dがPE2かを判断しステップS313、PE2ならばステップS313のYES,ステップS314に進み、共用であればステップS313のNO、ステップS316に進む。振り分け条件用情報収集部403は、ブレークポイント設定アドレスが含まれる領域情報303bをPE2に設定するステップS314。また、振り分け条件用情報収集部403は、CPU-ID205aに2を設定するステップS315。振り分け条件用情報収集部403は、ブレークポイント設定アドレスが含まれる領域情報303bを共用に設定するステップS316。また、振り分け条件用情報収集部403は、CPU-ID205aに1と2を設定するステップS317。振り分け条件用情報収集部403は、有効フラグ205bをYESに設定するステップS318。振り分け条件用情報収集部403は、ブレークリソース管理部504からすべてのブレークポイントの残り設定数を取得するステップS319。振り分け条件用情報収集部403は、取得したブレークポイントの残り設定数を残り設定可能数302bにすべて設定するステップS320。図5は、ブレークポイント振り分け部404の制御フローチャートである。ブレークポイント振り分け部404は、変数アクセスブレーク303aの設定が変数アクセスブレークかを判断しステップS400、変数アクセスブレークであればステップS400のYES、ステップS401に進み、変数アクセスブレークでなければステップS400のNO、ステップS402に進む。変数アクセスブレークの場合ステップS400のYES、変数アクセスブレーク用振り分けフローチャートを実行するステップS401。一方、変数アクセスブレークでない場合ステップS400のNO、関数ブレーク用振り分けフローチャートを実行するステップS402。図6は、関数ブレーク用ブレークポイント振り分け図5のステップS402の制御フローチャートである。ブレークポイント振り分け部404は、ブレークポイント設定アドレスが含まれる領域情報303bに共用が設定されているか判断しステップS500、共用であればステップS500のYES、ステップS501に進み、PE1またはPE2であればステップS500のNO、ステップS502に進む。ブレークポイント振り分け部404は、ブレーク使用数共用302dが最小のブレークポイントをブレークポイント種類205dに設定しステップS501、処理を終了する。ブレークポイント振り分け部404は、ブレークポイント設定アドレスが含まれる領域情報303bにPE1が設定されているか判断しステップS502、PE1であればステップS502のYES、ステップS508に進み、PE2であればステップS502のNO、ステップS503に進む。ブレークポイント振り分け部404は、CPU2に内蔵されているハードウェアブレーク機能以下、CPU2コア内蔵ハードウェアブレークという。とPE2に内蔵されている拡張ハードウェアブレーク以下、PE2拡張ハードウェアブレークという。の残り設定可能数302bがそれぞれ0であるかを判断しステップS503、0であればステップS503のYES、ステップS504に進み、0以外であればステップS503のNO、ステップS505に進む。ブレークポイント振り分け部404は、CPU2に内蔵されているソフトウェアブレーク機能以下、CPU2コア内蔵ソフトウェアブレークという。を振り分けたブレーク機能であるとし、CPU2コア内蔵ソフトウェアブレークという文字列をブレークポイント種類205dに設定しステップS504、処理を終了する。ブレークポイント振り分け部404は、CPU2コア内蔵ハードウェアブレークとPE2拡張ハードウェアブレークとの間で、残り設定可能数302bの大小を比較しステップS505、CPU2コア内蔵ハードウェアブレークの方が大きいか等しい場合にはステップS505のYES、ステップS507に進み、小さい場合にはステップS505のNO、ステップS506に進む。ブレークポイント振り分け部404は、PE2拡張ハードウェアブレークを振り分けたブレーク機能であるとし、PE2拡張ハードウェアブレークという文字列をブレークポイント種類205dに設定しステップS506、処理を終了する。ブレークポイント振り分け部404は、CPU2コア内蔵ハードウェアブレークを振り分けたブレーク機能であるとし、CPU2コア内蔵ハードウェアブレークという文字列をブレークポイント種類205dに設定しステップS507、処理を終了する。ブレークポイント振り分け部404は、CPU1に内蔵されているハードウェアブレーク機能以下、CPU1コア内蔵ハードウェアブレークという。とPE1に内蔵されている拡張ハードウェアブレーク以下、PE1拡張ハードウェアブレークという。の残り設定可能数302bがそれぞれ0かを判断しステップS508、0であればステップS508のYES、ステップS509に進み、0以外であればステップS508のNO、ステップS510に進む。ブレークポイント振り分け部404は、CPU1に内蔵されているソフトウェアブレーク機能以下、CPU1コア内蔵ソフトウェアブレークという。を振り分けたブレーク機能であるとし、CPU1コア内蔵ソフトウェアブレークという文字列をブレークポイント種類205dに設定しステップS509、処理を終了する。ブレークポイント振り分け部404は、CPU1コア内蔵ハードウェアブレークとPE1拡張ハードウェアブレークの残り設定可能数302bの大小を比較しステップS510、CPU1コア内蔵ハードウェアブレークが大きいか等しい場合にはステップS510のYES、ステップS512に進み、小さい場合にはステップS510のNO、ステップS511に進む。ブレークポイント振り分け部404は、PE1拡張ハードウェアブレークを振り分けたブレーク機能であるとし、PE1拡張ハードウェアブレークという文字列をブレークポイント種類205dに設定しステップS511、処理を終了する。ブレークポイント振り分け部404は、CPU1コア内蔵ハードウェアブレークを振り分けたブレーク機能であるとし、CPU1コア内蔵ハードウェアブレークという文字列をブレークポイント種類205dに設定しステップS512、処理を終了する。図7は、変数ブレーク用ブレークポイント振り分け図5のステップS401の制御フローチャートである。ブレークポイント振り分け部404は、ブレークポイント設定アドレスが含まれる領域情報303bの内容が共用かを判断しステップS600、共用であればステップS600のYES、ステップS601に進み、PE1かPE2であればステップS600のNO、ステップS602に進む。ブレークポイント振り分け部404は、ブレーク使用数共用302dが最小のブレークポイントを選び出し、ブレークポイント種類205dに設定するステップS601。ブレークポイント振り分け部404は、ブレークポイント設定アドレスが含まれる領域情報303bの内容がPE1かを判断しステップS602、PE1であればステップS602のYES、ステップS606に進み、PE2であればステップS602のNO、ステップS603に進む。ブレークポイント振り分け部404は、CPU2コア内蔵ハードウェアブレークとPE2拡張ハードウェアブレークとの間で、残り設定可能数302bの大小を比較しステップS603、CPU2コア内蔵ハードウェアブレークが大きいか等しい場合にはステップ603のYES、ステップS605に進み、小さい場合にはステップS603のNO、ステップS604に進む。ブレークポイント振り分け部404は、PE2拡張ハードウェアブレークを振り分けたブレーク機能であるとし、PE2拡張ハードウェアブレークという文字列をブレークポイント種類205dに設定しステップS604、処理を終了する。ブレークポイント振り分け部404は、CPU2コア内蔵ハードウェアブレークを振り分けたブレーク機能であるとし、CPU2コア内蔵ハードウェアブレークという文字列をブレークポイント種類205dに設定しステップS605、処理を終了する。ブレークポイント振り分け部404は、CPU1コア内蔵ハードウェアブレークとPE1拡張ハードウェアブレークの残り設定可能数302bの大小を比較しステップS606、CPU1コア内蔵ハードウェアブレークが大きいか等しい場合にはステップS606のYES、ステップS608に進み、小さい場合にはステップS606のNO、ステップS607に進む。ブレークポイント振り分け部404は、PE1拡張ハードウェアブレークを振り分けたブレーク機能であるとし、PE1拡張ハードウェアブレークという文字列をブレークポイント種類205dに設定しステップS607、処理を終了する。ブレークポイント振り分け部404は、CPU1コア内蔵ハードウェアブレークを振り分けたブレーク機能であるとし、CPU1コア内蔵ハードウェアブレークという文字列をブレークポイント種類205dに設定しステップS608、処理を終了する。本実施形態においては、図8上段に示したシンボル情報テーブル401を用いて、図4の振り分け条件用情報収集部403内のステップS305とステップS307の条件分岐の判断を行った。一方、図8下段に示したセクション情報テーブル402を使用することも可能である。コンパイラ情報マージ部405より生成される図8の情報テーブルと、図10のブレークポイント情報テーブルを参照して、図2~図7の動作を説明する。説明において、ブレークポイントを0x301016進数番地に設定する。ブレークポイント振り分け処理部301は、図2のブレークポイント情報テーブル302の作成処理を実行し、ブレークリソース管理部504から、ブレークポイント種類302a、ブレーク使用数PE1/PE2302c、ブレーク使用数共用302d、および、使用可能302eの値を取得し、図10のブレークポイント情報テーブル302に情報を設定する。次に、ブレークポイント振り分け処理部301は、図3のブレークポイント設定テーブル作成処理の制御フローチャートを実行し、0x3010番地に設定するのに最適なブレーク機能を、ブレークポイント種類302aの中から選択して、ブレークポイント種類205dに文字列として設定する。まず、ユーザは、GUI部502を介して、ブレークポイント設定アドレス205cに0x3010を設定する。次に、ブレークポイント振り分け処理部301は、振り分け条件用情報収集部403を実行する。ブレークポイント振り分け処理部301は、シンボル情報テーブル401のあるフィールド行において、名前がFunc1、属性401aが関数、アドレス401bが0x3000、サイズ401cが0x300、領域情報401dがPE1である場合、ブレークポイント設定アドレス0x3010は、関数Func1内にあるため、変数アクセスブレーク303aはNOとなり、ブレークポイント設定アドレスが含まれる領域情報303bにPE1が設定される。次に、ブレークポイント振り分け処理部301は、ブレークポイント振り分け部404を実行すると、変数アクセスブレーク303aがNOであるため図5のステップS400のNO、図6に示す関数ブレーク用振り分け関数処理に分岐し、ブレークポイント設定アドレスが含まれる領域情報303bがPE1であるため図6のステップS500のNO、ステップS502のYES、PE2拡張ハードウェアブレークとCPU2コア内蔵ハードウェアブレークとCPU2コア内蔵ソフトウェアブレークは使用しない。CPU1コア内蔵ハードウェアブレークとPE1拡張ハードウェアブレークの残り設定可能数302bをそれぞれ4、6とすると、0でないことから図6のステップS508のNO、CPU1コア内蔵ソフトウェアブレークは使用しない。PE1拡張ハードウェアブレークは、CPU1コア内蔵ハードウェアブレークよりも、残り設定可能数302bが大きいためステップS510のNO、PE1拡張ハードウェアブレークに振り分ける。この結果、PE1拡張ハードウェアブレークがブレークポイント種類205dに設定されステップS511、振り分けられたブレーク機能となる。本実施形態のプログラムデバッグ装置500は、特定の条件等でプログラムを停止ブレークさせマルチプロセッサシステムの検証をするプログラムデバッグ装置であって、マルチプロセッサシステム上で実行するプログラム開発時に、コンパイラが出力する複数の情報をマージして情報テーブル401または402を生成するコンパイラ情報マージ部405と、ブレーク条件が設定可能かを判断するため、情報テーブル401または402等より情報を収集してブレークポイント情報テーブル302を作成または追加する振り分け条件用情報収集部403と、それぞれの情報テーブルの情報を元に、ブレークポイント設定テーブル205に設定するブレーク条件の振り分けを行なうブレークポイント振り分け部404と、を備えブレーク条件を設定する際に、前記情報テーブルより領域等を判断して、ブレークポイント情報テーブル302から各プロセッサのブレーク設定状態を判断して、設定可能な条件を前記ブレークポイント設定テーブルに設定する。このように、本実施形態では、ブレークポイント振り分け処理部301においてブレークポイントを振り分けることにより、不要なPEでのブレークを回避し、リアルタイム性を損なわずにプログラムのデバッグをすることができる。なお、上記の特許文献等の先行技術文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示請求の範囲を含むの枠内において、さらにその基本的技術思想に基づいて、実施形態の変更調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。"