JP5367556B2 - デバッグ支援方法 - Google Patents

デバッグ支援方法 Download PDF

Info

Publication number
JP5367556B2
JP5367556B2 JP2009291746A JP2009291746A JP5367556B2 JP 5367556 B2 JP5367556 B2 JP 5367556B2 JP 2009291746 A JP2009291746 A JP 2009291746A JP 2009291746 A JP2009291746 A JP 2009291746A JP 5367556 B2 JP5367556 B2 JP 5367556B2
Authority
JP
Japan
Prior art keywords
virtual
application program
program data
program
data
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
JP2009291746A
Other languages
English (en)
Other versions
JP2011134033A (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2009291746A priority Critical patent/JP5367556B2/ja
Publication of JP2011134033A publication Critical patent/JP2011134033A/ja
Application granted granted Critical
Publication of JP5367556B2 publication Critical patent/JP5367556B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

この発明は、CPUを複数個使用した際に発生する応用プログラムの障害を容易にデバッグすることができるデバッグ支援方法に関するものである。
従来のデバッグ支援方法は、CPUが複数個になった場合の動作が複雑になるため障害が発生した場合にその原因を追及するために多くの時間を費やしている(例えば、特許文献1参照)。
特開2006−39763号公報
従来のデバッグ支援方法は、CPUが複数個になった場合、動作が複雑となり障害の発生原因、障害にいたるロジックが見つけにくいという問題点があった。
この発明は上記のような課題を解決するためになされたものであり、CPUの数が増えたことにより発生する障害の原因を容易にデバッグすることができるデバッグ支援方法を提供することを目的とする。
この発明は、同一の応用プログラムおよび同一のOSを搭載した第1および第2の仮想環境で、第1の仮想環境は1個のCPUにて応用プログラムが実行され応用プログラムの第1のプログラムデータを作成し、第2の仮想環境は複数個のCPUにて応用プログラムが実行され応用プログラムの第2のプログラムデータを作成し、第3の仮想環境は第1および第2の仮想環境上の第1および第2のプログラムデータを比較して差異を検出し、
上記第1および第2の仮想環境は上記応用プログラムの実行に関するデータをトレースしてトレースデータをそれぞれ作成し、
上記第3の仮想環境は上記第1および第2のプログラムデータを比較して差異を検出すると、上記第1および第2の仮想環境にトレース停止命令を送信し、
上記第1および第2の仮想環境は、上記トレース停止命令を受信するとトレースを停止するものである。
また、この発明は、同一の応用プログラムおよび同一のOSを搭載した第1および第2の仮想環境で、上記第1の仮想環境は1個のCPUにて上記応用プログラムが実行され上記応用プログラムの第1のプログラムデータを作成し、上記第2の仮想環境は複数個のCPUにて上記応用プログラムが実行され上記応用プログラムの第2のプログラムデータを作成し、第3の仮想環境は上記第1および第2の仮想環境上の上記第1および第2のプログラムデータを比較して差異を検出し、
上記第1および第2の仮想環境は第1および第2のデバッガをそれぞれ有し、上記第3の仮想環境が上記第1および第2のプログラムデータを比較して差異を検出すると、上記第1および第2の仮想環境にOS停止命令を送信し、
上記第1および第2の仮想環境は、上記OS停止命令を受信すると第1および第2のデバッガを起動するものである。
この発明のデバッグ支援方法は、上記のように行われているため、
CPUを複数個使用した際に発生する応用プログラムの障害を容易にデバッグすることができる。
この発明の実施の形態1のデバッグ支援方法に用いられるシステムの構成を示す図である。 図1に示したデバッグ支援方法の動作を説明するためのフローチャートである。 1個のCPUにて処理を行う際の動作を示したフローチャートである。 2個のCPUにて処理を行う際の動作を示したフローチャートである。 この発明の実施の形態2のデバッグ支援方法に用いられるシステムの構成を示す図である。 この発明の実施の形態3のデバッグ支援方法に用いられるシステムの構成を示す図である。 この発明の実施の形態4のデバッグ支援方法に用いられるシステムの構成を示す図である。 図5に示したデバッグ支援方法の動作を説明するためのフローチャートである。 この発明の実施の形態5のデバッグ支援方法に用いられるシステムの構成を示す図である。 図7に示したデバッグ支援方法の動作を説明するためのフローチャートである。
実施の形態1.
以下、本願発明の実施の形態について説明する。図1はこの発明の実施の形態1におけるデバッグ支援方法に用いられるシステムの構成を示す図、図2は図1に示したデバッグ支援方法の動作を説明するためのフローチャート、図3は1個のCPUにて処理を行う際の動作を示したフローチャート、図4は2個のCPUにて処理を行う際の動作を示したフローチャートである。図において、第1の仮想環境としての第1の仮想OS110と第2の仮想環境としての第2の仮想OS120とは同一の応用プログラムと同一のOSとを有するものである。第1の仮想OS110と第2の仮想OS120との異なる点は、第1の仮想OS110は第1のCPU141の1個のCPUのみにて処理されるのに対し、第2の仮想OS120は第2のCPU142および第3のCPU143の2個のCPUにて処理される点である。
そして、第1の仮想OS110には、第1の仮想OS110にて動作する応用プログラムの第1のプログラムデータ(共有メモリ)111と、応用プログラムの第1のプログラムコード112と、第1の仮想OS110にて実行された応用プログラムのデータ、例えば、応用プログラム内のプログラムデータが変更した時間のデータなどがトレースされトレースデータとして保存されるトレースデータ保持部113とを備えている。第2の仮想OS120には、第1の仮想OS110と同様に、第2の仮想OS120にて動作する応用プログラムの第2のプログラムデータ(共有メモリ)121と、応用プログラムの第2のプログラムコード122と、第2の仮想OS120にて実行された応用プログラムのデータがトレースされトレースデータとして保存されるトレースデータ保持部123とを備えている。
そして、第3の仮想OS130は、第1の仮想OS110の第1のプログラムデータ111および第2の仮想OS120の第2のプログラムデータ121をコピーするプログラムデータコピー部131と、プログラムデータコピー部131にコピーされた各プログラムデータを比較して差異を検出するプログラムデータ比較部132とを備えている。そして、第3の仮想OS130は第4のCPU144にて処理されている。
次に、上記のように構成された実施の形態1のデバッグ支援方法の動作について図2に基づいて説明する。説明に際して、まず、CPUの数による処理の差について説明する。第1の仮想OS110上では、図3に示すように、第1のCPU141のみが第1のプログラムデータ(共有メモリ)111への書き込みを行うため、排他制御を取る必要がなく正常に動作する。これに対し、第2の仮想OS120上では、図4に示すように、複数の第2のCPU142および第3のCPU143が第2のプログラムデータ(共有メモリ)121への書き込みを行うため、第2のCPUが処理を行っている間に第3のCPUが処理を行う可能性があり、第2のCPU142および第3のCPU143間の排他制御がとれず誤った動作(バグ)が発生する可能性がある。よって、CPUの数が複数になると誤動作が発生する可能性がある。このデバッグを支援するために以下の動作を行う。
まず、第3の仮想OS130を起動する(図2のステップST201)。このように第3の仮想OS130を最初に起動するのは、プログラムデータコピー部131が第1の仮想OS110および第2の仮想OS120の第1および第2のプログラムデータ(共有メモリ)111、121をコピーする準備を行うためである。次に、第1の仮想OS110、第2の仮想OS120を起動する(図2のステップST202)。次に、第1の仮想OS110、第2の仮想OS120上で動作させる応用プログラムの第1および第2のプログラムコード111、121をそれぞれ実行し、応用プログラムの第1および第2のプログラムデータを作成する(図2のステップST203)。
次に、第1および第2のプログラムコード111、121の動作中は、あらかじめ決められた第1のOS141、第2のOS142か第3のOS143かで、第1および第2のプログラムコード111、121の特定の箇所を実行するごとに、該当応用プログラム部分の実行に関してデータをトレースして、トレースデータとして第1および第2のトレースデータ保持部113、123にそれぞれ記録する(図2のステップST204)。次に、第3の仮想OS130は第1の仮想OS110で動作する応用プログラムの第1のプログラムデータ111、第2の仮想OS120上で動作する応用プログラムの第2のプログラムデータ121をプログラムデータコピー部131に周期的にコピーする(図2のステップST205)。
次に、第3の仮想OSはプログラムデータ比較部132を用いてプログラムデータコピー部131によってコピーした第1の仮想OS110、第2の仮想OS120の各プログラムデータを比較する(図2のステップST206)。次に、第1の仮想OS110、第2の仮想OS120のプログラムデータ間で差異を検出した場合は、その内容をユーザに通知する(図2のステップST207)。
上記のように構成された実施の形態1によれば、同一の応用プログラム、同一のOSを有する仮想環境をCPU数の違い以外に差異のない状況で動作させることができ、この動作を実行している瞬間のプログラムデータを別の仮想環境が監視することにより、その差異が発生した瞬間を容易に識別することができる。よって、これに基づいてデバッグを支援することができる。また、第1の仮想OS、第2の仮想OS上で動作するトレースデータを保持しているため、その差異が検出された時点までトレースデータを比較することにより、CPUの数の差異によるOS、応用プログラムの動作差異を容易に明らかにすることができる。このように、CPUが複数個になった場合のみに発生する障害の原因調査が容易となる。
尚、上記実施の形態1では第2の仮想OSを2個のCPU上で動作させた場合のデバッグについて述べたが、図5に示すように第2の仮想OSに第5のCPU344を追加して、3個のCPUを用いて動作させた場合についても、また、それ以上の個数のCPUを用いて動作させたとしても、上記実施の形態1と同様にデバッグの支援を行うことができる。
また、上記実施の形態1ではプログラムデータとして共有メモリを対象とする場合のデバッグについて述べたが、これに限られることはなく、例えば、図6に示すように第1および第2のプログラムデータ111、121としてメッセージキュを対象とすることもできる。この場合、上記実施の形態1と同様にデバッグすることができるのはもちろんのこと、メッセージキュは複数のメッセージを送出する機能を有しており、そのメッセージの内容と、メッセージを送出しているCPUと、その送出時間とを特定できるため、CPU間の排他制御が取れずメッセージの送出順番に誤りがあった場合でも、その動作に対するデバッグが可能になる。
実施の形態2.
図7はこの発明の実施の形態2におけるデバッグ支援方法に用いられるシステムの構成を示す図、図8は図7に示したデバッグ支援方法の動作を説明するためのフローチャートである。上記実施の形態1では応用プログラムが動作する仮想OSがトレースデータをトレースし続ける場合について示したが、本実施の形態2においては、各仮想OS間の各プログラムデータに差異を検出した場合には、トレースデータの記録を停止し、容易にデバッグの支援を行うことができるものである。
図において、上記実施の形態1と同様の部分は同一符号を付して説明を省略する。第1の仮想OS110に配設されたトレース停止命令を受信するトレース停止命令受信部514と、第2の仮想OS120に配設されたトレース停止命令を受信するトレース停止命令受信部524と、第3の仮想OS130に配設されプログラムデータ比較部132にて第1の仮想OS110および第2の仮想OS120の各プログラムデータに差異があると検出されると、第1の仮想OS110の第1のトレース停止命令受信部514および第2の仮想OS120の第2のトレース停止命令受信部524にトレース停止命令を送信するトレース停止命令送信部533とを備える。
次に、上記のように構成された実施の形態2のデバッグ支援方法について図8に基づいて説明する。まず、上記実施の形態1と同様の動作を行い、第3の仮想OS130のプログラムデータ比較部132にてプログラムデータコピー部131によってコピーした第1の仮想OS110、第2の仮想OS120の各プログラムデータを比較して、第1の仮想OS110、第2の仮想OS120のプログラムデータ間で差異を検出した場合、第3の仮想OS130はトレース停止命令送信部533から第1の仮想OS110、第2の仮想OS120にトレース停止命令を送信する(図8のステップST606)。次に、第1の仮想OS110、第2の仮想OS120は第3の仮想OS130からのトレース停止命令を第1および第2のトレース停止命令受信部514、524で受信して、トレースを停止する(図8のステップST607)。
上記のように構成された実施の形態2によれば、上記実施の形態1と同様の効果を奏するのはもちろんのこと、第1の仮想OSと第2の仮想OSとの各プログラムデータ間で差異が検出された際に、第1の仮想OSおよび第2の仮想OSにおけるトレースデータの記録を停止するため、障害が発生したと想定される時点付近のトレースデータを、作業者が解析する際に容易に識別できる。
実施の形態3.
図9はこの発明の実施の形態3におけるデバッグ支援方法に用いられるシステムの構成を示す図、図10は図9に示したデバッグ支援方法の動作を説明するためのフローチャートである。上記実施の形態1では応用プログラムが動作する仮想OSがトレースデータをとり続ける場合について述べたが、本実施の形態3においては仮想OS間の各プログラムデータに差異が出た際に、仮想OSの動作を停止してデバッガを起動するものである。
図において、上記実施の形態1と同様の部分は同一符号を付して説明を省略する。第1の仮想OS110に配設されたOS停止命令を受信する第1のOS停止命令受信部714と、第1の仮想OS110に配設された第1のデバッガ部715と、第2の仮想OS130に配設されたOS停止命令を受信する第2のOS停止命令受信部724と、第2の仮想OS120に配設された第2のデバッガ部725と、第3の仮想OS130に配設されプログラムデータ比較部132にて第1の仮想OS110および第2の仮想OS120の各プログラムデータに差異があると検出されると、第1の仮想OS110の第1のOS停止命令受信部714および第2の仮想OS120の第2のOS停止命令受信部724にOS停止命令を送信するOS停止命令送信部733とを備える。
次に、上記のように構成された実施の形態3のデバッグ支援方法について図10に基づいて説明する。まず、上記実施の形態1と同様の動作を行い、第3の仮想OS130のプログラムデータ比較部132にてプログラムデータコピー部131によってコピーした第1の仮想OS110、第2の仮想OS120の各プログラムデータを比較して、第1の仮想OS110、第2の仮想OS120のプログラムデータ間で差異を検出した場合、第3の仮想OS130はOS停止命令送信部733から第1の仮想OS110、第2の仮想OS120にOS停止命令を送信する(図10のステップST806)。
次に、第1の仮想OS110、第2の仮想OS120は第3の仮想OS130からのOS停止命令を第1および第2のOS停止命令受信部714、724で受信した後、それぞれ第1および第2のデバッガ部715、725の各デバッガを起動する(図10のステップST807)。尚、第1の仮想OS110、第2の仮想OS120の停止命令が発生されると、自ずと、トレースデータの中断される。そして、このことにより、仮想OSおよび応用プログラムのデータを容易に確認することができる。また、デバッガが終了し、動作が再開されると、再び中断された時点から上記動作が繰り返され、トレースも再開される。
上記のように構成された実施の形態3によれば、上記実施の形態1と同様の効果を奏するのはもちろんのこと、第1の仮想OSと第2の仮想OSとの各プログラムデータ間で差異が検出された際に、第1の仮想OSおよび第2の仮想OSにおいてデバッガすることができる。そして、このデバッガを起動することで障害が発生したと想定される時点における仮想OSならびに応用プログラムのデータを確認することができる。
110 第1の仮想OS、111 第1のプログラムデータ、
112 第1のプログラムコード部、113 第1のトレースデータ保持部、
120 第2の仮想OS、121 第2のプログラムデータ、
132 第2のプログラムコード部、123 第2のトレースデータ保持部、
130 第3の仮想OS、131 プログラムデータコピー部、
132 プログラムデータ比較部、141 第1のCPU、142 第2のCPU、
143 第3のCPU、144 第4のCPU、344 第5のCPU、
514 第1のトレース停止命令受信部、524 第2のトレース停止命令受信部、
533 トレース停止命令送信部、714 第1のOS停止命令受信部、
715 第1のデバッガ部、724 第2のOS停止命令受信部、
725 第2のデバッガ部、733 OS停止命令送信部。

Claims (3)

  1. 同一の応用プログラムおよび同一のOSを搭載した第1および第2の仮想環境で、上記第1の仮想環境は1個のCPUにて上記応用プログラムが実行され上記応用プログラムの第1のプログラムデータを作成し、上記第2の仮想環境は複数個のCPUにて上記応用プログラムが実行され上記応用プログラムの第2のプログラムデータを作成し、第3の仮想環境は上記第1および第2の仮想環境上の上記第1および第2のプログラムデータを比較して差異を検出し、
    上記第1および第2の仮想環境は上記応用プログラムの実行に関するデータをトレースしてトレースデータをそれぞれ作成し、
    上記第3の仮想環境は上記第1および第2のプログラムデータを比較して差異を検出すると、上記第1および第2の仮想環境にトレース停止命令を送信し、
    上記第1および第2の仮想環境は、上記トレース停止命令を受信するとトレースを停止するデバッグ支援方法。
  2. 同一の応用プログラムおよび同一のOSを搭載した第1および第2の仮想環境で、上記第1の仮想環境は1個のCPUにて上記応用プログラムが実行され上記応用プログラムの第1のプログラムデータを作成し、上記第2の仮想環境は複数個のCPUにて上記応用プログラムが実行され上記応用プログラムの第2のプログラムデータを作成し、第3の仮想環境は上記第1および第2の仮想環境上の上記第1および第2のプログラムデータを比較して差異を検出し、
    上記第1および第2の仮想環境は第1および第2のデバッガをそれぞれ有し、上記第3の仮想環境が上記第1および第2のプログラムデータを比較して差異を検出すると、上記第1および第2の仮想環境にOS停止命令を送信し、
    上記第1および第2の仮想環境は、上記OS停止命令を受信すると第1および第2のデバッガを起動するデバッグ支援方法。
  3. 上記第1および第2の仮想環境のプログラムデータは、メッセージキュであることを特徴とする請求項1または請求項2に記載のデバッグ支援方法。
JP2009291746A 2009-12-24 2009-12-24 デバッグ支援方法 Expired - Fee Related JP5367556B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009291746A JP5367556B2 (ja) 2009-12-24 2009-12-24 デバッグ支援方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009291746A JP5367556B2 (ja) 2009-12-24 2009-12-24 デバッグ支援方法

Publications (2)

Publication Number Publication Date
JP2011134033A JP2011134033A (ja) 2011-07-07
JP5367556B2 true JP5367556B2 (ja) 2013-12-11

Family

ID=44346708

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009291746A Expired - Fee Related JP5367556B2 (ja) 2009-12-24 2009-12-24 デバッグ支援方法

Country Status (1)

Country Link
JP (1) JP5367556B2 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07271631A (ja) * 1994-03-31 1995-10-20 Fujitsu Ltd デバッガ
JP4457581B2 (ja) * 2003-05-28 2010-04-28 日本電気株式会社 耐障害システム、プログラム並列実行方法、耐障害システムの障害検出装置およびプログラム

Also Published As

Publication number Publication date
JP2011134033A (ja) 2011-07-07

Similar Documents

Publication Publication Date Title
US7992042B2 (en) Debug support device, and program for directing computer to perform debugging method
JP4388518B2 (ja) スレッドデバッグ装置、スレッドデバッグ方法及びプログラム
US8677321B2 (en) User-space probe based debugging
JP2014507720A (ja) デバッグ例外生成の制御
CN104932972B (zh) 一种反动态调试应用程序的方法及装置
US20090259899A1 (en) Method and apparatus for automatic scan completion in the event of a system checkstop
CN110209615A (zh) 执行不可屏蔽中断的方法和装置
JP5367556B2 (ja) デバッグ支援方法
JP5641181B2 (ja) 二重化処理装置
JP6318214B2 (ja) 汎用マイクロプロセッサを用いたplcのデバッグ方法
JP5163120B2 (ja) デバッグシステム、デバッグ方法、およびプログラム
JPWO2009113273A1 (ja) プログラム実行装置およびその制御方法
JP2011018187A (ja) 試験方法、試験プログラム、試験装置、及び試験システム
JP4633553B2 (ja) デバッグシステム、デバッグ方法およびプログラム
JP2010061258A (ja) デュプレックスプロセッサシステム及びプロセッサ二重化方法
JP2009169515A (ja) コンピュータシステム及びシステム回復装置
JP4872934B2 (ja) コンピュータシステム、クライアントコンピュータ、os終了方法およびos終了プログラム
JP2018206233A (ja) 情報処理装置、プロセス切り替え方法及びプログラム
JP2007213396A (ja) デバッグシステム、オペレーションシステム、デバッグ方法、プログラム
JP2024158473A (ja) 情報処理システム、制御プログラム、及び例外プログラム
JP2017199180A (ja) 画像処理装置
JP2005196351A (ja) コンピュータシステムおよびその保守方法
JPWO2017017829A1 (ja) プログラム実行装置及びプログラム実行システム及びプログラム実行方法
JP2006185360A (ja) プログラムデバッグ装置、プログラムデバッグ方法及びプログラム
JP2006277429A (ja) バイパス経路を利用した命令の動的変更方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111201

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130725

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130806

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130823

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130911

R150 Certificate of patent or registration of utility model

Ref document number: 5367556

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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