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

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

Info

Publication number
JPWO2006137223A1
JPWO2006137223A1 JP2007522210A JP2007522210A JPWO2006137223A1 JP WO2006137223 A1 JPWO2006137223 A1 JP WO2006137223A1 JP 2007522210 A JP2007522210 A JP 2007522210A JP 2007522210 A JP2007522210 A JP 2007522210A JP WO2006137223 A1 JPWO2006137223 A1 JP WO2006137223A1
Authority
JP
Japan
Prior art keywords
program
execution unit
debugging
unit
execution
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.)
Granted
Application number
JP2007522210A
Other languages
English (en)
Other versions
JP5163120B2 (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
Original Assignee
NEC 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 filed Critical NEC Corp
Priority to JP2007522210A priority Critical patent/JP5163120B2/ja
Publication of JPWO2006137223A1 publication Critical patent/JPWO2006137223A1/ja
Application granted granted Critical
Publication of JP5163120B2 publication Critical patent/JP5163120B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3632Software debugging of specific synchronisation aspects

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

デバッグ用プログラム起動指示振り分け部(61,71)は、通信ポート(1)から送られてくるデバッグ用プログラムの起動指示を受信すると、この起動指示により指定されている実行ユニットに対して受信したデバッグ用プログラムを振り分ける。デバッグ用プログラム起動部(62,72)は、実行ユニット(A,B)毎に設けられ、起動指示振り分け部(61,71)により振り分けられた起動指示に基づいて、この起動指示により指定された実行ユニット上でデバッグ用プログラム(63,73)を起動する。

Description

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

Claims (33)

  1. 複数の実行ユニットが連携動作するシステムにおいて実行されるプログラムのデバッグを行うためのデバッグシステムであって、
    デバッグ用プログラムの起動を指示する起動指示を受信すると、前記複数の実行ユニットに対して前記起動指示を振り分ける起動指示振り分け手段と、
    前記複数の実行ユニットの各々に対応して設けられ、前記起動指示振り分け手段により振り分けられた起動指示に基づいて、対応する実行ユニット上でデバッグ用プログラムを起動する複数のデバッグ用プログラム起動手段と、を備えたデバッグシステム。
  2. 前記起動指示振り分け手段は、前記起動指示により指定された実行ユニットに対応するデバッグ用プログラム起動手段に対して前記起動指示を送信する、請求項1記載のデバッグシステム。
  3. 前記起動指示振り分け手段は、前記複数の実行ユニットの各々の動作状況に基づいて定められる実行ユニットに対応するデバッグ用プログラム起動手段に対して前記起動指示を送信する、請求項1記載のデバッグシステム。
  4. 前記起動指示振り分け手段は、前記複数の実行ユニットの各々が利用する記憶領域の空き容量を検出し、検出された空き容量に余裕のある実行ユニットに対応するデバッグ用プログラム起動手段に対して前記起動指示を送信する、請求項1記載のデバッグシステム。
  5. 前記起動指示振り分け手段は、デバッグ対象の実行ユニットと関係が無いまたは関係が少ない実行ユニットに対応するデバッグ用プログラム起動手段に対して前記起動指示を送信する、請求項1記載のデバッグシステム。
  6. 前記複数の実行ユニットのいずれか1つに対応して設けられ、通信ポートからデバッグ用プログラムに対して送信されるコマンドを、前記起動指示により指定された実行ユニット上のデバッグ用プログラムに対して中継する中継手段をさらに備える、請求項1に記載のデバッグシステム。
  7. 前記複数の実行ユニットの各々に対応して設けられ、通信ポートからデバッグ用プログラムに対して送信されるコマンドを、前記起動指示により指定された実行ユニット上のデバッグ用プログラムに対して中継する複数の中継手段をさらに備える、請求項1に記載のデバッグシステム。
  8. 前記起動指示がストール状態の実行ユニットに対応するデバッグ用プログラム起動手段には送信されないようにするストール発生実行ユニット回避手段をさらに備える、請求項1に記載のデバッグシステム。
  9. 前記複数の実行ユニットのいずれかにおいて起動されるデバッグ用プログラム内には、
    仮想アドレスを物理アドレスに変換する物理・仮想アドレス変換手段と、
    前記物理・仮想アドレス変換手段により変換された物理アドレスを用いて、オペレーティングシステムが管理情報をメモリに配置する構造を考慮して、前記デバッグ用プログラムが起動している実行ユニットとは異なるデバッグ対象の実行ユニットが利用する記憶領域から必要情報を抽出する情報抽出手段とが構成されている、請求項1に記載のデバッグシステム。
  10. 前記複数の実行ユニットの中から不具合が発生した実行ユニットを検出し、検出された実行ユニットのデバッグを行うための起動指示を生成する不具合検出手段をさらに備える、請求項1に記載のデバッグシステム。
  11. 前記複数の実行ユニットの各々において割り込みが発生した場合に該割り込みを処理するために最初に起動されるプログラムである割り込みハンドラ内には、
    他の実行ユニットからの割り込みが発生した際に、予め設定されたメモリ内の情報を取得する情報取得・制御手段と、
    前記情報取得・制御手段により取得された情報を、割り込みを発生させた実行ユニットに対して送信する応答生成手段とが構成されており、
    前記複数の実行ユニットのいずれかにおいて起動されるデバッグ用プログラム内には、
    デバッグ対象の実行ユニットに対して割り込みを発生させる実行ユニット間割り込み生成手段と、
    デバッグ対象の実行ユニットからの応答を受信する応答受信手段とが構成されている、請求項1に記載のデバッグシステム。
  12. 複数の実行ユニットが連携動作するシステムにおいて実行されるプログラムのデバッグを行うためのデバッグ方法であって、
    デバッグ用プログラムの起動を指示する起動指示を受信すると、前記複数の実行ユニットに対して前記起動指示を振り分けるステップと、
    前記複数の実行ユニットの各々に対応して設けられたデバッグ用プログラム起動手段が、振り分けられた前記起動指示に基づいて、対応する実行ユニット上でデバッグ用プログラムを起動するステップと、を備えたデバッグ方法。
  13. 前記起動指示を振り分けるステップでは、前記起動指示により指定された実行ユニットに対応するデバッグ用プログラム起動手段に対して前記起動指示を送信する、請求項12に記載のデバッグ方法。
  14. 前記起動指示を振り分けるステップでは、前記複数の実行ユニットの各々の動作状況に基づいて定められる実行ユニットに対応するデバッグ用プログラム起動手段に対して前記起動指示を送信する、請求項12に記載のデバッグ方法。
  15. 前記起動指示を振り分けるステップでは、前記複数の実行ユニットの各々が利用する記憶領域の空き容量を検出し、検出された空き容量に余裕のある実行ユニットに対応するデバッグ用プログラム起動手段に対して前記起動指示を送信する、請求項12に記載のデバッグ方法。
  16. 前記起動指示を振り分けるステップでは、デバッグ対象の実行ユニットと関係が無いまたは関係が少ない実行ユニットに対応するデバッグ用プログラム起動手段に対して前記起動指示を送信する、請求項12に記載のデバッグ方法。
  17. 前記複数の実行ユニットのいずれか1つに対応して設けられた中継手段が、通信ポートからデバッグ用プログラムに対して送信されるコマンドを、前記起動指示により指定された実行ユニット上のデバッグ用プログラムに対して中継するステップをさらに備える、請求項12に記載のデバッグ方法。
  18. 前記複数の実行ユニットの各々に対応して設けられた中継手段のいずれか1つが、通信ポートからデバッグ用プログラムに対して送信されるコマンドを、前記起動指示により指定された実行ユニット上のデバッグ用プログラムに対して中継するステップをさらに備える、請求項12に記載のデバッグ方法。
  19. 前記起動指示を振り分けるステップでは、前記起動指示がストール状態の実行ユニットに対応するデバッグ用プログラム起動手段には送信されないようにする、請求項12に記載のデバッグ方法。
  20. 前記複数の実行ユニットのいずれかにおいて起動されるデバッグ用プログラム内に構成された物理・仮想アドレス変換手段が、仮想アドレスを物理アドレスに変換するステップと、
    前記物理・仮想アドレス変換手段により変換された物理アドレスを用いて、オペレーティングシステムが管理情報をメモリに配置する構造を考慮して、前記デバッグ用プログラムが起動している実行ユニットとは異なるデバッグ対象の実行ユニットが利用する記憶領域から必要情報を抽出するステップとをさらに備える、請求項12に記載のデバッグ方法。
  21. 前記複数の実行ユニットの中から不具合が発生した実行ユニットを検出し、検出された実行ユニットのデバッグを行うための起動指示を生成するステップをさらに備える、請求項12に記載のデバッグ方法。
  22. 前記複数の実行ユニットのいずれかにおいて起動されるデバッグ用プログラム内に構成された実行ユニット間割り込み生成手段が、デバッグ対象の実行ユニットに対して割り込みを発生させるステップと、
    前記複数の実行ユニットの各々において割り込みが発生した場合に該割り込みを処理するために最初に起動されるプログラムである割り込みハンドラ内に構成された情報取得・制御手段が、他の実行ユニットからの割り込みが発生した際に、予め設定されたメモリ内の情報を取得するステップと、
    前記情報取得・制御手段により取得された情報を、割り込みを発生させた実行ユニットに対して送信するステップと、
    デバッグ用プログラムが起動された実行ユニットが、デバッグ対象の実行ユニットからの応答を受信するステップとをさらに備える、請求項12に記載のデバッグ方法。
  23. 複数の実行ユニットが連携して動作するシステムにおいて実行されるプログラムのデバッグを行うためのデバッグ方法をコンピュータに実行させるためのプログラムであって、
    デバッグ用プログラムの起動を指示する起動指示を受信すると、前記複数の実行ユニットに対して前記起動指示を振り分ける処理と、
    前記複数の実行ユニットの各々に対応して設けられたデバッグ用プログラム起動手段が、振り分けられた前記起動指示に基づいて、対応する実行ユニット上でデバッグ用プログラムを起動する処理と、をコンピュータに実行させるためのプログラム。
  24. 前記起動指示を振り分ける処理では、前記起動指示により指定された実行ユニットに対応するデバッグ用プログラム起動手段に対して前記起動指示を送信する、請求項23に記載のプログラム。
  25. 前記起動指示を振り分ける処理では、前記複数の実行ユニットの各々の動作状況に基づいて定められる実行ユニットに対応するデバッグ用プログラム起動手段に対して前記起動指示を送信する、請求項23に記載のプログラム。
  26. 前記起動指示を振り分ける処理では、前記複数の実行ユニットの各々が利用する記憶領域の空き容量を検出し、検出された空き容量に余裕のある実行ユニットに対応するデバッグ用プログラム起動手段に対して前記起動指示を送信する、請求項23に記載のプログラム。
  27. 前記起動指示を振り分ける処理では、デバッグ対象の実行ユニットと関係が無いまたは関係が少ない実行ユニットに対応するデバッグ用プログラム起動手段に対して前記起動指示を送信する、請求項23に記載のプログラム。
  28. 前記複数の実行ユニットのいずれか1つに対応して設けられた中継手段が、通信ポートからデバッグ用プログラムに対して送信されるコマンドを、前記起動指示により指定された実行ユニット上のデバッグ用プログラムに対して中継する処理をさらにコンピュータに実行させる、請求項23に記載のプログラム。
  29. 前記複数の実行ユニットの各々に対応して設けられた中継手段のいずれか1つが、通信ポートからデバッグ用プログラムに対して送信されるコマンドを、前記起動指示により指定された実行ユニット上のデバッグ用プログラムに対して中継する処理をさらにコンピュータに実行させる、請求項23に記載のプログラム。
  30. 前記起動指示を振り分ける処理では、前記起動指示がストール状態の実行ユニットに対応するデバッグ用プログラム起動手段には送信されないようにする、請求項23に記載のプログラム。
  31. 前記複数の実行ユニットのいずれかにおいて起動されるデバッグ用プログラム内に構成された物理・仮想アドレス変換手段が、仮想アドレスを物理アドレスに変換する処理と、
    前記物理・仮想アドレス変換手段により変換された物理アドレスを用いて、オペレーティングシステムが管理情報をメモリに配置する構造を考慮して、前記デバッグ用プログラムが起動している実行ユニットとは異なるデバッグ対象の実行ユニットが利用する記憶領域から必要情報を抽出する処理とをさらにコンピュータに実行させる、請求項23に記載のプログラム。
  32. 前記複数の実行ユニットの中から不具合が発生した実行ユニットを検出し、検出された実行ユニットのデバッグを行うための起動指示を生成する処理をさらにコンピュータに実行させる、請求項23に記載のプログラム。
  33. 前記複数の実行ユニットのいずれかにおいて起動されるデバッグ用プログラム内に構成された実行ユニット間割り込み生成手段が、デバッグ対象の実行ユニットに対して割り込みを発生させる処理と、
    前記複数の実行ユニットの各々において割り込みが発生した場合に該割り込みを処理するために最初に起動されるプログラムである割り込みハンドラ内に構成された情報取得・制御手段が、他の実行ユニットからの割り込みが発生した際に、予め設定されたメモリ内の情報を取得する処理と、
    前記情報取得・制御手段により取得された情報を、割り込みを発生させた実行ユニットに対して送信する処理と、
    デバッグ用プログラムが起動された実行ユニットが、デバッグ対象の実行ユニットからの応答を受信する処理とをさらにコンピュータに実行させる、請求項23に記載のプログラム。
JP2007522210A 2005-06-22 2006-05-08 デバッグシステム、デバッグ方法、およびプログラム Expired - Fee Related JP5163120B2 (ja)

Priority Applications (1)

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

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2005182032 2005-06-22
JP2005182032 2005-06-22
PCT/JP2006/309230 WO2006137223A1 (ja) 2005-06-22 2006-05-08 デバッグシステム、デバッグ方法、およびプログラム
JP2007522210A JP5163120B2 (ja) 2005-06-22 2006-05-08 デバッグシステム、デバッグ方法、およびプログラム

Publications (2)

Publication Number Publication Date
JPWO2006137223A1 true JPWO2006137223A1 (ja) 2009-01-08
JP5163120B2 JP5163120B2 (ja) 2013-03-13

Family

ID=37570259

Family Applications (1)

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

Country Status (6)

Country Link
US (1) US8589879B2 (ja)
EP (1) EP1901168A4 (ja)
JP (1) JP5163120B2 (ja)
KR (1) KR20080015110A (ja)
CN (1) CN101208667B (ja)
WO (1) WO2006137223A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009113273A1 (ja) * 2008-03-14 2009-09-17 パナソニック株式会社 プログラム実行装置およびその制御方法
US8473921B2 (en) * 2009-12-15 2013-06-25 Microsoft Corporation Debugging mechanisms in a cache-based memory isolation system
US8621118B1 (en) * 2010-10-20 2013-12-31 Netapp, Inc. Use of service processor to retrieve hardware information
CN103270504B (zh) * 2010-12-22 2016-05-25 英特尔公司 调试复杂多核和多插座系统
US9983986B2 (en) * 2015-09-28 2018-05-29 International Business Machines Corporation Testing code response to injected processing errors
JP6611963B2 (ja) 2016-12-29 2019-11-27 三菱電機株式会社 プログラム解析装置、プログラム解析システム、プログラム解析方法および解析プログラム
CN109408310B (zh) * 2018-10-19 2022-02-18 网易(杭州)网络有限公司 服务器的调试方法、服务器及可读存储介质

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4807117A (en) * 1983-07-19 1989-02-21 Nec Corporation Interruption control apparatus
JPS63240644A (ja) * 1987-03-27 1988-10-06 Fujitsu Ltd 情報収集処理方式
JPH0192847A (ja) * 1987-10-02 1989-04-12 Fujitsu Ltd デバック制御方式
JPH03292540A (ja) 1990-04-10 1991-12-24 Mitsubishi Electric Corp 計算機異常診断装置
JPH0433135A (ja) * 1990-05-30 1992-02-04 Toyo Commun Equip Co Ltd プログラムのデバッグ方式
JPH04101239A (ja) * 1990-08-21 1992-04-02 Nec Eng Ltd 情報処理装置のデバッグ方式
JPH07113912B2 (ja) * 1991-05-31 1995-12-06 富士ゼロックス株式会社 分散型情報処理システムのデバッグ方式
JPH06168155A (ja) 1992-11-30 1994-06-14 Mitsubishi Electric Corp デバッグ方式
JP2522158B2 (ja) * 1993-05-25 1996-08-07 日本電気株式会社 マルチプロセッサシステムのプログラムデバッグ方法
JPH07253907A (ja) * 1994-03-14 1995-10-03 Fujitsu Ltd 自己デバッグ機能付き情報処理装置
JPH08272644A (ja) * 1995-04-03 1996-10-18 Toshiba Corp 分散処理装置で実行されるプログラムのデバッグ方法
JP2783275B2 (ja) 1995-04-28 1998-08-06 日本電気株式会社 分散並列処理プログラムデバッグ方式
JPH09244919A (ja) 1996-03-14 1997-09-19 Oki Electric Ind Co Ltd マルチcpuにおけるテストプログラムのデバッガ
JPH10187486A (ja) * 1996-12-27 1998-07-21 Fujitsu Ltd マルチプロセッサシステムのプログラムデバッグ方法
US5961628A (en) * 1997-01-28 1999-10-05 Samsung Electronics Co., Ltd. Load and store unit for a vector processor
JPH1139190A (ja) 1997-07-22 1999-02-12 Fujitsu Ltd 並列処理プログラムのデバッグシステム、及びそのデバッグ方法
JPH11184736A (ja) * 1997-12-19 1999-07-09 Nec Corp プロセッサ情報収集装置およびそのプログラム記録媒体
JP2000099366A (ja) * 1998-09-21 2000-04-07 Fujitsu Ltd 演算処理装置および演算処理装置のデバッグ方法
US6384457B2 (en) * 1999-05-03 2002-05-07 Intel Corporation Asymmetric MOSFET devices
US6412106B1 (en) * 1999-06-16 2002-06-25 Intervoice Limited Partnership Graphical system and method for debugging computer programs
US6748403B1 (en) * 2000-01-13 2004-06-08 Palmsource, Inc. Method and apparatus for preserving changes to data
US6826717B1 (en) * 2000-06-12 2004-11-30 Altera Corporation Synchronization of hardware and software debuggers
JP2003203061A (ja) * 2002-01-08 2003-07-18 Mitsubishi Heavy Ind Ltd 並列計算機システムおよび並列計算機システムにおける計算ノードの選択用プログラム
US8108656B2 (en) * 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
JP2004164113A (ja) * 2002-11-11 2004-06-10 Nec Micro Systems Ltd マルチcpuのリセット回路およびリセット方法
JP2004164367A (ja) * 2002-11-14 2004-06-10 Renesas Technology Corp マルチプロセッサシステム
US7721265B1 (en) * 2003-11-10 2010-05-18 Cisco Technology, Inc. Source code debugging method and apparatus for use in script testing environment
US7257571B2 (en) * 2004-01-26 2007-08-14 Microsoft Corporation Automatic query clustering
US20050183066A1 (en) * 2004-02-17 2005-08-18 Jabori Monji G. Correlating debugger
US7690001B2 (en) * 2005-04-29 2010-03-30 Sap Ag System and method for a management model event system

Also Published As

Publication number Publication date
JP5163120B2 (ja) 2013-03-13
EP1901168A1 (en) 2008-03-19
WO2006137223A1 (ja) 2006-12-28
US20090235233A1 (en) 2009-09-17
EP1901168A4 (en) 2012-04-11
CN101208667B (zh) 2012-01-11
CN101208667A (zh) 2008-06-25
KR20080015110A (ko) 2008-02-18
US8589879B2 (en) 2013-11-19

Similar Documents

Publication Publication Date Title
JP5163120B2 (ja) デバッグシステム、デバッグ方法、およびプログラム
JP6086230B2 (ja) 中央演算装置、情報処理装置、および仮想コア内レジスタ値取得方法
JP5405320B2 (ja) 仮想計算機制御装置、仮想計算機制御方法及び仮想計算機制御プログラム
US8583960B2 (en) Processor device and program
US20120304184A1 (en) Multi-core processor system, computer product, and control method
JP5277961B2 (ja) 情報処理装置及びその故障隠蔽方法
JP2007334403A (ja) 計算機システム障害対応方式及び計算機システム障害対応方法
JP5716830B2 (ja) 情報処理装置及び方法、プログラム
JP4787551B2 (ja) デバッグシステム、デバッグ方法およびプログラム
KR102053849B1 (ko) 항공기 시스템 및 그것의 제어 방법
US20140040670A1 (en) Information processing device and processing method for information processing device
US7673125B2 (en) Resetting multiple cells within a partition of a multiple partition computer system
JP2001236237A (ja) マルチos構成方法
JP2006252429A (ja) コンピュータシステム、コンピュータシステムの診断方法およびコンピュータシステムの制御プログラム
JP4633553B2 (ja) デバッグシステム、デバッグ方法およびプログラム
JP2006039763A (ja) ゲストosデバッグ支援方法及び仮想計算機マネージャ
CN101311909A (zh) 诊断系统异样的方法
JP2008146148A (ja) 計算機システム
CN108415788B (zh) 用于对无响应处理电路作出响应的数据处理设备和方法
JP2009276985A (ja) 半導体集積回路装置
JP2009223455A (ja) マルチプロセッサシステム
JP4872934B2 (ja) コンピュータシステム、クライアントコンピュータ、os終了方法およびos終了プログラム
JP2000276364A (ja) 障害復旧方法、中央処理装置及び中央処理システム
JP5367556B2 (ja) デバッグ支援方法
JPH02122335A (ja) Ras回路の試験方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090415

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120228

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120420

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120710

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120925

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20121002

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121203

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

Free format text: PAYMENT UNTIL: 20151228

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5163120

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees