JP4944368B2 - マルチプロセッサシステム、デバッグ方法、及びプログラム - Google Patents

マルチプロセッサシステム、デバッグ方法、及びプログラム Download PDF

Info

Publication number
JP4944368B2
JP4944368B2 JP2004170291A JP2004170291A JP4944368B2 JP 4944368 B2 JP4944368 B2 JP 4944368B2 JP 2004170291 A JP2004170291 A JP 2004170291A JP 2004170291 A JP2004170291 A JP 2004170291A JP 4944368 B2 JP4944368 B2 JP 4944368B2
Authority
JP
Japan
Prior art keywords
program
instruction
break
breakpoint
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004170291A
Other languages
English (en)
Other versions
JP2005352591A (ja
Inventor
真之 小田川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2004170291A priority Critical patent/JP4944368B2/ja
Publication of JP2005352591A publication Critical patent/JP2005352591A/ja
Application granted granted Critical
Publication of JP4944368B2 publication Critical patent/JP4944368B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、マルチプロセッサシステム、デバッグ方法、及びプログラムに関し、特に、複数のプロセッサを備えたマルチプロセッサシステム、該マルチプロセッサシステムに適用されるデバッグ方法、及び該デバッグ方法をコンピュータに実行させるためのプログラムに関する。
具体的には、デバッグ対象プログラムにブレークポイントを設け、ブレークポイントにおいてデバッグ対象プログラムの実行を中断し、デバッグ端末からオペレータがコマンドを与えることでデバッグ対象プログラムのデバッグを行うマルチプロセッサシステムに係わるものである。
プログラム開発時にプログラムの挙動を確認したり、不具合を発見、修正したりするために利用するデバッガプログラムには、デバッグ対象プログラムの実行を所定の命令で中断するブレークポイント機能が備えられている。この機能は、デバッグ対象プログラム上のあらかじめ指定した任意の命令でデバッグ対象プログラムの実行を中断させるものである。オペレータは、あらかじめ実行を停止させたい命令を指定しておいてから、デバッグ対象プログラムを始動させる。デバッグ対象プログラムが指定された命令で停止した時点で、オペレータはレジスタやメモリの値を調べたり、また、変更したりすることも可能である。その後、デバッグ対象プログラムをブレークポイントで停止した時点の状態から再開させることが可能である。このブレークポイント機能の実現手段としては、従来、次のような方法が知られている(非特許文献1および非特許文献2参照)。
(1)オペレータによりブレークポイントに指定された命令をトラップ命令で置き換え、デバッグ対象プログラムの実行中にトラップ命令が検知されると、トラップが発生し、トラップ処理ルーチンを介してデバッガプログラムが起動される。デバッグ対象プログラムの実行再開が指示されると、トラップ命令に置き換えられた元の命令の実行をシミュレートした後、制御をデバッグ対象プログラムに戻す。この方法には次の特徴がある。
デバッグ対象プログラム中に複数のブレークポイントを設定できる。また、ブレークポイントを検知するための特別なハードウェアを必要としない。
(2)ハードウェアにブレークポイントレジスタを設け、実行を停止させたいデバッグ対象プログラムの命令アドレスをブレークポイントレジスタ内に保持する。デバッグ対象プログラム実行中に、このブレークポイントレジスタで指定される命令が検知されると、トラップが発生し、トラップ処理ルーチンを介してデバッガプログラムが起動される。デバッグ対象プログラムの実行再開が指示されると、制御をデバッグ対象プログラムに戻す。この方法では次の特徴がある。
デバッグ対象プログラムを書き換えることがなく、また、命令の置き換えがないため命令の実行をシミュレートする必要がない。
(3)デバッグ対象プログラムの命令ごとにブレークポイントを制御するフラグを用意し、オペレータによりブレークポイントに指定された命令のフラグをセットする。このフラグがセットされている命令が検知されると、トラップが発生し、トラップ処理ルーチンを介してデバッガプログラムが起動される。デバッグ対象プログラムの実行再開が指示されると、制御をデバッグ対象プログラムに戻す。この方法では次の特徴がある。
デバッグ対象プログラムに複数のブレークポイントを設定でき、また、命令の置き換えがないため命令の実行をシミュレートする必要がない。
また、複数のプロセッサを有したマルチプロセッサシステムにおけるデバッガプログラムとしては、特許文献1および特許文献2に記載されたものがある。ここでは、ブレークポイント機能は、従来技術を使用しており、複数のプロセッサのうち、ある1つのプロセッサの状態によりトラップを発生し、デバッガプログラムを起動している。
「32ビット・マイクロプロセッサ」日経マグロウヒル(p.178) 飯塚・田中著「ソフトウェア指向アーキテクチャ」オーム社(p.212) 特開平6−332747号公報 特開平10−187486号公報
しかしながら、上述したブレークポイントを設定しプログラムデバッガを起動する従来の方式では、ブレークポイントの発生条件が単一であるため、マルチプロセッサシステムで実行されるプログラムのデバッグを行う場合に、ある1つのプロセッサの状態によりブレーク要因が発生すると、常にデバッグ対象プログラムが中断される。このため、マルチプロセッサシステムでの複数のプロセッサの動作状態によっては、デバッグ情報が変わってしまったり、また、複数のプロセッサ間の通信状態によっては、本来のデバッグ対象プログラムを中断してデバッグを行うべき状態ではないにも拘わらず、デバッグ対象プログラムを中断してデバッグを行ってしまったりする不具合が発生する可能性があった。
また、オペレータが、デバッグ対象プログラム中にブレークポイントを複数設定することができても、実際にデバッグを行いたい状態でデバッグ対象プログラムを中断させるためには、所望の状態に各プロセッサの状態が遷移するまで、何度もブレークポイントをヒットさせ、デバッグ対象プログラムの実行を中断させる必要があり、デバッグの効率が悪いという問題点があり、複数のプロセッサが密に連結し同時並列動作を行うようなプログラムのデバッグには適していなかった。
本発明はこのような問題点に鑑みてなされたものであって、デバッグ専用の特別なハードウェアを付加することなく、複数のブレークポイントを設定でき、デバッグ効率を向上できるマルチプロセッサシステム、デバッグ方法、及びプログラムを提供することを目的とする。
上記目的を達成するために、本発明は、複数のプロセッサを備えた情報処理装置に実行させるプログラムであって、前記情報処理装置を、デバッグ対象プログラムと通信制御プログラムとの夫々について、所定の命令を実行するプロセッサの識別情報と当該所定の命令のアドレスとの組み合わせをブレーク条件としてメモリに格納する格納手段と、前記デバッグ対象プログラムと前記通信制御プログラムの夫々を前記情報処理装置の複数のプロセッサが実行した際に発生するブレークの要因となった命令のアドレスと当該命令を実行したプロセッサの識別情報との組み合わせをブレーク履歴として前記メモリに記憶する記憶手段と、前記ブレーク履歴として存在するプロセッサ識別情報と命令アドレスの複数の組み合わせが、前記ブレーク条件として存在するプロセッサ識別情報と命令アドレスの複数の組み合わせの全てと一対一で一致するか否かを判定する判定手段として機能させることを特徴とする。
本発明によれば、デバッグ対象プログラムと通信制御プログラムとの夫々を複数のプロセッサが実行した場合の所定のブレークポイントに対応する各プロセッサにおける各ブレークポイント発生条件をブレークポイント設定テーブルに設定するとともに、各プロセッサで発生した各ブレーク要因をブレークポイント履歴テーブルに格納する。そして、前記ブレークポイント履歴テーブルに格納されたブレーク要因と前記ブレークポイント設定テーブルに設定されたブレークポイント発生条件とが一致するか否かを判定することで不具合が発生したかどうかを判定することができる。
これにより、デバッグ専用の特別なハードウェアを付加することなく、複数のブレークポイントをデバッグ対象プログラムと通信制御プログラムの夫々に設定でき、通信制御プログラムでブレークが発生する条件だけでデバッグを起動させないようにするのでデバッグ効率を向上させることができる。
以下、本発明を実施するための最良の形態について、図面を参照して説明する。
〔第1の実施の形態〕
図1は、本発明の第1の実施の形態に係るマルチプロセッサシステムの構成を示すブロック図である。
図中、101はマルチプロセッサシステムであり、オペレーティングシステムおよび主要なアプリケーションプログラムが実行されるメインプロセッサ(以下「メインCPU」という)102と、メインCPU102に制御信号109により接続された複数(n個)のサブプロセッサ(以下「サブCPU」という)103a〜103dと、これらのCPU102,103a〜103dと共有バス108により接続されるメモリコントローラ107と、メモリコントローラ107に接続された共有メモリ106とから構成される。
マルチプロセッサシステム101内の各CPUは、メモリコントローラ107を介して、共有メモリ106に対し情報の書き込みと読み出しの機能を持っており、共有メモリ106を介して情報交換を行う。また、マルチプロセッサシステム101の動作手順を定めるプログラムは共有メモリ106内に記憶され、メインCPU102はそのプログラムに従い、制御信号109を介して複数のサブCPU103a〜103dの制御を行いながら動作する。マルチプロセッサシステム101で実行されるプログラムのデバッグは、メインCPU102にデバッガ制御部104を介して接続されたデバッガ端末105を用いて行う。
なお、マルチプロセッサシステム101内のメインCPU102とサブCPU103a〜103dとは異なるタイプのプロセッサである。
すなわち、メインCPU102は、オペレーティングシステムやアプリケーションプログラムを実行するための高性能なプロセッサで構成される。メインCPU102からは、制御信号109を介して複数のサブCPU103a〜103dの起動・停止・再開といった制御が可能である。
複数のサブCPU103a〜103dは全て、同一タイプのプロセッサで構成され、マルチプロセッサシステム101内にある機能モジュール間の通信制御など、限られた目的で使用される専用プロセッサである。
図2は、共有メモリ106に設定格納される情報や領域を示す図である。なお、図2でも、図1と同様に、メインCPU102と複数のサブCPU103a〜103dとデバッガ制御部104とデバッガ端末105とを示すが、メモリコントローラ107の図示は省略している。
共有メモリ106内には、メインCPU102で実行されるデバッグ対象プログラム201、デバッガプログラム202、デバッガインタフェース203、コマンドインタフェース204、ブレークポイント設定テーブル205、ブレークポイント履歴テーブル206、命令退避領域207、レジスタ退避領域208が設定されている。
ここで、デバッガインタフェース203は、デバッガプログラム202とデバッグ対象プログラム201との間の情報交換に使用される。コマンドインタフェース204は、デバッガ端末105からオペレータにより入力されるコマンドを受け付け、デバッガプログラム202に情報を受け渡すのに使用される。またコマンドインタフェース204は、デバッガプログラム202からの情報をデバッガ端末105に表示し、オペレータに対してデバッグ情報を通知するのに使用される。ブレークポイント設定テーブル205は、デバッガ対象プログラム201を中断させるためのブレークポイントを設定するためのテーブルである(図3を参照して後述)。ブレークポイント履歴テーブル206は、発生したブレーク要因の履歴を格納するテーブルである(図6を参照して後述)。命令退避領域207は、ブレークポイント発生条件を示す命令がトラップ命令などに置換される場合、元の命令の退避格納領域として使用される。レジスタ退避領域208は、デバッグ対象プログラム201の実行が中断され、デバッガプログラム202が呼び出され実行されるときに、各CPUのレジスタ内容を退避させ、格納しておくための退避格納領域として使用される。
つぎに、ブレークポイントの設定について説明する。
ここで、メインCPU102上においてアプリケーションプログラムが実行され、メインCPU102の制御の下で、サブCPU103a〜103dが同時並列的にマルチプロセッサシステム101内の機能モジュール間の通信制御プログラムを実行しているものとする。このような状態において、メインCPU102上で実行されているアプリケーションプログラムをデバッグ対象プログラム201としてデバッグを行う場合、オペレータは、予めプログラムを中断してレジスタやメモリの情報を調べるためのブレークポイントを、デバッガ端末105からコマンドを入力して設定する。オペレータがデバッガ端末105から入力したコマンドは、コマンドインタフェース204を介してデバッガプログラム202で受け付けられる。デバッガプログラム202は、コマンドを解析し、デバッガインタフェース203を介して、共有メモリ106内のブレークポイント設定テーブル205にブレークポイントを設定する。
図3は、本発明の第1の実施の形態におけるブレークポイント設定テーブル205の記載内容を示す図である。
メインCPU102とn個のサブCPU103a〜103dとに対してブレークポイント発生条件をそれぞれ設定し、各CPUでブレークポイント発生条件が満たされたときトラップを発生し、デバッグ対象プログラムを中断させるために、ブレークポイント設定テーブル205は、1つのブレークポイントに対し複数個の設定フィールド(図3に示すテーブルの各行)を持っている。
各フィールドは、CPU/IDが記載される列205aと、ブレークポイント発生条件が記載される列205cと、その条件を有効にするか否かを示すフラグが記載される205bとから構成される。ブレーク要因を発生させる対象となる全てのCPUについて、このブレークポイント設定テーブル205に、CPU/IDとブレークポイント発生条件と有効フラグとを設定することで、デバッグ対象プログラム201に対するブレークポイントの設定が終了する。
列205aに記載されるCPU/IDは、各CPUに一意に付与されている個別の識別子であり、マルチプロセッサシステム101内に同一のCPU/IDを持つCPUが複数存在することは無い。列205cに記載されるブレークポイント発生条件としては、対応のCPUが実行する命令の中で、対象となる1つの命令の命令アドレスが設定される。列205bに記載される有効フラグは、対応のブレークポイント発生条件が有効であるか、すでにそのブレーク要因が発生して無効になっているかを示す。
なお、ブレーク要因を発生させるCPUは複数である必要はない。また、ブレークポイント発生条件が1つしか設定されていなくても問題はない。ブレーク要因を発生させる対象とならないCPUに関しては、フィールドを設定する必要はない。
また、ブレークポイント発生条件として設定された命令アドレスに対応する命令は、デバッガプログラム202によりトラップ命令に置換される。置換される前の命令は命令退避領域207に退避格納される。
ブレークポイント設定テーブル205は、図3では1つのみ示しているが、ブレークポイント設定テーブル205は、異なるブレークポイントごとに設けられ、したがって、共有メモリ106内に複数格納されることもある。
オペレータが所望のブレークポイントの設定を終了すると、デバッガプログラム202からデバッグ対象プログラム201に制御を移し、デバッガ対象プログラム201を始動させる。
次に、図4を参照してデバック処理を説明する。
図4は、本発明の第1の実施の形態におけるデバッグ処理の手順を示すフローチャートである。
デバッグ対象プログラム201実行中に、デバッガプログラム202により各サブCPU103a〜103dとメインCPU102とのプログラムカウンタの情報が、マルチプロセッサシステム101の動作クロックに合わせて収集される。
メインCPU102及び複数のサブCPU103a〜103dのうちの1つが、ブレークポイント発生条件の設定により置換されたトラップ命令を検知すると、図5に示すトラップ処理ルーチンが実行される(S1)。
なお、ブレーク要因が発生していない場合、デバッグ対象プログラム201の実行は要因が発生するまで続けられる。
図5は、トラップ処理ルーチンの手順を示すフローチャートである。
図5において、トラップ命令が検知されると、トラップ命令を検知したCPUがトラップ処理ルーチンを実行する。すなわち、トラップ命令を検知したCPUがサブCPU103a〜103dのうちの1つである場合、メインCPU102へトラップ命令の検知を通知し、メインCPU102は、制御信号109を介して他のサブCPUの実行を停止する。サブCPUからメインCPU102へのトラップ命令の検知通知は、割り込み処理により行なわれる。一方、トラップ命令を検知したCPUがメインCPU102である場合、メインCPU102は、制御信号109を介して全てのサブCPU103a〜103dの実行を停止する(S11)。
次に、トラップ命令を検知したCPUは、デバッガプログラム202を介してブレークポイント履歴テーブル206にアクセスして、CPU/ID、プログラムカウンタの内容、および、システムタイマの値を格納する(S12)。
図6は、ブレークポイント履歴テーブル206の記載内容を示す図である。
ブレークポイント履歴テーブル206には、トラップ命令を検知したCPUのCPU/IDが記載される列206aと、該CPUのプログラムカウンタの値が記載される列206bと、システムタイマの値が記載される列206cとが設けられ、トラップ命令の検知ごとに1行ずつ記載が行なわれる。
ステップS12では同時に、トラップ命令を検知したCPUが、ブレークポイント設定テーブル205にアクセスして、該CPUのCPU/IDに対応するフィールド(行)の列205bの有効フラグをクリアし、そのフィールドを無効にする。また、命令をトラップ命令に置換する前の命令に書き戻す。
次に、ブレークポイント設定テーブル205内の列205bにおいて、有効フラグが有効に設定されているものが残っていないかを走査する(S13)。その結果、有効フラグが有効になっているものがあった場合(S13でYES)、トラップ命令を検知したCPUでトラップ命令に置換される前の命令をシミュレートした後、実行停止しているサブCPUの実行を再開させ、デバッグ対象プログラム201の実行を再開させる(S11)。次のトラップ命令が検知されるまでデバッグ対象プログラム201の実行が進められる。これにより、このブレークポイントに関して、ブレークポイント設定テーブル205内の全てのブレークポイント発生条件が満たされるまで、デバッグ対象プログラム201の実行が進められる。
一方、ブレークポイント設定テーブル205内の列205bにおいて有効フラグがすべて無効に設定されている場合(S13でNO)、トラップ命令を検知したCPUのCPU/IDがメインCPU102のものであれば、メインCPU102は、全てのサブCPU103a〜103dの動作を停止し、さらに、全てのCPUレジスタの内容をレジスタ退避領域208に退避格納する(S14)。その後、デバッガプログラム202を呼び出し(S15)、デバッガプログラム202に制御を移す(図4のステップS2へ進む)。
一方、トラップ命令を検知したCPUのCPU/IDがサブCPU103a〜103dうちの1つであれば、メインCPU102へのトラップ命令の検知の通知が発生し、トラップ処理ルーチンを介して全てのCPUレジスタの内容が、レジスタ退避領域208に退避格納された後(S14)、デバッガプログラム202が呼び出され(S15)、デバッガプログラム202に制御が移される(図4のステップS2へ進む)。同時に、メインCPU102は、制御信号109を介して、それぞれ同時並列的に動作している他のサブCPUの実行を停止する。
次に図4のステップS2に戻って、該ステップS2では、デバッガプログラム202が呼び出され、起動されるが、この詳細な内容を、図7を参照して説明する。
図7は、図4のステップS2の詳細な内容を示すフローチャートである。
デバッガプログラム202が呼び出されると、デバッガプログラム202に制御を移すための環境が設定される(S21)。つぎに、全てのCPUの情報をデバッガプログラム202から走査できるようにするために、全てのCPUの同期化処理が行われる(S22)。
ここで、デバッガプログラム202は、デバッガインタフェース203を介して、ブレークポイント設定テーブル205とブレークポイント履歴テーブル206との比較処理を行う(S23)。すなわち、ブレークポイント設定テーブル205内のブレークポイント発生条件(図3の列205c)と、ブレークポイント履歴テーブル206内のプログラムカウンタの値(図6の列206b)とが一致し、かつ、それらに対応するCPU/ID同士が一致していた場合には(S24でYES)、ブレークポイント履歴テーブル206の内容を基に、CPU/ID、ブレーク発生条件、及びブレーク要因発生時のシステムタイマ値を含むブレークヒットメッセージを生成する(S25)。一方、一致していない場合には(S24でNO)、エラーメッセージを生成する(S26)。
デバッガプログラム202は、生成されたメッセージをデバッガ端末105に表示して(S26)、オペレータに対しブレークヒットの状況を通知した後、図4のステップS3へ進む。
図4のステップS3では、デバッグ対象プログラム201の実行が中断され、デバッガプログラム202に制御が移ることによって、オペレータがデバッグ端末105からデバッグコマンドの入力を行い、デバッグ作業を開始する。この処理内容を、図8を参照して説明する。
図8は、図4のステップS3の詳細な内容を示すフローチャートである。
オペレータによりデバッガ端末105からコマンドが入力されると、デバッガプログラム202は、コマンドインタフェース204を介してコマンドを受け付け、コマンドの解析を行う(S31)。その結果、デバッガ端末105から入力されたコマンドが、デバッグ対象プログラム201への復帰コマンドであった場合(S32でYES)、デバッガプログラム201が呼び出された時点の環境へ設定を戻し(S33)、デバッグ対象プログラム201のデバッグ作業を終了する。
一方、デバッガ端末105から入力されたコマンドが、デバッグ対象プログラム201への復帰コマンドでなかった場合(S32でNO)、デバッガプログラム202は、さらにコマンドインタフェース204を介して、オペレータによるデバッガ端末105からの入力を受け付け、デバッグ対象プログラム201によるデバッグ作業を継続させる。オペレータが所望のデバッグ情報を収集し、デバッグ対象プログラム201への復帰コマンドをデバッガ端末105から入力するまでデバッグ作業が続けられる。
図4に戻って、デバッガ端末105からオペレータにより、デバッグ対象プログラム201への復帰が指示されると(S4)、命令退避領域207に退避されていた、トラップ命令へ置換される前の命令を、トラップ命令を検知したCPUでシミュレートし、次に、レジスタ退避領域208に退避されていた他の全てのCPUのレジスタ情報を復帰させた後で、デバッグ対象プログラム201の実行が再開され(S5)、次のブレークポイントにヒットするまでデバッグ対象プログラム201の実行が続けられる。
なお、上記の第1の実施の形態では、デバッグ対象プログラム201は、メインCPU102上で実行されるアプリケーションプログラムとして説明したが、サブCPU103a〜103d上で実行される、マルチプロセッサシステム101内の機能モジュール間の通信制御プログラムをデバッグ対象プログラム201として、同じ方法でデバッグすることも可能である。
以上説明したように、本発明の第1の実施の形態におけるデバッガプログラム202では、ブレークポイントの設定に関して、ブレークポイント設定テーブル205を用いて、複数のCPUにおいてブレークポイント発生条件を個別に設定できるようにし、それらの条件がすべて満たされ、かつ、ブレークポイント設定テーブル205とブレークポイント履歴テーブル206とが一致した場合に、デバッグ対象プログラム201の実行を中断し、デバッガプログラム202を呼び出すようにしたので、次のような効果を奏することができる。
1)マルチプロセッサシステム101の所望の状態からデバッグ作業を開始でき、デバッグの効率を向上させることができる。
2)ブレークポイント設定テーブル205を、共有メモリ106内に任意個数、設定することができ、したがって、複数個のブレークポイントを設定できる。
3)デバッグ専用の特別なハードウェアを必要とせず、マルチプロセッサシステム101でデバッグ作業を容易に行うことができる。
〔第2の実施の形態〕
次に、本発明の第2の実施の形態を説明する。
第2の実施の形態の構成は、基本的に第1の実施の形態の構成と同じであるので、第2の実施の形態の説明においては、第1の実施の形態の構成と同一部分には同一の参照符号を付して、第1の実施の形態の説明を流用し、異なる部分だけを説明する。
図9は、本発明の第2の実施の形態におけるブレークポイント設定テーブルの記載内容を示す図である。
メインCPU102とn個のサブCPU103a〜103dとに対してブレークポイント発生条件をそれぞれ設定し、各CPUでブレークポイント発生条件が満たされたときトラップを発生し、デバッグ対象プログラムを中断させるために、第2の実施の形態におけるブレークポイント設定テーブルも、1つのブレークポイントに対し複数個の設定フィールド(図9に示すテーブルの各行)を持っている。
各フィールドは、CPU/IDが記載される列205gと、ブレークポイント発生条件が記載される列205fと、そのブレークポイント発生条件の前に発生するブレークポイント発生条件を表す先行IDが記載される列205hと、そのブレークポイント発生条件の後に発生するブレークポイント発生条件を表す後続IDが記載される列205iと、そのブレークポイント発生条件を有効にするか否かを示すフラグが記載される列205eと、そのブレークポイント発生条件個別の識別子であるIDが記載される列205dとから構成される。
ブレーク要因を発生させる対象となる全てのCPUについて、ブレークポイント発生条件を発生させたい順番に、ブレークポイント設定テーブルにおける最上のフィールドから順に、ID、CPU/ID、先行ID、後続ID、ブレークポイント発生条件を設定し、また有効フラグを設定する。これによって、デバッグ対象プログラム201に対するブレークポイントの設定が終了する。
列205gに記載されるCPU/IDは、各CPUに一意に付与される識別子であり、マルチプロセッサシステム101内に同一のCPU/IDを持つCPUが複数存在することは無い。列205fに記載されるブレークポイント発生条件としては、対応のCPUが実行する命令の中で、対象となる1つの命令の命令アドレスが設定される。列205eに記載される有効フラグは、対応のブレークポイント発生条件が有効であるか、すでにそのブレーク要因が発生して無効になっているかを示す。列205dに記載されるIDは、対応のフィールドを識別するための識別子であり、ブレークポイント設定テーブル内で重複する値になることは無い。列205hに記載される先行IDは、対応のブレークポイント発生条件の1つ前に発生するブレークポイント発生条件のIDを示す。一連のブレークポイント発生条件のうちで最初に発生させたいブレークポイント発生条件には、先行IDに、START条件であることを示すIDが設定される。列205iに記載される後続IDは、対応のブレークポイント発生条件の次に発生するブレークポイント発生条件のIDを示す。一連のブレークポイント発生条件で最後に発生させたいブレークポイント発生条件には、後続IDに、END条件であることを示すIDが設定される。
なお、ブレーク要因を発生させるCPUは複数である必要はない。ある1つのCPUでのブレークポイント発生条件を、時系列に沿って設定するようにしてもよい。また、ブレークポイント発生条件が1つのみ設定されていてもよい。ブレーク要因を発生させる対象とならないCPUに関しては、フィールドを設定する必要はない。
また、ブレークポイント設定テーブル内の列205hの先行IDに、START条件のIDが設定され、一連のブレークポイント発生条件で発生順序が最初のブレークポイント発生条件に設定されたフィールド(行)において、列205fに記載されたブレークポイント発生条件で示されるアドレスに対応する命令は、デバッガプログラム202によりトラップ命令に書き変えられる。置換される前の命令は命令退避領域207に退避格納される。
次に、図4に示す第1の実施の形態におけるデバッグ処理のフローチャートを流用して、第2の実施の形態におけるデバッグ処理を説明する。
デバッグ対象プログラム201の実行中に、メインCPU102を介して各サブCPU103a〜103dとメインCPU102のプログラムカウンタの情報が、マルチプロセッサシステム101の動作クロックに合わせて収集されている。
メインCPU102及び複数のサブCPU103a〜103dのうちの1つのCPUがブレークポイント発生条件の設定により置換されたトラップ命令を検知すると、図10に示すトラップ処理ルーチンが実行される(S1)。
なお、ブレーク要因が発生していない場合、デバッグ対象プログラム201の実行は要因が発生するまで続けられる。
図10は、トラップ処理ルーチンの手順を示すフローチャートである。
図10において、トラップ命令が検知されると、トラップ命令を検知したCPUがトラップ処理ルーチンを実行する。すなわち、トラップ命令を検知したCPUがサブCPU103a〜103dのうちの1つである場合、トラップ命令が検知されたことがメインCPU102へ通知され、メインCPU102は制御信号109を介して他のサブCPUの実行を停止する。サブCPUからメインCPU102へのトラップ命令の検知通知は割り込み処理により通知される。一方、トラップ命令を検知したCPUがメインCPU102である場合、メインCPU102は制御信号109を介して全てのサブCPU103a〜103dの実行を停止する(S41)。
次に、トラップ命令を検知したCPUは、デバッガプログラム202を介してブレークポイント履歴テーブル206にアクセスし、CPU/IDとプログラムカウンタの内容とシステムタイマの値とを格納する。同時に、トラップ命令を検知したCPUは、ブレークポイント設定テーブル205において、該CPUのCPU/IDに対応するフィールドの有効フラグをクリアし、そのフィールドを無効にする。また、命令をトラップ命令に置換する前の命令に書き戻す(S42)。
次に、ブレークポイント設定テーブル205内に、次に発生すべきブレーク要因が設定されていないか走査する(S43)。その結果、次に発生すべきブレーク要因が設定されている場合(S43でYES)、次のブレークポイント発生条件に設定されたフィールドに対応する命令はトラップ命令に置換される。そして、置換される前の命令は命令退避領域207に退避格納される。トラップ命令を検知したCPUは、トラップ命令に置換される前の命令をシミュレートした後、メインCPU102が、実行停止しているサブCPUの動作を再開させ、デバッグ対象プログラム201の実行を再開させる(S44)。次のトラップ命令が検知されるまでデバッグ対象プログラム201の実行が進められる。
ブレークポイント設定テーブル205内の有効フラグがすべて無効に設定され、かつ、後続IDにEND条件を示すIDが設定されて、次に発生すべきブレーク要因が設定されていない場合(S43でNO)、トラップ命令を検知したCPUのCPU/IDがメインCPU102のものであれば、メインCPU102は全てのサブCPU103a〜103dの実行動作を停止し、さらに、全てのCPUレジスタの内容をレジスタ退避領域208に退避格納した後(S45)、デバッガプログラム202を呼び出し(S46)、デバッガプログラム202に制御を移す(図4のステップS2へ進む)。
一方、トラップ命令を検知したCPUのCPU/IDがサブCPU103a〜103dうちの1つのものであれば、メインCPU102へのトラップ命令の検知の通知が発生し、トラップ処理ルーチンを介して全てのCPUレジスタの内容がレジスタ退避領域208に退避された後(S45)、デバッガプログラム202が呼び出され(S46)、デバッガプログラム202に制御が移される(図4のステップS2へ進む)。同時に、メインCPU102は制御信号109を介して、それぞれ同時並列的に動作している他のサブCPUを停止する。
なお、ブレークポイント設定テーブル205内の有効フラグがすべて無効に設定され、かつ、次に発生すべき要因が設定されている場合には、エラーメッセージを生成し、デバッガ端末105にエラーメッセージを表示し、オペレータにエラーの発生を通知する。
次に図4のステップS2に戻って、該ステップS2では、デバッガプログラム202が呼び出され、起動されるが、この詳細な処理内容は、図7に示す第1の実施の形態の処理と同じである。
ただし、ステップS24において、第2の実施の形態では、ブレークポイント設定テーブル205内のブレークポイント発生条件と、ブレークポイント履歴テーブル206内のプログラムカウンタの値とが全て一致し、かつ、該当するCPU/IDがすべて一致し、かつ、ブレークポイント設定テーブル205内で設定されたブレークポイント発生順序とブレークポイント履歴テーブル206内に記録されたブレークポイント発生順序とが一致した場合に(S24でYES)、ブレークポイント履歴テーブル206の内容を基に、CPU/ID、ブレークポイント発生条件、及びブレーク要因発生時のシステムタイマ値を含むブレークヒットメッセージが生成される(S25)。一方、それらのいずれかの1つでも一致していない場合には、エラーメッセージが生成される(S26)。
上記以外のステップでの処理内容は、第1の実施の形態と同じである。
以上説明したように、第2の実施の形態におけるデバッガプログラム202では、ブレークポイントの設定に関して、ブレークポイント設定テーブルを用いて、複数のCPUにおいてブレークポイント発生条件を個別に設定できるようにし、かつ、ブレークポイントの発生順序を設定できるようにする。そして、それらのブレークポイント発生条件がすべて発生し、かつ、ブレークポイント設定テーブルとブレークポイント履歴テーブルとが発生順序を含めて一致した場合に、デバッグ対象プログラム201を中断し、デバッガプログラム202を呼び出すようにしたので、次のような効果を奏することができる。
1)ブレーク要因の発生順序を時系列に指定できるため、複数プロセッサの各々で細かな条件を設定でき、デバッグ効率を向上させることが可能である。
2)第2の実施の形態でも、ブレークポイント設定テーブル205を、共有メモリ106内に任意個数、設定することができ、したがって、複数個のブレークポイントを設定できる。
3)第2の実施の形態でも、デバッグ専用の特別なハードウェアを必要とせず、マルチプロセッサシステム101でデバッグ作業を容易に行うことができる。
4)ある1つのCPUに注目し、そのCPUのみで発生するブレークポイント発生条件を時系列に沿って複数設定し、デバッグすることが可能である。
〔他の実施の形態〕
なお、本発明の目的は、前述した各実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムまたは装置に供給し、そのシステムまたは装置のコンピュータ(またはCPU、MPU等)が記憶媒体に格納されたプログラムコードを読み出して実行することによっても達成される。
この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体およびプログラムは本発明を構成することになる。
また、プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も含まれる。
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も含まれる。
本発明の第1の実施の形態に係るマルチプロセッサシステムの構成を示すブロック図である。 共有メモリに設定格納される情報や領域を示す図である。 本発明の第1の実施の形態におけるブレークポイント設定テーブルの記載内容を示す図である。 本発明の第1の実施の形態におけるデバッグ処理の手順を示すフローチャートである。 第1の実施の形態におけるトラップ処理ルーチンの手順を示すフローチャートである。 ブレークポイント履歴テーブルの記載内容を示す図である。 図4のステップS2の詳細な内容を示すフローチャートである。 図4のステップS3の詳細な内容を示すフローチャートである。 本発明の第2の実施の形態におけるブレークポイント設定テーブルの記載内容を示す図である。 第2の実施の形態におけるトラップ処理ルーチンの手順を示すフローチャートである。
符号の説明
101 マルチプロセッサシステム
102 メインCPU(プロセッサ)
103a〜103d サブCPU(プロセッサ)
104 デバッガ制御部
105 デバッガ端末
106 共有メモリ
107 メモリコントローラ
108 システムバス
109 制御信号
201 デバッグ対象プログラム
202 デバッガプログラム
203 デバッガインタフェース
204 コマンドインタフェース
205 ブレークポイント設定テーブル
206 ブレークポイント履歴テーブル
207 命令退避領域
208 レジスタ退避領域

Claims (7)

  1. 複数のプロセッサを備えた情報処理装置に実行させるプログラムであって、
    前記情報処理装置を、
    デバッグ対象プログラムと通信制御プログラムとの夫々について、所定の命令を実行するプロセッサの識別情報と当該所定の命令のアドレスとの組み合わせをブレーク条件としてメモリに格納する格納手段と、
    前記デバッグ対象プログラムと前記通信制御プログラムの夫々を前記情報処理装置の複数のプロセッサが実行した際に発生するブレークの要因となった命令のアドレスと当該命令を実行したプロセッサの識別情報との組み合わせをブレーク履歴として前記メモリに記憶する記憶手段と、
    前記ブレーク履歴として存在するプロセッサ識別情報と命令アドレスの複数の組み合わせが、前記ブレーク条件として存在するプロセッサ識別情報と命令アドレスの複数の組み合わせの全てと一対一で一致するか否かを判定する判定手段として機能させることを特徴とするプログラム。
  2. 前記格納手段は複数のブレーク条件の順序を示す情報を更に格納し、
    前記記憶手段は前記デバッグ対象プログラムと前記通信制御プログラムの実行中に発生した複数のブレークの要因の順序を更に格納し、
    前記判定手段は、前記ブレーク条件と前記ブレーク履歴とが順序を含めて一致しているか否かを判定することを特徴とする請求項1に記載のプログラム。
  3. 前記記憶手段は、ブレークの要因となった命アドレスを示す情報としてプログラムカウント値を更に記憶することを特徴とする請求項1又は2に記載のプログラム。
  4. 前記格納手段は前記ブレーク条件毎に、当該ブレーク条件を識別するためのIDと先行するブレーク条件のIDと後続するブレーク条件のIDとを対応付けて前記順序を示す順序情報として格納し、
    前記記憶手段は、ブレークの要因となった命令のアドレスと当該命令を実行したプロセッサの識別情報との組み合わせをブレーク履歴として前記メモリに記憶する際に、システムタイマの値も前記メモリに記憶するものであり、
    前記判定手段は、前記システムタイマの値に基づいた前記ブレーク履歴の順序と前記順序情報に基づいたブレーク条件の順序とが一致しているか否かを判定することを特徴とする請求項2に記載のプログラム。
  5. 前記情報処理装置を、更に、前記判定手段の判定結果をユーザに通知するように制御する通知手段として機能させることを特徴とする請求項1乃至4のいずれか1項に記載のプログラム。
  6. 複数のプロセッサを備えた情報処理装置が実行するデバッグ方法であって、
    デバッグ対象プログラムと通信制御プログラムとの夫々について、所定の命令を実行するプロセッサの識別情報と当該所定の命令のアドレスとの組み合わせをブレーク条件としてメモリに格納する格納ステップと、
    前記デバッグ対象プログラムと前記通信制御プログラムの夫々を前記情報処理装置の複数のプロセッサが実行した際に発生するブレークの要因となった命令のアドレスと当該命令を実行したプロセッサの識別情報との組み合わせをブレーク履歴として前記メモリに記憶する記憶ステップと、
    前記ブレーク履歴として存在するプロセッサ識別情報と命令アドレスの複数の組み合わせが、前記ブレーク条件として存在するプロセッサ識別情報と命令アドレスの複数の組み合わせの全てと一対一で一致するか否かを判定する判定ステップと、
    を有することを特徴とするデバッグ方法。
  7. 複数のプロセッサを備えたマルチプロセッサシステムであって、
    デバッグ対象プログラムを保持するメモリと、
    前記デバッグ対象プログラムと通信制御プログラムとの夫々について、所定の命令を実行するプロセッサの識別情報と当該所定の命令のアドレスとの組み合わせをブレーク条件としてメモリに格納する格納手段と、
    前記デバッグ対象プログラムと前記通信制御プログラムの夫々を前記複数のプロセッサが実行した際に発生するブレークの要因となった命令のアドレスと当該命令を実行したプロセッサの識別情報との組み合わせをブレーク履歴として前記メモリに記憶する記憶手段と、
    前記ブレーク履歴として存在するプロセッサ識別情報と命令アドレスの複数の組み合わせが、前記ブレーク条件として存在するプロセッサ識別情報と命令アドレスの複数の組み合わせの全てと一対一で一致するか否かを判定する判定手段と、
    を有することを特徴とするマルチプロセッサシステム。
JP2004170291A 2004-06-08 2004-06-08 マルチプロセッサシステム、デバッグ方法、及びプログラム Expired - Fee Related JP4944368B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004170291A JP4944368B2 (ja) 2004-06-08 2004-06-08 マルチプロセッサシステム、デバッグ方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004170291A JP4944368B2 (ja) 2004-06-08 2004-06-08 マルチプロセッサシステム、デバッグ方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2005352591A JP2005352591A (ja) 2005-12-22
JP4944368B2 true JP4944368B2 (ja) 2012-05-30

Family

ID=35587050

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004170291A Expired - Fee Related JP4944368B2 (ja) 2004-06-08 2004-06-08 マルチプロセッサシステム、デバッグ方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP4944368B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4976817B2 (ja) 2006-11-06 2012-07-18 オンセミコンダクター・トレーディング・リミテッド プログラム処理装置及びプログラム処理方法
JP2008146148A (ja) * 2006-12-06 2008-06-26 Mitsubishi Electric Corp 計算機システム
JP5059532B2 (ja) 2007-09-26 2012-10-24 ルネサスエレクトロニクス株式会社 半導体集積回路
US20090254888A1 (en) * 2008-04-07 2009-10-08 International Business Machines Corporation Debug tours for software debugging
JP6111731B2 (ja) * 2013-02-22 2017-04-12 日本電気株式会社 並列デバッグシステム、並列デバッグ方法、及び、並列デバッグプログラム
US9710749B2 (en) * 2013-09-03 2017-07-18 Qualcomm Incorporated Methods and apparatus for implementing a breakpoint determination unit in an artificial nervous system
JP6908827B2 (ja) 2017-03-28 2021-07-28 富士通株式会社 試験装置、試験方法、試験プログラム及び試験システム

Also Published As

Publication number Publication date
JP2005352591A (ja) 2005-12-22

Similar Documents

Publication Publication Date Title
JP4222370B2 (ja) デバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラム
JP3571976B2 (ja) デバッグ装置及び方法並びにプログラム記録媒体
CN109726135B (zh) 一种多核调试方法、装置及计算机可读存储介质
KR102025078B1 (ko) 단일 스텝 실행을 이용한 코드 진단
JP2005285120A (ja) ユーザプログラムを実行する複数のプロセッサにおける非同期割り込みにサービスを提供する方法およびシステム
JP2010086364A (ja) 情報処理装置、動作状態監視装置および方法
KR100633827B1 (ko) 멀티 노드 컴퓨터 시스템의 목록화를 위한 방법 및 장치
JP4944368B2 (ja) マルチプロセッサシステム、デバッグ方法、及びプログラム
CN111708662A (zh) 调试方法及装置
JP2010102454A (ja) 情報処理装置、情報処理プログラム
JP2004302731A (ja) 情報処理装置および障害診断方法
US8726244B2 (en) Software breakpoint handling by eliminating instruction replacement and execution under certain conditions
JPH1196006A (ja) 情報処理装置
JP2017084361A (ja) 汎用マイクロプロセッサを用いたplcのデバッグ方法
JP2008140124A (ja) データ処理装置
JPH03113648A (ja) プログラムデバツグ方式
TWI324727B (en) Method for diagnosing power management table
CN110018928B (zh) 基于固件的系统备份和还原方法
JPH09204205A (ja) プログラム制御システム
TW202102998A (zh) 應用於開機階段及開機後運行階段的除錯訊息紀錄方法
TW201303729A (zh) Bios版本設置系統及方法
JP3151811B2 (ja) 情報処理装置の障害処理検証方法および方式
JP2001005689A (ja) トレース採取回路
JP2002007172A (ja) ストール監視装置及びストール監視方法並びにストール監視プログラムを記録した記録媒体
JPH1078891A (ja) ソフトウェアプログラム評価装置

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20060418

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070607

RD05 Notification of revocation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7425

Effective date: 20070626

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090702

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090714

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090908

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100202

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100330

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100831

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101130

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20101222

A912 Removal of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20110128

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120203

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120302

R151 Written notification of patent or utility model registration

Ref document number: 4944368

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150309

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees