JP4787551B2 - デバッグシステム、デバッグ方法およびプログラム - Google Patents

デバッグシステム、デバッグ方法およびプログラム Download PDF

Info

Publication number
JP4787551B2
JP4787551B2 JP2005182039A JP2005182039A JP4787551B2 JP 4787551 B2 JP4787551 B2 JP 4787551B2 JP 2005182039 A JP2005182039 A JP 2005182039A JP 2005182039 A JP2005182039 A JP 2005182039A JP 4787551 B2 JP4787551 B2 JP 4787551B2
Authority
JP
Japan
Prior art keywords
program
execution unit
debug
debugging
interrupt
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
JP2005182039A
Other languages
English (en)
Other versions
JP2007004365A (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.)
NEC Corp
Renesas Electronics Corp
Original Assignee
NEC Corp
Renesas Electronics Corp
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 NEC Corp, Renesas Electronics Corp filed Critical NEC Corp
Priority to JP2005182039A priority Critical patent/JP4787551B2/ja
Publication of JP2007004365A publication Critical patent/JP2007004365A/ja
Application granted granted Critical
Publication of JP4787551B2 publication Critical patent/JP4787551B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明はデバッグシステム、デバッグ方法およびデバッグプログラムに関し、特に複数の実行ユニットを有するシステムにおけるデバッグシステム、デバッグ方法およびデバッグプログラムに関する。
近年、開発するプログラムの規模は年々増大してきており、デバッグ作業に要する時間が製品開発スケジュールに与える影響が大きくなってきている。このため、効率よくデバッグできる環境の構築が望まれている。効率よくデバッグするための手法として、特許文献1の「プロセッサ情報収集装置およびそのプログラム記録媒体」に記載されたデバッグシステムのように、デバッグを支援する診断プロセッサを用いる方法がある。
この従来のデバッグシステムは、図21に示すように、演算プロセッサ群801およびメモリ装置802と、この演算プロセッサ群801の動作状態を監視する診断プロセッサ803とを備えている。そして、診断プロセッサ803は、演算プロセッサ群801を構成する各演算プロセッサがストール状態になったことを検出するストール検出手段831と、演算プロセッサの内部状態を採集する採集手段832と、演算プロセッサの内部状態をメモリ装置802に保存する書込み手段834と、メモリ装置802に演算プロセッサの内部状態を保持したまま情報処理システムを初期化する初期化手段836とで構成される。
このような構成を有する従来のプロセッサ情報収集装置は次のように動作する。まず演算プロセッサ群801を構成する各演算プロセッサがストール状態になったことをストール検出手段831により検出し、ストールが発生した場合、演算プロセッサの内部状態を採集手段832により採集する。そして、採集された演算プロセッサの内部状態を書込み手段834により、演算プロセッサの内部状態821としてメモリ装置802に書き込み、メモリ装置802に演算プロセッサの内部状態を保持したまま情報処理システムを初期化する。このため、初期化後もメモリ装置802上に演算プロセッサの内部状態が保存されており、この情報を用いることで、ストールが発生した状況についてのデバッグ作業を行うことができる。
しかし、この特許文献1に記載の従来技術のように、診断プロセッサ803というデバッグのための高機能な専用ハードウェアをシステムに搭載する手法は、デバッグを効率化する効果をもたらすものの、通常動作に寄与しないハードウェアの追加が必要となり、システムのコストが増加するという弊害がある。また、特に組込み機器ではコストに対する要求が厳しく、専用ハードウェアの搭載が許容されないことが多い。
一方で、半導体集積回路の微細化や、要求される機能の高度化に伴い、システムLSIに複数のCPUなどの実行ユニットが搭載されることが増えてきている。そこで、デバッグ専用ハードウェアによるコストの増加を避けつつ、デバッグを効率化する従来技術例として、特許文献2に記載の「マルチCPUのリセット回路およびリセット方法」がある。
この従来のデバッグシステムは、図22に示すように、複数のCPU(CPU−A901、CPU−B902)を内蔵するシステムLSIのリセットおよび割り込みを制御するCPU制御回路903を備え、このCPU制御回路903が、複数のCPU(CPU−A901、CPU−B902)のうちの一つを、通常動作用のプログラムをデバッグプログラムに置き換えたデバッグ手段に設定する機能を有する。
このような構成を有する従来のデバッグシステムの動作について、図23を参照して説明する。
まず、CPU制御回路903がハードウェアリセットを検知すると、デバッグ制御回路907が、内部の各機能ブロック(図示せず)にリセットを発行する(ステップS91)。
次にストラップ取込み回路906が、ストラップ設定手段908からのストラップ等の外部設定情報を読み込む(ステップS92)。
読み込んだストラップ情報が通常動作を示している場合(ステップS93、No)、デバッグ制御回路907が、読み込んだストラップ情報に基づきCPU−A901およびCPU−B902と各機能ブロックのリセットを解除する(ステップS94)。
リセットが解除されると、各機能ブロックは動作を開始する(ステップS95)。
一方、読み込んだストラップ情報がデバッグを指定していると(ステップS93、Yes)、デバッグ処理に入る(ステップS96)。
ここで、デバッグ制御回路907によるデバッガの選定結果がデバッガとしてCPU−B902を選定していると(ステップS961、B)、デバッグ制御回路907がストラップにより選択されたCPU−B902のリセットを解除する(ステップS962)。
その後デバッガCPU−B902が起動し(ステップS963)、立ち上がり動作が完了すると(ステップS964)、ターゲット側CPU−A901および各機能ブロックをリセット解除する(処理ステップS965)。
判断結果がデバッガとしてCPU−A901を選定していると(ステップS961、A)、処理ステップS966において、デバッグ制御回路7がストラップにより選択されたCPU−A901のリセットを解除する。
その後デバッガCPU−A901が起動し(処理ステップS967)、立ち上がり動作が完了すると(ステップS968)、ターゲット側CPU−B902および各機能ブロックのリセットを解除する(処理ステップS969)。
複数の実行ユニットで協調動作するプログラムのデバッグを行う場合、複数の実行ユニット間の通信について、通信に関連する実行ユニット以外の外部から確認できる情報や、不具合発生時の情報を保存しておいて、後から確認する方法では十分な原因追求ができないことが多い。このため、通常動作プログラムが生成する送信内容を擬似的に生成するプログラム、送受信内容をデバッグ作業者に通知するプログラムを利用すると効果的なことが多いため、通信を行うCPU上でこれらのデバッグ用プログラムを動作させてデバッグ作業を行うことがある。
一方で、これらのデバッグ用プログラムを事前に動作させておくと、CPU負荷や記憶領域の使用により通常動作プログラムの動作タイミングなどに影響が出るため、デバッグ用プログラムの存在によって通常動作で生じる可能性がある不具合が発生しない、またこの逆に通常動作プログラムのみの実行では発生しないはずの不具合が生じるなどの弊害がある。
また、複数ユニットが連携して動作するプログラムにおいて、特にタイミングに起因する不具合では不具合がどのユニットで発生するかが一意に定まらず、想定することは困難である。ここで、ストール状態になってしまったり、CPUの動作に影響が出る不具合が発生した場合、ストール状態になったり、動作に影響を受けたCPU上のデバッグ用プログラムが使用できないことがあるため、別CPU上でデバッグ用プログラムを動作させて使用する必要があるが、不具合発生状況が一意に定まらない不具合では影響を受けないCPUを決定しておくことができない。しかし、特許文献2に記載の従来手法では、リセット時にデバッグ用プログラムを起動する実行ユニット(デバッグ用CPU)を割り当てることを特徴としており、デバッグ用CPUを変更する場合には再度リセットを行う必要がある。このため、割り当てられたデバッグ用CPUの動作に影響を及ぼす不具合が発生した場合、その状況をデバッグすることができない。
特開平11−184736号広報 特開2004−164113号公報
しかしながら、上記の従来のデバッグシステムでは、複数の実行ユニット(CPU)が連携して動作するシステムにおいてデバッグを行う際、下記のような問題が発生する。
(1)予めデバッグ用プログラムを起動させておくと通常動作プログラムのみを動作させた場合と動作タイミングが異なってしまい、デバッグ用プログラムの存在によって通常動作で生じる可能性がある不具合が発生しない、またこの逆に通常動作プログラムのみの実行では発生しないはずの不具合が生じる。
(2)デバッグ用プログラムを実行させる実行ユニットを予め設定しておく必要があるが、設定された実行ユニットの動作に影響を及ぼす不具合が発生した場合、その状況をデバッグすることができなくなる。
本発明は上記の問題点に鑑みなされたもので、複数の実行ユニットが連携して動作するシステムにおいて、任意の実行ユニット上に任意のタイミングでデバッグ用プログラムを起動して、デバッグ作業を行うことを可能にするデバッグシステムおよびデバッグ方法を提供することを目的とする。
上記目的を達成するために、本発明のデバッグシステムは、複数の実行ユニットが連携して動作するシステムにおいて実行されるプログラムのデバッグを行うためのデバッグシステムであって、
前記複数の実行ユニット毎に設けられ、デバッグ用プログラムの起動を指示するデバッグ用プログラム起動指示を受信すると、当該デバッグ用プログラム起動指示により指定されている実行ユニットに対して受信した前記デバッグ用プログラム起動指示を振り分ける起動指示振り分け手段と、
前記複数の実行ユニット毎に設けられ、前記起動指示振り分け手段により振り分けられたデバッグ用プログラム起動指示に基づいて、指定された実行ユニット上にデバッグ用プログラムを起動する複数のデバッグ用プログラム起動手段とを備え、
前記各実行ユニット上において、割り込みが発生した場合に該割り込みを処理するために最初に起動されるプログラムである割り込みハンドラによって他の実行ユニットからの割り込みが発生した際に、通常動作プログラムにより実行されたプロセスであって暴走している前記プロセスを停止させるプロセス制御手段と、前記プロセス制御手段によるプロセス制御が行われた後得られたレジスタ、キャッシュメモリフラッシュメモリを含む予め設定されたメモリ内の情報を、前記割り込みを発生させた前記他の実行ユニットに対して送信する応答生成手段とが実現され、
前記各実行ユニットのいずれかにおいて起動されるデバッグ用プログラムによって、デバッグ対象の実行ユニットに対して割り込みを発生させる実行ユニット間割り込み生成手段と、デバッグ対象の前記実行ユニットにおける応答生成手段からの応答を受信する応答受信手段とが実現されている。
本発明によれば、デバッグ用プログラムを起動するためのデバッグ用プログラム起動手段を各実行ユニット毎に設け、このデバッグ用プログラム起動手段により、起動指示振り分け手段により振り分けられた起動指示に基づいてデバッグ用プログラムの起動を行うようにしている。そのため、通常動作プログラムのみを動作させた状態で不具合が確認された場合であっても、任意のタイミングで不具合の発生原因となる処理を行っている実行ユニットに対してデバッグ用プログラムを起動してデバッグ作業を行うことが可能となる。
さらに、本発明では、デバッグ対象実行ユニットによって実行される割り込みハンドラ内にプロセス制御手段を導入し、割り込みハンドラ内からデバッグ対象プロセスの制御を行うよう構成する。そして、デバッグ対象実行ユニット以外の実行ユニット上で動作しているデバッグ用プログラムから、デバッグ対象実行ユニットに割り込みを発生させ、割り込みハンドラ内でプロセス制御を行うことにより、暴走したプロセスが存在する場合であっても、暴走しているプロセスを停止させ正常動作に復帰させることが可能となる。
以上説明したように、本発明は、デバッグ用プログラム起動指示振り分け手段と、デバッグ用プログラム起動手段を備えることにより、任意のタイミングで任意の実行ユニット上にデバッグ用プログラムを起動できるよう構成されていることにより、通常動作プログラムのみを実行した状態で不具合を発生させるか、その直前まで進め、その後、不具合の発生原因となる処理を行っている実行ユニット上にデバッグ用プログラムを起動し、デバッグ作業を行うことが可能になるという効果を得ることができる。
次に、本発明の実施形態について図面を参照して詳細に説明する。
(第1の実施形態)
先ず、本発明の第1の実施形態のデバッグシステムを、図面を参照して説明する。本実施形態のデバッグシステムは、図1に示すように、2個の実行ユニットA、Bと、通信ポート1と、RAM(Random Access Memory)等により構成され書き換え可能な記憶手段2と、HDD(Hard Disk Drive)装置等により構成され各種プログラムが格納されたプログラム格納手段3とを備えている。そして、記憶手段2の記憶領域は、実行ユニットA用プログラム領域6と、実行ユニットB用プログラム領域7とから構成されている。
実行ユニットA用プログラム領域6には、図2に示されるように、デバッグ用プログラム起動指示振り分け手段(図2中では、振り分け手段と表示する。)61と、デバッグ用プログラム起動手段(図2中では、起動手段と表示する。)62と、デバッグ用プログラム63と、通常動作プログラム64とが格納され、これらを実行ユニットA上で実行されるプログラムとして構成する。
また、実行ユニットB用プログラム領域7にも、図2に示されるように、デバッグ用プログラム起動指示振り分け手段71と、デバッグ用プログラム起動手段72と、デバッグ用プログラム73と、通常動作プログラム74とを備え、これらを実行ユニットB上で実行されるプログラムとして構成する。
ここで、デバッグ用プログラム起動指示振り分け手段61、71やデバッグ用プログラム起動手段62、72は、記憶手段2内では単にプログラムとして記憶されていて、実行ユニットA、B上で起動されて初めて各種の動作を行うものであるが、説明を簡単にするためにデバッグ用プログラム起動指示振り分け手段61、71やデバッグ用プログラム起動手段62、72が独自に各種の動作を行うものとして説明する。
これらの各種プログラムは、プログラム格納手段3から記憶手段2に読み込まれ、記憶手段2上の所定の領域に記憶される。
デバッグ用プログラム起動指示振り分け手段61、71は、通信ポート1より送られてくるデバッグ用プログラムの起動指示(以下、単に起動指示と称する。)を受信すると、この起動指示により指定されている実行ユニットに対して受信したデバッグ用プログラムを振り分ける。デバッグ用プログラム起動手段62、72は、実行ユニットA、B毎に設けられ、起動指示振り分け手段61、71により振り分けられた起動指示に基づいて、指定された実行ユニット上にデバッグ用プログラム63、73を起動する。
ここで、デバッグ用プログラム起動指示振り分け手段61は、図3に示すように、通信ポートから起動指示を受信する受信手段611と、起動プログラムに起動指示を送信する送信手段614と、実行ユニット間通信を用いて他の実行ユニットに起動指示を送信する送信手段612と、他の実行ユニットから実行ユニット間通信を用いて送信されてくる起動指示を受信する受信手段615と、通信ポートの通信対象実行ユニットを変更する通信対象変更手段613を備える。
また、デバッグ用プログラム起動指示振り分け手段71も同様に、受信手段711と、送信手段714と、送信手段712と、受信手段715と、通信対象変更手段713とを備えている。
次に、図2及び図4のフローチャートを参照して本実施形態の全体の動作について詳細に説明する。
まず、外部の制御端末(図示せず)において入力された起動指示が、通信ポート1に対して送られてくる。この起動指示には、デバッグ用プログラムを起動する実行ユニットを指定する符号と、起動するデバッグ用プログラムの種別を指定する符号とが含まれる。ここでデバッグ用プログラム起動指示振り分け手段61、71が、デバッグ用プログラム起動指示を通信ポート1から受信すると(図4のステップS1)、起動指示で指定されている、デバッグ用プログラムを起動する実行ユニットに対して起動指示を振り分け、デバッグ用プログラム起動手段62、72に起動指示を発行する(ステップS2)。その後デバッグ用プログラム起動手段62、72がデバッグ用プログラム63、73の起動を行う(ステップS3)。
ここで、デバッグ用プログラム63、73が通信ポート1よりコマンドを受信(ステップS4)すると、デバッグ用プログラム63、73により構成される手段であるコマンド解析手段(図示せず)により解析が行われ、受信したコマンドがデバッグコマンドの場合(ステップS5、No)は、コマンドに応じた作業内容を実行し、デバッグ作業を行う。ここで、作業内容によっては通信ポート1を通じてデータの送受信を行うこともある。通信ポート1より受信したコマンドが終了コマンドであった場合(ステップS5、Yes)には、デバッグ用プログラム63、73は、デバッグを終了する。
ここで、コマンド解析手段とは、受信したコマンドの内容を解析するための手段であり、デバッグ用プログラム63、73により構成される手段である。また、コマンドの種類としては、上述した終了コマンド以外にも、メモリやレジスタの内容を読み込んだり、メモリやレジスタにある値を書き込んだりするコマンドが存在する。
次に、図3及び図5のフローチャートを参照して本実施形態の、デバッグ用プログラム起動指示振り分け手段61、71の動作について詳細に説明する。ここでは、通信ポート1の割り込み先の初期値を実行ユニットAとして説明する。まず、デバッグ用プログラム起動指示が通信ポートより送られてきた場合、実行ユニットAに割り込みが発生し(ステップS11)、起動指示振り分け手段61が起動する。その後、受信手段611が通信ポート1からの起動指示を受信し(ステップS12)、その宛先を判定する。ここで宛先が実行ユニットAであった場合(ステップS21、Yes)には送信手段614により、実行ユニットAのデバッグ用プログラム起動手段62に対して起動指示を送信する(ステップS22)。宛先が実行ユニットBであった場合(ステップS21、No)には、ユニット間通信を用いる送信手段612により実行ユニットBに対して起動指示を送信する(ステップS23)。次に実行ユニットB側の起動指示振り分け手段71が、受信手段715によりこの起動指示を受信すると(ステップS24)、通信対象変更手段713によって通信ポートの通信対象を実行ユニットBに変更し(ステップS25)、送信手段714により、実行ユニットBのデバッグ用プログラム起動手段72に対して起動指示を送信する。
なお、通信ポート1からデバッガ起動指示を受け取る他に、タイマなどを用いて起動指示を与えることにより一定時間経過後にデバッグ用プログラムを起動させ、その時点での状況を確認するよう構成することもできる。また、ブレイクポイントを設定する方法、ある地点に到達した時にデバッグ対象プログラム自身が起動指示を発行する方法などにより、プログラムの特定地点への到達によって起動することとしてもよい。
また、本実施形態では2個の実行ユニットを備えるシステムについて記載しているが、3個以上の任意の個数の実行ユニットを備えるシステムについても容易に拡張可能である。
さらに、本実施形態では、デバッグ用プログラムを起動する実行ユニットは予め指定されていて、デバッグ用プログラム起動指示振り分け手段61、71は指定された実行ユニットに対して起動指示を振り分けるものとして説明していたが、デバッグ用プログラムを起動する実行ユニットを自動的に選択するよう構成することもできる。例えば、デバッグ用プログラム起動指示振り分け手段61、71は、実行ユニットA、Bの動作状況に基づいて定められる実行ユニットに対応したデバッグ用プログラム起動手段に起動指示が送られるように構成することができる。ここで、実行ユニットの動作状況とは、例えば、各実行ユニットが利用する記憶領域の空き容量や、実行ユニット間の連携の状態等を示している。
空き容量に基づいて振り分け先を選択する場合、各実行ユニットA、Bが利用する記憶領域の空き容量を検出するように起動指示振り分け手段61、71を構成し、検出された空き容量に余裕がある実行ユニットに対応したデバッグ用プログラム起動手段に起動指示を振り分けるように構成する。このような構成とする場合、各実行ユニットA、B上の起動指示振り分け手段61、71が空き容量の検出を行い、その他の実行ユニットに対して空き容量を通知するよう構成する方式や、各実行ユニットA、B上の起動指示振り分け手段61、71が、他の実行ユニットが利用する記憶領域を直接参照して、単独で空き容量を検出するよう構成する方式などがある。
また、本実施形態では一例として2個の実行ユニットA、Bが連携して動作を行うシステムを用いて説明しているが、3個以上の実行ユニットで連携を行いながら動作するプログラムをデバッグ対象とする場合には、その連携の状態を把握して起動指示の振り分け先を決定することもできる。
この場合には、先ず、各プログラムが他のプログラムとの通信経路を確保したことを検出するよう起動指示振り分け手段を構成し、デバッグの対象とする連携して動作しているプログラムとの関係が無い、もしくは関係が少ない実行ユニット上に起動指示を振り分けるよう構成することができる。ここで、通信経路の確保の検出には、プログラムが通信経路を確保する関数呼び出しを行ったことを検出する方法、通信経路のステータスが保存されている記憶領域を観測する方法などをとることができる。
その逆に、デバッグ対象のプログラムが別の実行ユニット上で動作しているプログラムと連携している場合、デバッグ対象のプログラムが動作している実行ユニットだけでなく、その連携先の実行ユニットに対しても起動指示を振り分け、連携するプログラムをまとめてデバッグ対象とするよう構成することもできる。
次に、本実施形態のデバッグシステムの効果について説明する。
本実施形態では、デバッグ用プログラム起動指示振り分け手段61、71と、デバッグ用プログラム起動手段62、72を実行ユニットA、B上のソフトウェアとして構成し、起動指示受信後にデバッグ用プログラムをいずれかの実行ユニット上で起動するよう構成されているため、デバッグ用ハードウェアによるコスト増加なしにデバッグ作業の効率化を図ることができる。
また、本実施形態では、さらに、デバッグ用プログラム起動指示振り分け手段61、71と、デバッグ用プログラム起動手段62、72を備えることにより、任意のタイミングで任意の実行ユニット上にデバッグ用プログラムを起動することが可能となる。その結果、通常動作プログラムのみを実行した状態で不具合を発生させるか、その直前まで進め、その後、不具合の発生原因となる処理を行っている実行ユニット上にデバッグ用プログラムを起動し、デバッグ作業を行うことが可能である。
また、タイマなどを用いて起動指示を与えるよう構成し、一定時間経過後に起動するよう構成することで、作業者が起動指示を入力する方法で生じる、デバッグ用プログラムを起動するタイミングがばらつく影響を排除することや、高い時間精度で起動時間を調整することが可能となる。
また、ブレイクポイントを設定する方法、ある地点に到達した時にデバッグ対象プログラム自身が起動指示を発行する方法などにより、プログラムの特定地点への到達によって起動するよう構成することで、起動時間を調整するのみでは困難な、観測を行いたい地点への到達時間が条件により一定でない場合についても、観測を行いたい地点においてデバッグ用プログラムを起動することが可能となる。
更に、既に動作している通常動作プログラムによって記憶領域が使用されており、デバッグ用プログラムを追加で起動できない場合がある。一方で、デバッグ用プログラムには、どの実行ユニットで起動してもデバッグ作業を行えるタイプのものがある。このような場合に、各実行ユニットの記憶領域の空き容量を検出し、空き容量に余裕がある実行ユニットに対して起動指示を振り分けるよう構成することで、空き容量不足でデバッグ用プログラムが起動できない実行ユニットを避けて起動指示を発行することができる。
また、連携して動作しているプログラムが実行されている実行ユニット上でデバッグ用プログラムを起動すると、連携しているプログラムの動作に影響を与えることがあり、デバッグ作業に支障をきたすことがある。この場合、連携の状態を把握して起動指示を発行するよう構成することで、連携して動作しているプログラムが実行されている実行ユニットとは異なる実行ユニット上にデバッグ用プログラムを起動することができる。
(第2の実施形態)
次に、本発明の第2の実施形態のデバッグシステムについて図面を参照して詳細に説明する。
上記で説明した第1の実施形態は、通信ポートの通信対象実行ユニットを変更できるシステムに対して本発明を適用した場合であった。しかし、システムによっては、通信ポートの通信対象実行ユニットを変更できない、つまり通信ポートの通信対象実行ユニットが固定されているようなシステムも存在する。このようなシステムに対して本発明を適用した場合、デバッグ用プログラム起動指示振り分け手段を各実行ユニットに対して設けたとしても、通信ポートの通信対象となっていない実行ユニット上で起動されたデバッグ用プログラムに対してコマンドを送信することができない。本発明の第2の実施形態は、このようなシステムに対して本発明を適用した場合である。
本発明の第2の実施形態は、図1に示された第1の実施形態における構成に加えて、図6のように、新たに他の実行ユニットで実行されるデバッグ用プログラムの通信を中継する中継手段65を備える。
中継手段65は、2つの実行ユニットA、Bのうちの実行ユニットA上において構成され、通信ポート1からデバッグ用プログラム63、73に対して送信されるコマンドを指定された実行ユニット上のデバッグ用プログラムに対して中継する。
本実施形態における通信ポート1は、通信対象実行ユニットは実行ユニットAに固定されている。そして、中継手段65は、通信ポート1からのコマンドの宛先が実行ユニットAの場合には、そのコマンドを実行ユニットAのデバッグ用プログラム63に送信し、通信ポート1からのコマンドの宛先が実行ユニットBの場合には、そのコマンドを実行ユニットBのデバッグ用プログラム73に送信する。
本実施形態における起動指示振り分け手段61、71では、図3に示した起動指示振り分け手段61、71のうち、通信対象変更手段613、713、実行ユニットA側のユニット間通信受信手段615、実行ユニットB側の、ユニット間通信送信手段712、通信ポートからの通信受信手段711を省略することができる。
本実施形態における全体の動作は、本発明の第1の実施形態と同一であり、起動指示振り分け手段61、71の動作は、図5における通信ポートの通信対象を変更するステップがないことを除いて本発明の第1の実施形態と同一である。
また、本実施形態では2個の実行ユニットを備えるシステムについて記載しているが、3個以上の任意の個数の実行ユニットを備えるシステムについても容易に拡張可能である。
次に、本実施形態のデバッグシステムの効果について説明する。
本実施形態では、デバッグ用プログラム63、73への通信を中継する中継手段65を実行ユニットA用プログラム領域6に構成し、実行ユニットBで実行されるデバッグ用プログラム73の通信を中継するように構成されているため、通信ポート1の通信対象実行ユニットが実行ユニットAに固定され変更できないようなシステムにおいても本発明を適用することが可能となる。また、通信ポート1と直接通信していない実行ユニットB上のデバッグ用プログラム73も中継手段65によって通信が可能となるため、複数の実行ユニットA、Bで同時に複数のデバッグ用プログラム63、73を利用することが可能となる。
(第3の実施形態)
次に、本発明の第3の実施形態のデバッグシステムについて図面を参照して詳細に説明する。
本実施形態のデバッグシステムは、第1の実施形態のデバッグシステムと同様に、通信ポートの通信対象実行ユニットの変更が可能なシステムに対して本発明を適用したものである。通信ポートの通信対象実行ユニットの変更が可能なシステムでは、デバッグ用プログラムに対するコマンドは、通信ポートの切り替えを行うことにより送信することが可能である。しかし、複数のデバッグ用プログラムを同時に起動させるような場合、通信ポートの切り替えが煩雑に発生することが予想される。しかし、通信ポートの通信対象実行ユニットを変更する処理には、ある程度のオーバヘッドが必要となる。そのため、通信ポートの通信対象実行ユニットを変更可能な場合であっても、図6に示した第2の実施形態のデバッグシステムにおける中継手段を用いて、デバッグ用プログラムへの各種コマンドを中継したほうが通信ポートを切り替える処理が不要となり処理の軽減を図ることが可能となる。
しかし、この中継手段をある特定の実行ユニットにしか備えないような構成を採用した場合、中継手段が設けられた実行ユニットがストール状態となると、中継手段自体も機能しなくなってしまう。そのため、本実施形態のデバッグシステムでは、どの実行ユニットがストール状態になった場合でも、デバッグ用プログラムへの各種コマンドを中継することが可能なように、中継手段を各実行ユニット毎に設けるようにする。
本実施形態では、説明の都合により、3つの実行ユニットA、B、Cが存在するシステムに対して本発明を適用した場合として説明する。
本発明の第3の実施形態は、図1に示された第1の実施形態における構成に加えて、図7のように、実行ユニットC用プログラム領域8が新たに追加され、他の実行ユニットで実行されるデバッグ用プログラムの通信を中継するための実行ユニットA側の中継手段65、実行ユニットB側の中継手段75、実行ユニットC側の中継手段85が追加された構成となっている。
本実施形態における中継手段65、75、85は、3つの実行ユニットA、B、C上においてそれぞれ構成され、通信ポート1からデバッグ用プログラム63、73、83に対して送信されるコマンドを指定された実行ユニット上のデバッグ用プログラムに対して中継する。
実行ユニットC用プログラム領域8は、図7に示されるように、デバッグ用プログラム起動指示振り分け手段81と、デバッグ用プログラム起動手段82と、デバッグ用プログラム83と、通常動作プログラム84とを備え、これらを実行ユニットC上で実行されるプログラムとして構成する。
本実施形態における起動指示振り分け手段61、71の動作は、本発明の第1の実施形態と同様である。また、起動指示振り分け手段81の動作は、起動指示振り分け手段61、71と同様である。ただし、起動指示振り分け手段61、71、81の動作における通信ポート1の通信対象を変更するステップについては、2つ目以降のデバッグ用プログラムを起動する場合には、切り替えが無駄であることも考えられるため、これを利用しないこととして構成してもよい。
また、本実施形態では3個の実行ユニットを備えるシステムについて記載しているが、4個以上の任意の個数の実行ユニットを備えるシステムについても容易に拡張可能である。
次に、本実施形態のデバッグシステムの効果について説明する。
本実施形態では、デバッグ用プログラムへの通信を中継する中継手段65、75、85を各実行ユニットA、B、C毎に備えるようにし、他の実行ユニットで実行されるデバッグ用プログラムの通信をいずれの実行ユニットでも中継可能なように構成されている。そのため、ある実行ユニットがストール状態になった場合でも、通信ポート1の通信対象実行ユニットの煩雑な切り替えを不要としつつ複数の実行ユニットで同時に複数のデバッグ用プログラムを利用することができる。
例えば、図7に示した本実施形態のデバッグシステムにおいて、3つのデバッグ用プログラム63、73、83をそれぞれ起動した場合を用いて説明する。図7の例では、通信ポート1の通信対象実行ユニットとして実行ユニットAが設定されているため、実行ユニットAに対して備えられた中継手段65を経由して、デバッグ用プログラム63、デバッグ用プログラム73、デバッグ用プログラム83に対して各種コマンドが中継されている。ここで、実行ユニットAが何等かの理由によりストール状態となってしまった場合、中継手段65も機能しなくなってしまう。そのため、ここで通信ポート1の通信対象実行ユニットを実行ユニットAから実行ユニットBに変更し、実行ユニットBに対して設定されている中継手段75を経由して、デバッグ用プログラム73、83への各種コマンドの中継を行うようにすれば、デバッグ用プログラム73との通信においては実行ユニットB、デバッグ用プログラム83との通信においては実行ユニットCへというような、各通信毎に通信ポート1における通信対象実行ユニットの煩雑な切り替えを必要とすることなく、2個の実行ユニットB、Cで同時にデバッグ用プログラムの起動を行うことが可能となる。
(第4の実施形態)
次に、本発明の第4の実施形態のデバッグシステムについて図面を参照して詳細に説明する。
上記第1から第3の実施形態では、指定された実行ユニットまたは起動指示振り分け手段により選択された実行ユニットに対して、デバッグ用プログラム起動指示が振り分けられるようにしたものである。しかし、デバッグ用プログラムを起動しようとした実行ユニットが既にストール状態となっていて、デバッグ用プログラムの起動が不可能な場合がある。本発明の第4の実施形態のデバッグシステムは、このような弊害の発生を防ぐため、デバッグ用プログラムを起動可能な実行ユニットを選定する際に、ストール状態となってデバッグ用プログラムの起動が不可能な実行ユニットが選択されないようにしたものである。
本発明の第4の実施形態は、図1に示された第1の実施形態における構成に加えて、図8に示すように、ストールしている実行ユニットを避けて、プログラムを実行可能な実行ユニットの起動指示振り分け手段に起動指示が送られるよう設定するストール発生実行ユニット回避手段(図8中では、回避手段と表示する。)66、76を備える。
ストール発生実行ユニット回避手段66、76は、デバッグ用プログラムを起動可能な複数の実行ユニットA、Bに対してそれぞれ配置されている。そして、ストール発生実行ユニット回避手段66、76は、起動指示がストール状態の実行ユニットに対して送られないような処理を行っている。
具体的には、実行ユニットAのストール発生実行ユニット回避手段66は、起動指示振り分け元実行ユニット(つまり、通信ポート1の通信対象実行ユニット)を実行ユニットAににするよう通信ポート1に対して通知し、実行ユニットBのストール発生実行ユニット回避手段76は、起動指示振り分け元実行ユニットを実行ユニットBににするよう通信ポート1に対して通知する。
図1のように2個の実行ユニットA、Bを備えるシステムでは、実行ユニットA、B、A、B…のように交互に、3個以上の場合にはそれぞれ順番に、タイマを利用するか、通常動作時に利用されているタイマ割り込みハンドラ内のプログラムによってストール発生実行ユニット回避手段66、76が実行されるよう構成する。なお、ストール発生実行ユニット回避手段66、76の具体的な実現方法は、交互に起動したり、順番に起動する必要は必ずしもないが、後述する不具合検出・起動指示生成手段との組み合わせを効果的に行うために、このように構成することが望ましい。
タイマ割り込みハンドラとは、タイマ割り込みが発生した場合に、その割り込みを処理するために最初に起動されるプログラムのことである。このタイマ割り込みハンドラは、タイマ割り込み機能を備えた実行ユニットであれば一般的に使用されるプログラムである。
本実施形態における全体の動作については、図4のフローチャートにおける起動指示受信前に、デバッグ用プログラムを起動可能な実行ユニットを選定するステップが追加されることを除いて本発明の第1の実施形態と同一である。
次に、ストール発生実行ユニット回避手段66、76の動作について図9を参照して詳細に説明する。
図9において、ステップS71とステップS74は意図的に選択するものではなく、その時点での状況によって必然的に選択される事項である。つまり、ステップS71の分岐は、ステップS72は実行ユニットAによって実行される処理であるが、実行ユニットAがストールしている場合はプログラムが実行されないため、この処理が行われずにステップS73に進んでしまうことを示す。同様に、ステップS74の分岐は、ステップS75は実行ユニットBによって実行される処理であるが、実行ユニットBがストールしている場合はこの処理が行われずにステップS76に進んでしまうことを示す。
ここでは、デバッグ用プログラム起動指示の振り分け元となる(通信ポートの通信対象となる)実行ユニットの初期値をBとして説明する。まず、ステップS71の段階で、実行ユニットAがストールしていない場合(ステップS71、No)、実行ユニットA上のストール発生実行ユニット回避手段66が、デバッグ用プログラム起動指示の振り分け元となる起動ユニットの設定値を実行ユニットAに変更する(ステップS72)。この処理は、通信ポート1の通信対象を変更することで行われる。ここで起動指示があった場合(ステップS73、Yes)、設定された実行ユニット(ここでは実行ユニットA)へ起動指示が送信される(ステップS77)。
一方ステップS73で起動指示がなかった場合(ステップS73、No)、実行ユニットBがストールしていなければ(ステップS74、No)、実行ユニットB上のストール発生実行ユニット回避手段76が、デバッグ用プログラム起動指示の振り分け元となる起動ユニットを実行ユニットBに変更する(ステップS75)。ここで起動指示があった場合(ステップS76、Yes)、設定された実行ユニット(ここでは実行ユニットB)へ起動指示が送信される(ステップS77)。起動指示がない場合(ステップS76、No)は初めに戻る。
ここで、ステップS71の段階で実行ユニットAがストールしていた場合、ステップS72の処理が行われずにステップS73に進むが、ここで起動指示があった場合、デバッグ用プログラム起動指示の振り分け元である起動ユニットは実行ユニットBであるため、ストールした実行ユニットAにデバッグ用プログラム起動指示が送信され、起動ができなくなる状況を避けることができる。ステップS74の段階で実行ユニットBがストールしていた場合も同様の仕組みにより実行ユニットBにデバッグ用プログラム起動指示が送信され、起動ができなくなる状況を避けることができる。
この方法は実行ユニットが3個以上の場合でも容易に拡張可能であり、実行ユニットのいずれかが動作していれば動作している実行ユニットに対してデバッグ用プログラム起動指示の振り分け元となるよう設定される。
ただし、次の場合について注意が必要である。一つの注意点は、ステップS72においてデバッグプログラム起動指示の振り分け元となる起動ユニットを実行ユニットAに変更した後、ステップS73において起動指示を受け取る前に実行ユニットAがストールする場合である。これは、ステップS75とステップS76の間においても同様である。この場合、デバッグプログラム起動指示が受理されないが、一定時間を経過すると、ストールしていない実行ユニットによって起動指示の振り分け元となる起動ユニットが変更されるため、起動に失敗した場合には一定時間後に起動指示を再発行するよう構成することが望ましい。また、全ての実行ユニットがストールした場合に備えて、一定回数の再発行によって起動しない場合は処理を終了し、エラー報告をするよう構成してもよい。
他の注意点は、これまでの手法により振り分け手段までの実行は可能であるものの、起動指示で指定しているデバッグ用プログラムを起動する実行ユニットが、ストールしている実行ユニットである場合に起動できないことである。この場合について、一定時間後に起動が確認できない場合はエラー報告をするよう構成してもよいが、後述する不具合検出・起動指示生成手段の不具合検出手法によってストールを検出し、起動できないと判定されている場合には即座にエラー報告をし、別の実行ユニットでデバッグ用プログラムを起動するなどの手法を用いることが望ましい。
また、起動する実行ユニットを別途指定する必要がないように、後述する、デバッグ用プログラムが起動している実行ユニットとは異なるデバッグ対象実行ユニットに関わる記憶領域を参照することで、デバッグ対象実行ユニットや対象実行ユニットで動作しているプログラムの状態を解析するデバッグ用プログラムを起動するなど、起動指示振り分け元の実行ユニット上にデバッグ用プログラムを起動するよう構成することが望ましい。この場合は、起動指示を他の実行ユニットに対して転送する、起動指示振り分け手段の機能を不要とすることもできる。
次に、本実施形態のデバッグシステムの効果について説明する。
本実施形態では、ストール発生実行ユニット回避手段66、76により、デバッグ用プログラムを実行不可能な実行ユニットに対して起動指示が送られないように構成されているため、不具合によって実行ユニットがストールする、実行ユニットの動作に影響が出るような場合でも、利用可能な実行ユニットがあれば、その実行ユニット上にデバッグ用プログラムを起動することが可能となる。
(第5の実施形態)
次に、本発明の第5の実施形態について図10を参照して詳細に説明する。
上記第1から第4のデバッグシステムでは、デバッグ用プログラムは、起動された実行ユニットに関わる記憶領域しか参照することができなかった。しかし、記憶領域をどのように使用しているかを参照することによりデバッグ対象実行ユニットで動作しているプログラムの状態を解析することが可能になる場合がある。本実施形態のデバッグシステムでは、デバッグ対象実行ユニットの記録領域をデバッグ用プログラムが起動された実行ユニットから参照してデバッグ作業を行うことを可能にするものである。
本発明の第5の実施形態は、図2に示した第1の実施形態のデバッグシステムにおいて、デバッグ用プログラム63、73を、それぞれデバッグ用プログラム67、77に置き換えた構成となっている。
デバッグ用プログラム67は、状態を解析するための手段として、物理・仮想アドレス変換手段671と、情報抽出手段672とを備えている。
物理・仮想アドレス変換手段671は、仮想アドレスを物理アドレスに変換する。情報抽出手段672は、物理・仮想アドレス変換手段671により変換された物理アドレスを用い、OS(Operating System:オペレーティングシステム)などが管理情報をメモリに配置する構造を考慮して、通常動作プログラム74が使用している記憶領域から必要情報を抽出する。また、デバッグ用プログラム77も同様に、物理・仮想アドレス変換手段771と、情報抽出手段772とを備えている。
本実施形態では実行ユニットA上にデバッグ用プログラムを起動する場合を用いて説明を行うが、実行ユニットB上にデバッグ用プログラム77を起動した場合でも同様である。
物理・仮想アドレス変換手段671は、仮想アドレスと物理アドレスのオフセット(差分)情報を加減することにより、仮想アドレスと物理アドレスの相互変換を行う第1の物理・仮想アドレス変換手段と、物理・仮想変換テーブルの情報を解析することにより仮想アドレスと物理アドレスを対応づける第2の物理・仮想アドレス変換手段がある。
まず第1の物理・仮想アドレス変換について説明する。第1の物理・仮想アドレス変換は、OSのカーネルが静的に確保する領域など、広範囲に渡って連続する物理アドレスが確保されている領域(以後、連続領域とする)に対応するための手段を提供する。
連続領域において、ある仮想アドレスに対応する物理アドレスが分かった場合に、仮想アドレスと物理アドレスの差分を求めることができる。連続領域では、仮想アドレスをn単位増加させた場合に対応する物理アドレスもn単位増加したものになる。このため、仮想アドレスと物理アドレスの差分を保持し、これを加減することで、仮想アドレスから物理アドレスへの変換、物理アドレスから仮想アドレスの変換を行うことが可能となる。
また、この差分は別途計算しておいたものを用いることもできるが、連続領域の先頭に対応する仮想アドレスが、あらかじめ決まっているOSがあり、この場合、各CPUに割り当てられるメモリ領域の先頭の物理アドレス情報を元に差分を計算することが可能となる。このため、デバッグ用プログラム起動時に各CPUに割り当てられるメモリ領域の先頭の物理アドレス情報を取得可能であるように構成し、自動的に差分を計算可能にすることが望ましい。
次に、第2の物理・仮想アドレス変換について図11を用いて説明する。第2の物理・仮想アドレス変換は、高機能OSなどで用いられる、物理・仮想アドレステーブルを用いてユーザプログラムなどの仮想アドレス管理を行う手法に対応するための手段を提供する。ユーザプログラムなどでは、連続する仮想アドレスに対応するメモリ領域が連続しているとは限らず、物理アドレスが差分により一意に決まらないため、複数の手順を要する。
第2の物理・仮想アドレス変換では、まず第1の物理・仮想アドレス変換を用いて、OSが保持している物理・仮想アドレス変換テーブルの物理アドレスを取得する(ステップS101)。
この物理アドレスを用いて物理・仮想アドレス変換テーブルを参照し、その内容を取得する(ステップS102)。
高機能OSでは、物理・仮想変換テーブルが複数の層で構成されているものがあり、一度の参照で変換が完了するとは限らない。そのため、変換が完了しない場合(ステップS103、No)、物理・仮想変換テーブルの内容から次に参照すべき物理・仮想変換テーブルの仮想アドレスを取得する(ステップS104)。
これらの処理を繰り返し、目的の物理アドレスが得られた場合(ステップS103、Yes)、得られた物理アドレスの通知を行い(ステップS105)、第2の物理・仮想アドレス変換を終了する。
次に、情報抽出手段672について図12を用いて説明する。
まず、基点となるデータ構造が存在する仮想アドレスを元に、ステップS201の物理・仮想アドレス変換を行うことによって参照するデータが存在する物理アドレスを取得する。
データを直接参照可能なアドレスとしてマッピング可能な場合、参照するデータと同一もしくは類似の構造をもつ構造体変数を該当する物理アドレスにマッピングするなどの方法で必要情報に容易にアクセス可能なように構成し(ステップS202)、参照する(ステップS203)。
もしくは、参照するデータと同一もしくは類似の構造をもつ変数をあらかじめ用意し、得られた物理アドレスを用いて、参照するデータを用意した変数の領域にコピーを行い、参照を行うこととしてもよい。この場合、直接参照できない場合でも利用可能になるが、コピーを行うオーバヘッドが発生するという欠点も生じる。
データ構造が単純な場合、これらの処理で抽出が終了(ステップS204、Yes)し、抽出結果を通知(ステップS206)することで処理が完了するが、データによっては、リスト構造などのデータが分散した状態で配置されているものがある。
最初の参照で必要データがないか、一部しかそろっていない場合(ステップS204、No)、次のリストの場所を示すアドレスを取得する(ステップS205)。このアドレスは仮想アドレスで記載されているため、物理・仮想アドレス変換を行うことによって、物理アドレスを取得し(ステップS201)、次のリストの内容を参照する(ステップS202、S203)。この処理を必要なデータが揃うまで複数回繰り返す。
なお、仮想アドレスを用いるOS以外では、これらの処理のうちステップS201の物理・仮想アドレス変換は必要がなく、これを除いた処理によって同様の機能を実現することができる。
また、本実施形態では2個の実行ユニットを備えるシステムについて記載しているが、3個以上の任意の個数の実行ユニットを備えるシステムについても容易に拡張可能である。
本実施形態では、デバッグ用プログラムとして、デバッグ用プログラムが起動している実行ユニットとは異なるデバッグ対象実行ユニットに関わる記憶領域を参照することで、デバッグ対象実行ユニットや対象実行ユニットで動作しているプログラムの状態を解析するデバッグ用プログラムを備える。このため、デバッグ対象実行ユニットの状態の如何にかかわらずデバッグ作業を行うことが可能となる。
一方で、実行ユニットが備えるレジスタやキャッシュメモリなどの資源は、実行ユニットが使用するメモリ領域を参照するだけでは確認することができない。そして、レジスタの内容が参照できないことにより、必要なデバッグ情報が得られないことや、キャッシュメモリに最新の情報がとどまり続けることにより、メモリを参照するだけでは最新の情報が確認できないなどの弊害が生じる可能性がある。
そのため、本実施形態の構成に加えて、デバッグ対象である実行ユニット上に、実行ユニットが備えるレジスタの内容の読み書きや、キャッシュメモリの内容の参照、制御などを行う実行ユニット内資源管理手段をデバッグ用プログラムにより構成するようにしてもよい。この実行ユニット内資源管理手段は、レジスタ内容読み出し・書込み手段と、キャッシュメモリ管理手段とから構成されている。
レジスタ内容の読み出しを行う場合、対象とする実行ユニット上のデバッグ用プログラムに読み出し指示を与え、レジスタ内容読み出し・書込み手段により読み出しを行い、結果を通知する。書き込みを行う場合は、対象とする実行ユニット上のデバッグ用プログラムに書き込み指示と書き込むデータを与え、レジスタ内容読み出し・書込み手段により書き込みが行われるようにする。
また、キャッシュメモリの内容の参照、制御を行うためのキャッシュメモリ管理手段は、キャッシュ内容吐き出し指示を受け取ると、実行ユニットにキャッシュメモリ吐き出し命令を実行するように制御を行う。キャッシュメモリの吐き出しが完了すると、メモリ上に最新の情報が書き込まれるので、その後、他の実行ユニット上の、記憶領域を参照することで情報を取得するデバッグ用プログラムで観測することも可能となる。もしくは、デバッグ対象実行ユニット上のデバッグ用プログラムにおいて、読み出したキャッシュメモリの内容を外部に通知するよう構成することも可能である。また、キャッシュメモリの動作モードの制御や、内容の更新などの制御も行うことができるよう構成することが望ましい。
更に、デバッグ対象実行ユニット上でデバッグ用プログラムを実行中は、実行ユニットが備えるレジスタのうち、演算に用いるレジスタや、プログラムカウンタなどのプログラムの進行に関わるレジスタなどは、デバッグ対象プログラムの実行中に用いられていた内容が記憶領域のスタック領域に退避されている。しかし、そのスタック領域の内容がキャッシュメモリ上に残っており、記憶領域上には最新の値が保存されていない可能性がある。このため、前述のキャッシュメモリ管理手段を用いることによって、キャッシュメモリの内容を記憶領域上に吐き出すか、直接読み出すことにより、退避されたレジスタの内容を取得することで、デバッグ対象プログラムが実行中に保持していたレジスタ内容を取得するよう構成することができる。
このような構成とすることにより、デバッグ対象実行ユニットでデバッグ用プログラムを使用可能である場合には、デバッグ対象実行ユニット上の、レジスタ内容読み出し・書込み手段及びキャッシュメモリ管理手段を備えるデバッグ用プログラムを利用することで、記憶領域を参照する方法で情報を取得するデバッグ用プログラムでは得られないレジスタ内容やキャッシュメモリの内容の読み書き、制御などが可能となる。
(第6の実施形態)
次に、本発明の第6の実施形態のデバッグシステムについて図13を参照して詳細に説明する。
上記で説明した第1〜第5の実施形態では、実行ユニットに何らかの不具合が発生した場合には、外部の制御端末から起動指示を入力する必要があった。本発明の第6の実施形態では、実行ユニットに何等かの不具合が発生した場合には、外部の制御端末から起動指示を入力しない場合であっても、自動的に起動指示が生成されるようにしたものである。
本発明の第6の実施形態のデバッグシステムは、図1に示した第1の実施形態のデバッグシステムにおける構成に加え、不具合の発生を検出する不具合検出手段68、78を備える。
不具合検出手段68、78は、実行ユニットA、Bにおいて不具合が発生したことを検出すると、デバッグ用プログラム起動指示を生成する。
ここで、不具合検出手段68、78によって不具合を検出したことを外部の制御端末に通知するようシステムを構成するのみでもよいが、更に、不具合発生を検出した時点で不具合が発生した実行ユニットやプログラム、不具合を発生させる原因となる実行ユニットやプログラム、もしくはその他の実行ユニットやプログラムも含めて、停止させる手段を備えるよう構成することが望ましい。
なお、不具合検出手段68、78が設置される実行ユニットは、デバッグ用プログラム起動手段62、72が設置される実行ユニットと必ずしも一致している必要はなく、ある実行ユニットにどちらか片方のみが設置されていてもよい。
本実施形態における全体の動作については、不具合検出手段68、78によって不具合を検出するステップが、デバッグ用プログラム起動指示を受信するステップの前に追加されることを除いて、上記で説明したいずれかの実施形態と同一である。
次に、不具合検出手段68、78の構成・動作について詳細に説明する。
不具合には、不具合の発生がシステムによって報告される実行時エラーと、報告が行われず、正常動作を妨げる不具合がある。実行時エラーには、不正メモリ参照、不正命令実行、ハードウェア例外などがある。正常動作を妨げる不具合には、無限ループなどによるストールや、暴走などがある。
まず、実行時エラーを対象とした、不具合検出手段68、78の第1の構成について説明する。この場合の不具合検出手段は、システムにより報告される不具合を受信する不具合受信手段と、不具合発生を通知する通知手段を備える。ここで、実行時エラーが発生した場合に特定のプログラムが実行されるように構成されているシステムにおいては、この特定のプログラム内に不具合検出手段を構成してもよい。
実行時エラーを対象とする場合で、実行ユニット上のプログラムとして不具合検出手段を構成した場合、実行時エラーが発生した実行ユニットの不具合検出手段によって不具合が検出される。この場合、デバッグ用プログラムを起動する実行ユニットを、不具合の発生した実行ユニットとして起動指示を生成することとしてもよいが、一方で実行時エラーが発生したものとの同一の実行ユニット上でデバッグ用プログラムを起動する場合、プログラムの起動が実行ユニットや記憶領域に与える影響により原因が判別できなくなる可能性もある。このような場合には、別の実行ユニットに対してデバッグ用プログラム起動指示を発行し、第5の実施形態におけるデバッグ用プログラムを起動するよう構成することが望ましい。
次に、正常動作を妨げる不具合を対象とした不具合検出手段68、78の第2の構成について説明する。この場合の不具合検出手段は、デバッグ対象実行ユニット上で実行されるプログラムによって更新される情報を読み出す更新情報読出し手段と、情報の更新が正常に行われていることを確認する正常更新確認手段と、不具合発生を通知する通知手段によって構成される。
次に、不具合検出手段68、78の第2の構成の動作について図14を参照して説明する。ここでは、不具合発生通知手段を、不具合発生確認後にデバッグ用プログラム起動指示を生成するデバッグ用プログラム起動指示生成手段として構成した場合について例示する。
まず、更新情報読出し手段が、他の実行ユニット上で実行されるプログラムによって更新される情報を読み出す(ステップS301)。この情報を元に、正常更新確認手段が、更新が正常に行われているかどうかを確認する(ステップS302)。更新が正常に行われている場合は(ステップS303、Yes)、次の更新を確認する。不具合の発生により更新に異常を検出すると(ステップS303、No)、デバッグ用プログラム起動指示生成手段がデバッグ用プログラム起動指示を生成し(ステップS304)、デバッグ用プログラム起動手段に起動指示を与える。なお、プログラムによって更新される情報は、情報を更新するプログラムを設けることで構成してもよいが、OSが内部で使用する時刻情報をプログラムによって更新される情報として用いることで、別途プログラムを設けずに不具合検出手段を構成することができる。
次に、正常動作を妨げる不具合を対象とした不具合検出手段68、78の第3の構成について説明する。この場合の不具合検出手段は、デバッグ対象実行ユニットに対して実行ユニット間割り込みを生成する割り込み生成手段と、デバッグ対象実行ユニットからの応答を確認する応答確認手段と、デバッグ用プログラム起動指示を生成する起動指示生成手段によって構成され、またデバッグ対象実行ユニットには割り込みに対する応答手段を備える。
次に不具合検出手段の第3の構成の動作について図15を参照して説明する。ここでは、不具合発生通知手段を、不具合発生確認後にデバッグ用プログラム起動指示を生成するデバッグ用プログラム起動指示生成手段として構成した場合について例示する。
まず、信号送信手段が他の実行ユニットに対して信号を送信し(ステップS311)、応答が返ってくるのを待つ(ステップS312)。規定時間内に応答を受信した場合は(ステップS313、Yes)、正常であると判断し、次の信号を送信する。規定時間内に応答が返ってこない場合(ステップS313、No)、不具合により応答不能になったと判断し、起動指示生成手段がデバッグ用プログラム起動指示を生成し(ステップS314)、デバッグ用プログラム起動手段に起動指示を与える。なお、ここでは判断を規定時間内に応答が返ってくることとしたが、返ってきた応答が正常であるか、異常であるかを判断基準とすることもできる。
次に、正常動作を妨げる不具合を対象とした不具合検出手段の第4の構成について説明する。この構成では、ストールが発生している実行ユニットを避けて、デバッグ用プログラムを起動可能な実行ユニットを選定するストール発生実行ユニット回避手段を構成する要素に、現在どの実行ユニットが選定されているかを検査する手段を追加することで構成される。
次に、不具合検出手段68、78の第4の構成の動作について図16を参照して説明する。ここでは、不具合発生通知手段を、不具合発生確認後にデバッグ用プログラム起動指示を生成するデバッグ用プログラム起動指示生成手段として構成した場合について例示する。
不具合検出手段68、78の第4の構成では、図9におけるストール発生実行ユニット回避手段66、76の動作に加えて、図16におけるステップS78、ステップS79の、ストール発生実行ユニット回避手段66、76の動作によって設定されている現在の実行ユニットがどれであるかを判定するステップが追加される。
なお、図16において、ステップS71とステップS74は意図的に選択するものではなく、その時点での状況によって必然的に選択される事項である。つまり、ステップS71の分岐は、ステップS72は実行ユニットAによって実行される処理であるが、実行ユニットAがストールしている場合はプログラムが実行されないため、この処理が行われずにステップS73に進んでしまうことを示す。同様に、ステップS74の分岐は、ステップS75は実行ユニットBによって実行される処理であるが、実行ユニットBがストールしている場合はこの処理が行われずにステップS76に進んでしまうことを示す。
ここでは、デバッグ用プログラム起動指示の振り分け元となる起動ユニットの初期値が実行ユニットBであるものとして説明する。まず、ステップS71の段階で、実行ユニットAがストールしていない場合(ステップS71、No)、初期設定値は実行ユニットBであるので(ステップS78、Yes)、実行ユニットA上のプログラムが、デバッグ用プログラム起動指示の振り分け元となる起動ユニットの設定値を実行ユニットAに変更する(ステップS72)が、実行ユニットAがストールしていた場合(ステップS71、Yes)、ステップS72の処理が行われずにステップS73に進む。ここで起動指示がない場合(ステップS73、No)、実行ユニットBがストールしていなければ(ステップS74、No)ステップS79の検査に進む。ステップS79では、起動指示の振り分け元となる実行ユニットの設定値を検査するが、この検査で、設定されている実行ユニットがAであれば(ステップS79、Yes)正常であるが、実行ユニットAでない場合は(ステップS79、No)ステップS72が実行されなかったことになるため、実行ユニットAの不具合を検出できる。この場合には、ステップS77に進み、設定されている実行ユニット(この場合実行ユニットB)に起動指示が送信され、デバッグ用プログラムを起動する。ここで、実行ユニットBがストールしていた場合には(ステップS74、Yes)、同様にステップS78にて不具合が検出され(ステップS78、No)、デバッグ用プログラムが起動される。
なお、不具合検出手段を構成するそれぞれの手法は互いに排他的なものではなく、任意の組み合わせで用いることも可能である。
次に、本実施のデバッグシステムの効果について説明する。
本実施形態では、不具合検出手段68、78を備え、不具合の発生を確認できるよう構成しているため、不具合発生の確認が困難なシステムであっても、不具合発生確認後にデバッグ用プログラムを起動してデバッグ作業を開始することができる。
また、不具合発生を検出した時点で不具合が発生した実行ユニットやプログラム、不具合を発生させる原因となる実行ユニットやプログラム、もしくはその他の実行ユニットやプログラムも含めて、停止させる手段を備えるよう不具合検出手段を構成することで、不具合発生後に処理が進んでしまうことにより、不具合発生原因の確認が困難になる状況を避けることができる。
また、不具合の発生を検出すると、デバッグ用プログラム起動指示を生成できるよう不具合検出手段を構成することで、作業者がデバッグ用プログラムを起動する実行ユニットやデバッグ用プログラムの種類を判断してデバッグ用プログラムを起動することなくデバッグ作業を開始することができる。
(第7の実施形態)
次に、本発明の第7の実施形態のデバッグシステムについて図17を参照して詳細に説明する。
上記で説明した第5の実施形態のデバッグシステムによれば、ある実行ユニットがストールした場合でも、その実行ユニットに関するメモリの内容を読むことが可能となる。しかし、この第5の実施形態のデバッグシステムによっても、ストール状態となった実行ユニットのレジスタやキャッシュメモリの内容を読むことはできない。なぜならば、実行ユニットがストール状態となった場合には、一般的にレジスタやキャッシュメモリの内容の読み出しができなくなるからである。本発明の第7の実施形態のデバッグシステムは、このような場合であっても、ストールした実行ユニットのレジスタやキャッシュメモリの内容を読み出してデバッグを行うことを可能にするものである。
本発明の第7の実施形態は、上記で説明した第1の実施形態における構成に加え、実行ユニットA用プログラム領域6内のデバッグ用プログラム63には、実行ユニット間割り込み生成手段631と、応答受信手段632とを備えるようにし、デバッグ対象実行ユニットで実行される、割り込みハンドラ69内に、情報取得・制御手段692、応答生成手段691を導入した構成となっている。
実行ユニット間割り込み生成手段631は、デバッグ対象の実行ユニットBに対して割り込みを発生させる。応答受信手段632は、デバッグ対象の実行ユニットBにおける応答生成手段791からの応答を受信する。
情報取得・制御手段692は、他の実行ユニットBからの割り込みが発生した際に、レジスタ、キャッシュメモリ、フラッシュメモリ等の予め設定されたメモリ内の情報を取得する。応答生成手段691は、情報取得・制御手段692により得られた情報を、割り込みを発生させた実行ユニットBに対して送信する。
図2に示した第1の実施形態では、割り込みハンドラ69は図示されていないが、割り込みハンドラは一般的な実行ユニットであれば標準的に備えられているプログラムである。
また、本実施形態におけるデバッグシステムは、同様にして、実行ユニットB用プログラム領域7内のデバッグ用プログラム73には、実行ユニット間割り込み生成手段731と、応答受信手段732とを備えるようにし、デバッグ対象実行ユニットで実行される、割り込みハンドラ79内に、情報取得・制御手段792、応答生成手段791を導入した構成となっている。
尚、本実施形態では、第1の実施形態の構成に対して適用した場合を説明しているが、第2〜第6の実施形態に対しても同様に適用することができるものである。
次に、図18のフローチャートを参照して本実施形態の動作について詳細に説明する。
ここでは、実行ユニットAのデバッグ用プログラム63から、実行ユニットB側のデバッグを行う場合について例示する。まず、デバッグ用プログラム63は、対象となる実行ユニットBに対して実行ユニット間割り込みを発行する(ステップS401)。すると実行ユニットBの割り込みハンドラ79が起動する(ステップS402)が、この割り込みハンドラ79においてデバッグ情報取得・制御手段792を用いることにより、実行ユニットBのレジスタ内容の収集や書込み、キャッシュ内容の参照やフラッシュメモリなどの、情報収集や制御などを行う(ステップS403)。その後、応答生成手段791によって実行ユニットAに対して応答を生成し(ステップS404)、実行ユニットAは応答受信手段632を用いてこれを受信する(ステップS405)。ここで、作業内容が制御のみの場合は応答には制御の成否情報のみを含むこととすればよいが、情報を参照する作業の場合は収集した情報を応答に含むように構成する。
もしくは、実行ユニットB側で周期的に発生するタイマ割り込みの割り込みハンドラとして割り込みハンドラ79を構成し、対象プロセスの実行制御を行う指示を実行ユニットAから実行ユニットBへの通信手段を用いることで与えるよう構成してもよい。ただし、この場合は実行制御を行うタイミングが、周期的に発生する割り込みのタイミングのみになるという制約が生じる。
また、実行ユニットBのデバッグ用プログラム73から、実行ユニットA側のデバッグを行う場合についても同様の仕組みで実現可能である。
更に、本実施形態では2個の実行ユニットを備えるシステムについて記載しているが、3個以上の任意の個数の実行ユニットを備えるシステムについても容易に拡張可能である。
次に、本実施形態のデバッグシステムの効果について説明する。
本実施形態では、デバッグ用プログラム63、73には実行ユニット間割り込み生成手段631、731、応答受信手段632、732を備え、デバッグ対象実行ユニットで実行される割り込みハンドラ内に、情報取得・制御手段、応答手段を備える。そして、デバッグ対象実行ユニット以外の実行ユニット上で動作しているデバッグ用プログラムから、デバッグ対象実行ユニットに割り込みを発生させ、割り込みハンドラ内で情報の取得や、制御を行う。
上述したように、割り込みハンドラとは、割り込みが発生した場合に、その割り込みを処理するために最初に起動されるプログラムである。そのため、実行ユニットA、Bの割り込みハンドラ69、79内に、情報取得・制御手段692、792および応答生成手段691、791をそれぞれ設けることにより、実行ユニットA、Bがストール状態となった場合でもストール状態となった実行ユニットのキャッシュメモリやレジスタの内容を読むことが可能となる。
(第8の実施形態)
次に、本発明の第8の実施形態のデバッグシステムについて図19を参照して詳細に説明する。
上記で説明した第1〜第7の実施形態では、ある実行ユニットがストール状態となった場合に、その実行ユニットのデバッグを行うものであった。本実施形態では、ストール状態となった実行ユニットを正常状態に復帰させるための構成について説明する。
実行ユニットがストール状態となる場合、通常動作プログラムにより実行されているあるプロセスが暴走していることが考えられる。このようにあるプロセスが暴走状態になると、他のプロセスは不具合がないにもかかわらず実行ユニット全体としてはストール状態になり機能しなくなってしまう。そこで、本発明の第8の実施形態のデバッグシステムでは、あるプロセスが暴走した場合でも、暴走したプロセスを停止させ、不具合の修正を行うことにより正常状態に復帰させることができるようにする。
本発明の第8の実施形態のデバッグシステムの構成を図19に示すが、ここでは実行ユニットBがデバッグ対象実行ユニットとなり、実行ユニットAから実行ユニットBに対するデバッグを行う場合の構成のみを示す。任意の実行ユニットから任意の実行ユニットをデバッグする場合には、同様の構成を各実行ユニットに設ける必要がある。
本実施形態のデバッグシステムは、図19に示されるように、図2に示した第1の実施形態のデバッグシステムにおける構成において、デバッグ用プログラム63には実行ユニット間割り込み生成手段(図19中では、割り込み生成手段と表示する。)631と、応答受信手段632とを備えるようにし、デバッグ対象実行ユニットである実行ユニットBにおいて実行される割り込みハンドラ79内には、プロセス制御手段793と、応答生成手段791を導入する。
実行ユニット間割り込み生成手段631は、デバッグ対象実行ユニットに対する割り込みを発生させる。応答受信手段632は、デバッグ対象の実行ユニットBにおける応答生成手段791からの応答を受信する。
プロセス制御手段793は、デバッグ対象の実行ユニットにおいて起動している通常動作プログラム74のプロセス制御を行って暴走しているプロセスを停止させる。応答生成手段691は、プロセス制御手段793によるプロセス制御の結果得られた情報を、割り込みを発生させた実行ユニットに対して送信する。
次に、図20のフローチャートを参照して本実施形態の動作について詳細に説明する。ここでは、実行ユニットAのデバッグ用プログラムから、実行ユニットB側のプロセス制御を行う場合について例示する。まず、デバッグ用プログラムは、対象となる実行ユニットに対して実行ユニット間割り込みを発行する(ステップS401)。すると実行ユニットBの割り込みハンドラ79が起動する(ステップS402)が、この割り込みハンドラ79においてプロセス制御手段793を用いることにより、実行ユニットBで実行されている通常動作プログラム74のプロセス制御を行う(ステップS406)。その後、応答生成手段791によって実行ユニットAに対して応答を生成し(ステップS404)、実行ユニットAは応答受信手段632を用いてこれを受信する(ステップS405)。
もしくは、実行ユニットB側で周期的に発生するタイマ割り込みの割り込みハンドラとして割り込みハンドラ79を構成し、対象プロセスの実行制御を行う指示を実行ユニットAから実行ユニットBへの通信手段を用いることで与えるよう構成してもよい。ただし、この場合は実行制御を行うタイミングが、周期的に発生する割り込みのタイミングのみになるという制約が生じる。
具体的なプロセス制御の実現には、次のような方法がある。
第1のプロセス制御としては、OSのスケジューラに、スケジューラが行うプロセス制御を外部からの指示に基づいて変更するプロセス制御変更手段を備えるようにし、割り込みハンドラ79内のプロセス制御手段793から、プロセス変更指示をプロセス制御変更手段に送信することで実現することができる。
第2のプロセス制御としては、割り込みハンドラ79内のプロセス制御手段793から、OSのAPI(Application Program Interface)(システムコールなど)に類似する手順により、制御対象プロセスに対してプロセス制御シグナルを発行するプロセス制御シグナル発行手段を備え、対象プロセスにプロセス制御シグナルを発行することで実現することができる。
第3のプロセス制御としては、割り込みハンドラ79内から、記憶領域上に退避されている制御対象プロセスへの戻りアドレスを、別のアドレスに変更する手段を備え、戻りアドレスを不正なアドレスに変更し、不正アドレス参照例外を発生させることで実現することができる。ここで、例外を発生させる処理のみでも例外による異常終了処理をOSが行うため、プロセスを終了させることができるが、例外ハンドラ内に、プロセスを停止させるなどの、異常終了処理以外の制御を行うよう構成することで、様々なプロセス制御を行うことが可能となる。
第4のプロセス制御としては、割り込みハンドラ79内から、記憶領域上に退避されている制御対象プロセスへの戻りアドレスに存在する命令を、別の命令に変更する手段を備え、戻りアドレスに存在する命令をデバッグ命令、不正な命令などに置き換え、例外を発生させることで実現することができる。ここで、例外を発生させる処理のみでも例外による異常終了処理をOSが行うため、プロセスを終了させることができるが、例外ハンドラ内に、プロセスを停止させるなどの、異常終了処理以外の制御を行うよう構成することで、様々なプロセス制御を行うことが可能となる。
ユーザプロセスとして構成されるデバッグ用プログラムからプロセス制御用システムコールを発行し、プロセス制御を行う既存手法を用いる場合、実行ユニットで実行されているプロセスのいずれかが暴走した場合にはデバッグ用プログラムに制御が移らず、結果としてプロセス制御を行うことができない弊害がある。しかし、割り込みハンドラ内からプロセス制御を行う上記いずれかのプロセス制御手段を用いる場合、割り込みハンドラはユーザプロセスに比べて高い優先度で実行されるため、暴走したプロセスが存在する場合であってもプロセス制御を行うことが可能となる。
また、実行ユニットBのデバッグ用プログラムから、実行ユニットA側のデバッグを行う場合についても同様の仕組みで実現可能である。
更に、本実施形態では2個の実行ユニットを備えるシステムについて記載しているが、3個以上の任意の個数の実行ユニットを備えるシステムについても容易に拡張可能である。
次に、本実施形態のデバッグシステムの効果について説明する。
本実施形態では、デバッグ対象実行ユニットによって実行される割り込みハンドラ内に、プロセス制御手段を導入し、割り込みハンドラ内からデバッグ対象プロセスの制御を行うよう構成する。そして、デバッグ対象実行ユニット以外の実行ユニット上で動作しているデバッグ用プログラムから、デバッグ対象実行ユニットに割り込みを発生させ、割り込みハンドラ内でプロセス制御を行うことにより、デバッグ対象実行ユニット以外の実行ユニットからプロセス制御を行うことが可能になる。また、ユーザプロセスよりも高い優先度で実行される割り込みハンドラ内からプロセス制御を行うため、暴走したプロセスが存在する場合であっても、暴走しているプロセスを停止させ、不具合が発生している状況を解析して変数内容の修正等の処理を行い、更に再度プログラムを実行させて不具合が解消されたか否かを観察することが可能となる。そして、このような処理を繰り返すことにより最終的にはストール状態となっていた実行ユニットを正常動作に復帰することが可能となる。
本発明は、複数の実行ユニットを備えるシステムLSIのデバッグシステムといった用途に適用できる。また、複数の実行ユニットを備える組み込みシステム、複数の実行ユニットを備えるコンピュータシステム用のデバッグシステムといった用途にも適用可能である。
本発明の第1の発明を実施するための対象ハードウェアの構成を示すブロック図である。 本発明の第1の実施形態のデバッグシステムの構成を示すブロック図である。 デバッグ用プログラム起動指示振り分け手段61、71の構成を示すブロック図である。 本発明の第1の実施形態のデバッグシステムの動作を示すフローチャートである。 デバッグ用プログラム起動指示振り分け手段61の動作を示すフローチャートである。 本発明の第2の実施形態のデバッグシステムの構成を示すブロック図である。 本発明の第3の実施形態のデバッグシステムの構成を示すブロック図である。 本発明の第4の実施形態のデバッグシステムの構成を示すブロック図である。 ストール発生実行ユニット回避手段66の動作を示すフローチャートである。 本発明の第5の実施形態のデバッグシステムの構成を示すブロック図である。 第2の物理・仮想アドレス変換手段671の動作を示すフローチャートである。 情報抽出手段672の動作を示すフローチャートである。 本発明の第6の実施形態のデバッグシステムの構成を示すブロック図である。 不具合検出68、78の第2の構成の動作を示すフローチャートである。 不具合検出68、78の第3の構成の動作を示すフローチャートである。 不具合検出68、78の第4の構成の動作を示すフローチャートである。 本発明の第7の実施形態のデバッグシステムの構成を示すブロック図である。 本発明の第7の実施形態の動作を示すフローチャートである。 本発明の第8の実施形態の構成を示すブロック図である。 本発明の第8の実施形態の動作を示すフローチャートである。 従来のデバッグシステムの構成を示すブロック図である。 従来の他のデバッグシステムの構成を示すブロック図である。 図22に示した従来のデバッグシステムの動作を示すフローチャートである。
符号の説明
1 通信ポート
2 記憶手段
3 プログラム格納手段
4 実行ユニットA
5 実行ユニットB
6 実行ユニットA用プログラム領域
7 実行ユニットB用プログラム領域
8 実行ユニットC用プログラム領域
61、71、81 デバッグ用プログラム起動指示振り分け手段
62、72、82 デバッグ用プログラム起動手段
63、73、83 デバッグ用プログラム
64、74、84 通常動作プログラム
65、75、85 中継手段
66、76 ストール発生実行ユニット回避手段
67、77 デバッグ用プログラム
68、78 不具合検出手段
69、79 割り込みハンドラ
611、711 通信ポートからの受信手段
612、712 実行ユニット間通信の送信手段
613、713 通信ポートの通信対象変更手段
614、714 デバッグ用プログラム起動手段への指示送信手段
615、715 実行ユニット間通信の受信手段
631、731 実行ユニット間割り込み生成手段
632、732 応答受信手段
671、771 物理・仮想アドレス変換手段
672、772 情報抽出手段
691、791 応答生成手段
692、792 情報取得・制御手段
793 プロセス制御手段
801 演算プロセッサ群
802 メモリ装置
803 診断プロセッサ
821 演算プロセッサの内部情報
831 ストール検出手段
832 採集手段
833 演算プロセッサの内部状態一時保持手段
834 書込み手段
835 書込み報告手段
836 初期化手段
901 CPU−A
902 CPU−B
903 CPU制御回路
904 割り込み制御回路
905 バスとレース機能
906 ストラップ取込み回路
907 デバッグ制御回路
908 ストラップ設定手段
A、B 実行ユニット

Claims (15)

  1. 複数の実行ユニットが連携して動作するシステムにおいて実行されるプログラムのデバッグを行うためのデバッグシステムであって、
    前記複数の実行ユニット毎に設けられ、デバッグ用プログラムの起動を指示するデバッグ用プログラム起動指示を受信すると、当該デバッグ用プログラム起動指示により指定されている実行ユニットに対して受信した前記デバッグ用プログラム起動指示を振り分ける起動指示振り分け手段と、
    前記複数の実行ユニット毎に設けられ、前記起動指示振り分け手段により振り分けられたデバッグ用プログラム起動指示に基づいて、指定された実行ユニット上にデバッグ用プログラムを起動する複数のデバッグ用プログラム起動手段とを備え、
    前記各実行ユニット上において、割り込みが発生した場合に該割り込みを処理するために最初に起動されるプログラムである割り込みハンドラによって他の実行ユニットからの割り込みが発生した際に、通常動作プログラムにより実行されたプロセスであって暴走している前記プロセスを停止させるプロセス制御手段と、前記プロセス制御手段によるプロセス制御が行われた後得られたレジスタ、キャッシュメモリフラッシュメモリを含む予め設定されたメモリ内の情報を、前記割り込みを発生させた前記他の実行ユニットに対して送信する応答生成手段とが実現され、
    前記各実行ユニットのいずれかにおいて起動されるデバッグ用プログラムによって、デバッグ対象の実行ユニットに対して割り込みを発生させる実行ユニット間割り込み生成手段と、デバッグ対象の前記実行ユニットにおける応答生成手段からの応答を受信する応答受信手段とが実現されたデバッグシステム。
  2. 前記プロセス制御手段は、オペレーティングシステム内に備えられたプロセス制御変更手段に対して、外部からの指示に基づいてプロセス変更指示を行うことにより前記暴走している前記プロセスを停止させる、請求項1記載のデバッグシステム。
  3. 前記プロセス制御手段は、前記の割り込みが発生した場合に、オペレーティングシステム内に備えられたAPI(Application Program Interface)、システムコールを含む所定の処理手順により、制御対象プロセスに対してプロセス制御シグナルを発行することにより前記暴走している前記プロセスを停止させる、請求項1記載のデバッグシステム。
  4. 前記プロセス制御手段は、前記割り込みが発生した場合に、記憶領域上に退避されている制御対象プロセスへの戻りアドレスを別のアドレスに変更して、不正アドレス参照例外を発生させることにより前記暴走している前記プロセスを停止させる、請求項1記載のデバッグシステム。
  5. 前記プロセス制御手段は、前記割り込みが発生した場合に、記憶領域上に退避されている制御対象プロセスへの戻りアドレスに存在する命令を、別の命令に変更して、例外を発生させることにより前記暴走している前記プロセスを停止させる、請求項1記載のデバッグシステム。
  6. 複数の実行ユニットが連携して動作するシステムにおいて実行されるプログラムのデバッグを行うためのデバッグ方法であって、
    前記複数の実行ユニット毎に設けられた起動指示振り分け手段により、デバッグ用プログラムの起動を指示するデバッグ用プログラム起動指示を受信すると、当該デバッグ用プログラム起動指示により指定されている実行ユニットに対して受信した前記デバッグ用プログラム起動指示を振り分けるステップと、
    前記複数の実行ユニット毎に設けられたデバッグ用プログラム起動手段により、振り分けられた前記デバッグ用プログラム起動指示に基づいてデバッグ対象実行ユニット上にデバッグ用プログラムを起動するステップと、
    前記各実行ユニット上において、割り込みが発生した場合に該割り込みを処理するために最初に起動されるプログラムである割り込みハンドラによって実現されたプロセス制御手段により、他の実行ユニットからの割り込みが発生した際に、通常動作プログラムにより実行されたプロセスであって暴走している前記プロセスを停止させるステップと、
    前記プロセス制御手段によるプロセス制御が行われた後得られたレジスタ、キャッシュメモリフラッシュメモリを含む予め設定されたメモリ内の情報を、前記割り込みハンドラによって実現された応答生成手段が、前記割り込みを発生させた前記他の実行ユニットに対して送信するステップと、
    デバッグ対象の前記実行ユニットからの応答を、デバッグ用プログラムによって実現された応答受信手段が受信するステップと、を備えたデバッグ方法。
  7. 前記プロセス制御を行うステップでは、オペレーティングシステム内に備えられたプロセス制御変更手段に対して、外部からの指示に基づいてプロセス変更指示を行うことにより前記暴走している前記プロセスを停止させる請求項6記載のデバッグ方法。
  8. 前記プロセス制御を行うステップでは、前記割り込みが発生した場合に、オペレーティングシステム内に備えられたAPI(Application Program Interface)、システムコールを含む所定の処理手順により、制御対象プロセスに対してプロセス制御シグナルを発行することにより前記暴走している前記プロセスを停止させる、請求項6記載のデバッグ方法。
  9. 前記プロセス制御を行うステップでは、前記割り込みが発生した場合に、記憶領域上に退避されている制御対象プロセスへの戻りアドレスを別のアドレスに変更して、不正アドレス参照例外を発生させることにより前記暴走している前記プロセスを停止させる、請求項6記載のデバッグ方法。
  10. 前記プロセス制御を行うステップでは、前記割り込みが発生した場合に、記憶領域上に退避されている制御対象プロセスへの戻りアドレスに存在する命令を、別の命令に変更して、例外を発生させることにより前記暴走している前記プロセスを停止させる、請求項6記載のデバッグ方法。
  11. 複数の実行ユニットが連携して動作するデバッグシステムにおいて実行されるプログラムのデバッグを行うためのデバッグ方法を前記実行ユニットに実行させるためのプログラムであって、
    前記複数の実行ユニット毎に設けられた起動指示振り分け手段により、デバッグ用プログラムの起動を指示するデバッグ用プログラム起動指示を受信すると、当該デバッグ用プログラム起動指示により指定されている実行ユニットに対して受信した前記デバッグ用プログラム起動指示を振り分ける処理と、
    前記複数の実行ユニット毎に設けられたデバッグ用プログラム起動手段により、振り分けられた前記デバッグ用プログラム起動指示に基づいてデバッグ対象実行ユニット上にデバッグ用プログラムを起動する処理と、
    前記各実行ユニットのいずれかにおいて起動されるデバッグ用プログラムによって実現された実行ユニット間割り込み生成手段により、デバッグ対象の実行ユニットに対して割り込みを発生させる処理と、
    前記各実行ユニット上において、割り込みが発生した場合に該割り込みを処理するために最初に起動されるプログラムである割り込みハンドラによって実現されたプロセス制御手段により、他の実行ユニットからの割り込みが発生した際に、通常動作プログラムにより実行されたプロセスであって暴走している前記プロセスを停止させる処理と、
    前記割り込みハンドらによって実現された応答生成手段により、前記プロセス制御手段によるプロセス制御が行われた後得られたレジスタ、キャッシュメモリフラッシュメモリを含む予め設定されたメモリ内の情報を、割り込みを発生させた実行ユニットに対して送信する処理、前記応答生成手段により、デバッグ対象の前記実行ユニットからの応答を、デバッグ用プログラムが起動された実行ユニットが受信する処理と、
    前記実行ユニットに実行させるためのプログラム。
  12. 前記プロセス制御を行う処理では、オペレーティングシステム内に備えられたプロセス制御変更手段に対して、外部からの指示に基づいてプロセス変更指示を行うことにより前記暴走している前記プロセスを停止させる、請求項11記載のプログラム。
  13. 前記プロセス制御を行う処理では、前記割り込みが発生した場合に、オペレーティングシステム内に備えられたAPI(Application Program Interface)、システムコールを含む所定の処理手順により、制御対象プロセスに対してプロセス制御シグナルを発行することにより前記暴走している前記プロセスを停止させる、請求項11記載のプログラム。
  14. 前記プロセス制御を行う処理では、前記割り込みが発生した場合に、記憶領域上に退避されている制御対象プロセスへの戻りアドレスを別のアドレスに変更して、不正アドレス参照例外を発生させることにより前記暴走している前記プロセスを停止させる、請求項11記載のプログラム。
  15. 前記プロセス制御を行う処理では、前記割り込みが発生した場合に、記憶領域上に退避されている制御対象プロセスへの戻りアドレスに存在する命令を、別の命令に変更して、例外を発生させることにより前記暴走している前記プロセスを停止させる、請求項11記載のプログラム。
JP2005182039A 2005-06-22 2005-06-22 デバッグシステム、デバッグ方法およびプログラム Expired - Fee Related JP4787551B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005182039A JP4787551B2 (ja) 2005-06-22 2005-06-22 デバッグシステム、デバッグ方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005182039A JP4787551B2 (ja) 2005-06-22 2005-06-22 デバッグシステム、デバッグ方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2007004365A JP2007004365A (ja) 2007-01-11
JP4787551B2 true JP4787551B2 (ja) 2011-10-05

Family

ID=37689949

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005182039A Expired - Fee Related JP4787551B2 (ja) 2005-06-22 2005-06-22 デバッグシステム、デバッグ方法およびプログラム

Country Status (1)

Country Link
JP (1) JP4787551B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8239832B2 (en) * 2007-05-25 2012-08-07 Microsoft Corporation In-process debugging using external debugging infrastructure
WO2018123065A1 (ja) 2016-12-29 2018-07-05 三菱電機株式会社 プログラム解析システム、プログラム解析装置、プログラム解析方法および解析プログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2522158B2 (ja) * 1993-05-25 1996-08-07 日本電気株式会社 マルチプロセッサシステムのプログラムデバッグ方法
JP2004164113A (ja) * 2002-11-11 2004-06-10 Nec Micro Systems Ltd マルチcpuのリセット回路およびリセット方法

Also Published As

Publication number Publication date
JP2007004365A (ja) 2007-01-11

Similar Documents

Publication Publication Date Title
JP5579354B2 (ja) 関連アプリケーションに対するトラック・データ・クロスリファレンスを保存する方法及び装置
JP5163120B2 (ja) デバッグシステム、デバッグ方法、およびプログラム
US9632860B2 (en) Multicore processor fault detection for safety critical software applications
US8583960B2 (en) Processor device and program
JP5277961B2 (ja) 情報処理装置及びその故障隠蔽方法
JP2011232986A (ja) 情報処理装置及びメモリダンプ採取方法
JP2007334403A (ja) 計算機システム障害対応方式及び計算機システム障害対応方法
JP5716830B2 (ja) 情報処理装置及び方法、プログラム
JP4787551B2 (ja) デバッグシステム、デバッグ方法およびプログラム
JP2007299213A (ja) Raid制御装置および障害監視方法
US20140040670A1 (en) Information processing device and processing method for information processing device
JP4867896B2 (ja) 情報処理システム
JP2006252429A (ja) コンピュータシステム、コンピュータシステムの診断方法およびコンピュータシステムの制御プログラム
US20040268105A1 (en) Resetting multiple cells within a partition of a multiple partition computer system
JP4633553B2 (ja) デバッグシステム、デバッグ方法およびプログラム
CN101311909A (zh) 诊断系统异样的方法
JP4066950B2 (ja) コンピュータシステムおよびその保守方法
JP2008146148A (ja) 計算機システム
JP2009276985A (ja) 半導体集積回路装置
JP2000276364A (ja) 障害復旧方法、中央処理装置及び中央処理システム
JP4872934B2 (ja) コンピュータシステム、クライアントコンピュータ、os終了方法およびos終了プログラム
US9342359B2 (en) Information processing system and information processing method
JPH02122335A (ja) Ras回路の試験方法
JP2005258889A (ja) プログラムトレース方法およびトレース処理システム
JP2008123129A (ja) マルチプロセッサシステム、障害処理方法、プログラム及び記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080414

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110214

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110309

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110602

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110607

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110706

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: 20110715

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4787551

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140722

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees