JP2774770B2 - デバッグ方式 - Google Patents

デバッグ方式

Info

Publication number
JP2774770B2
JP2774770B2 JP6105545A JP10554594A JP2774770B2 JP 2774770 B2 JP2774770 B2 JP 2774770B2 JP 6105545 A JP6105545 A JP 6105545A JP 10554594 A JP10554594 A JP 10554594A JP 2774770 B2 JP2774770 B2 JP 2774770B2
Authority
JP
Japan
Prior art keywords
program
failure
checkpoint
restart
debugging
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 - Lifetime
Application number
JP6105545A
Other languages
English (en)
Other versions
JPH07311693A (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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP6105545A priority Critical patent/JP2774770B2/ja
Publication of JPH07311693A publication Critical patent/JPH07311693A/ja
Priority to US09/012,240 priority patent/US6031991A/en
Application granted granted Critical
Publication of JP2774770B2 publication Critical patent/JP2774770B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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
    • 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

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、例えばコンピュータシ
ステムにおけるプログラムのデバッグに適用して好適な
デバッグ方式に係り、特にマルチプロセッサシステムで
のタイミングを原因とした障害等、従来再現させること
が困難であった障害についての解析を容易に行うことの
できるデバッグ方式に関する。
【0002】
【従来の技術】近年、プログラムのデバッグ方法につい
ては、ブレークポイントの設定、シングルステップでの
実行、及びシンボリックデバッグ等、数々の手法が開発
されており、一般的な手法は確立されたといえる。
【0003】ただし、それはシングルプロセッサシステ
ムにおけるデバッグ手法についてのことであり、マルチ
プロセッサシステムにおける並列プログラムのデバッグ
手法は未だ模索段階であるといえる。
【0004】特に、並列処理プログラムにおいては、複
数のプロセッサ上で処理が同時に進行するため、何等か
の障害が発生した場合に、その処理を再現させてみよう
としても、微妙なタイミングのずれにより同じ障害が再
現できないといったことがしばしばあり、デバッグをま
すます困難なものにしている。
【0005】例えば、図6に示すように、プロセッサ1
1a〜11cの3つのプロセッサを有するマルチプロセ
ッサシステムの配下でプログラムが並列に実行されてい
るような状況において、プログラム中の排他処理13a
〜13cにバグが存在するために排他制御が正常に機能
せず、相互の実行タイミングによって障害を発生させて
しまうような場合が該当し、このような場合、複数プロ
セッサ11a〜11c配下で同期を取りながらデバッガ
を操作しなければ障害を再現させることができず、デバ
ッグの効率を著しく低下させていた。また、場合によっ
ては再現が不可能であり、デバッグを行うことができな
かった。
【0006】
【発明が解決しようとする課題】上述したように、従来
のデバッグ方式においては、例えば複数のプロセッサ上
で並列処理されるプログラムにてタイミングを原因とし
た障害が発生したような場合に、そのデバッグが非常に
困難であり、あるいはその障害を再現させることができ
ないためにデバッグが不可能であるといった問題があっ
た。
【0007】本発明は、上記実情に鑑みてなされたもの
であり、例えばマルチプロセッサシステム上で並列処理
されるプログラムにおいて障害が発生したような場合
に、その障害の再現を容易に実現することによりデバッ
グの効率を飛躍的に向上させることのできるデバッグ方
式を提供することを目的とする。
【0008】
【課題を解決するための手段】この発明は、チェックポ
イントを取得しながらプログラムを実行するコンピュー
タシステムにおいて、プログラムの障害発生を検出する
手段と、プログラムの障害発生が検出された際に、プロ
グラムをデバッグモードに移行してチェックポイントか
らリスタートさせる手段と、リスタートさせたプログラ
ムが上記障害を発生させずに次のチェックポイント取得
箇所に達した場合に、そのチェックポイントを取得せず
に再び前のチェックポイントからリスタートさせる手段
を具備し、上記障害が再現されるまでリスタートを繰り
返すことを特徴とする。
【0009】
【0010】また、本発明は、プログラムをリスタート
させた際に実行履歴の採取を開始して、リスタートさせ
たプログラムが上記障害を発生させずに次のチェックポ
イント取得箇所に達した場合に採取された実行履歴を破
棄する手段を具備し、上記障害が再現された際の実行履
歴のみを記録することを特徴とする。
【0011】また、本発明は、複数のプロセッサ上で並
列に実行されているプログラムのいずれかに障害が発生
した際に、すべてのプロセッサが同期して上記チェック
ポイントからのリスタートを実施することを特徴とす
る。
【0012】
【作用】本発明の構成によれば、例えばマルチプロセッ
サシステム上でプログラムが並列に実行されているよう
な状況において、実行中のプログラムのいずれかが何等
かのタイミングを原因とした障害を発生させた場合に、
まず検出手段がその障害を検出する。
【0013】障害が検出されると、リスタート手段が、
全プロセッサ配下で実行されているプログラムをデバッ
グモードに移行し、障害発生の直前に取得したチェック
ポイントからの再実行を実施する。デバッグモードに移
行されたプログラムは、実行履歴を採取されながら処理
を進めていくことになり、再度同じ障害が発生した場合
にはその時点で処理を終了する。
【0014】一方、微妙なタイミングのずれ等により障
害が再現されず、次のチェックポイント取得箇所まで到
達してしまった場合には、ここでのチェックポイントは
取得せず、また、これまでに採取した実行履歴を廃棄し
て再度障害発生の直前に取得したチェックポイントから
の再実行を実施する。即ち、障害が再現されるまで、こ
の処理が繰り返されることになる。
【0015】これにより、従来、再現の困難であった障
害に対しても容易に実現可能となり、また、必要最小限
の障害解析用のデータを採取することになるため、記憶
媒体の有効利用が図られるとともにデバッグの効率が飛
躍的に向上することになる。
【0016】
【実施例】以下図面を参照して本発明の一実施例を説明
する。図1は本発明の実施例に係るデバッグ方式の構成
を示す図である。いま、プロセッサ1は、プログラム2
を実行しており、またこの際プロセッサ1は、所定の間
隔でリスタート用のチェックポイント3を取得してい
る。もし、プログラム2に何等かの障害が発生すると、
プロセッサ1はトラップを発生させる。
【0017】プログラムエラー発生検出部4は、このプ
ロセッサ1の発生させるトラップを検出し、また、プロ
グラムデバッグモードリスタート部5は、プログラム2
をデバッグモードに移行させると共にチェックポイント
3に取得された情報をもとに障害発生の直前に取得され
た時点からリスタートさせる。
【0018】なお、プログラム2中にプログラムの実行
状態が正しく制御されているかどうかを検査するコード
(通常ASSERTと呼ばれる)を埋め込んでおき、もしプロ
グラム2の実行状態が正しく制御されていない場合に、
プログラム2が自らトラップを発生し、プログラムエラ
ー発生検出部4に異常状態の発生を検出させて、上述の
処理へ移行させる方法も有効である。
【0019】また、プログラムデバッグモードリスター
ト部5が、プログラム2をデバッグモードに移行させた
後は、プログラム2はデバッガの制御下で実行されるこ
とになり、例えば、プログラム2がステップ実行される
ようになったり、実行履歴を採取されながら実行される
ようになる。
【0020】ここで、図2及び図3を参照して同実施例
に係るデバッグ方式の動作を説明する。図2及び図3は
同実施例に係るデバッグ方式の動作を説明するためのフ
ローチャートである。
【0021】実行中のプログラム2に障害が発生する
と、まず、プログラムエラー発生検出部4がその障害発
生を検出する(図2のステップA1)。そして、プログ
ラムデバッグモードリスタート部5が、プログラム2を
デバッグモードに移行させ(図2のステップA2)、か
つ、プログラム2の実行ステップをチェックポイント3
に格納された情報から障害発生の直前に取得したチェッ
クポイントに戻し(図2のステップA3)、さらに、デ
バッガ配下でのリスタートを実施する(図2のステップ
A4)。
【0022】デバッグモードに移行され、障害発生の直
前に取得したチェックポイントからリスタートされたプ
ログラムは、実行履歴を採取されながら処理が進められ
(図3のステップB1)、障害が発生した時点でトラッ
プ(割り込み)に入り、実行履歴の退避等、デバッグモ
ードでのトラップ発生時の処理(図3のステップB5)
を実施した後に終了する。
【0023】一方、障害が再現されずに次のチェックポ
イント取得箇所に到達してしまった場合には(図3のス
テップB2のY)、これまでに採取した実行履歴を廃棄
して(図3のステップB3)、再度障害発生の直前に取
得したチェックポイントからのリスタートを実施する
(図3のステップB4)。
【0024】これにより、障害が再現されるまで、上記
処理が繰り返されることとなり、また、障害が再現され
た際の実行履歴のみを採取することが可能となる。図4
及び図5は、同実施例に係るデバッグ方式を適用したシ
ステムの流れを示す概念図である。
【0025】図4に示すように、プロセッサ11a〜1
1cの3つのプロセッサを有するマルチプロセッサシス
テムの配下でプログラムが並列に実行されているような
状況において、プログラム中の排他処理13a〜13c
にバグが存在するために排他制御が正常に機能せず、相
互の実行タイミングによって障害を発生させてしまった
ような場合、プロセッサ11a〜11cで実行中の全プ
ログラムはデバッガ配下に移行され、再度チェックポイ
ント12からリスタートされる。このプログラムは障害
が再現されるまでリスタートが繰り返される。
【0026】次に、図5を参照してシステムの流れを説
明する。プログラム2は、所定の間隔でチェックポイン
トを取得されながら実行されていく(図5の(1))。
ここで、何等かの原因によりプログラム2に障害が発生
すると(図5の(2))、プログラムエラー発生検出部
4により障害発生が検出され、かつ、プログラムデバッ
グモードリスタート部5によってデバッグモードに移行
され(図5の(3))、さらに、障害発生の直前に取得
したチェックポイントからリスタートされる(図5の
(4))。
【0027】デバッグモードに移行され、障害発生の直
前に取得したチェックポイントからリスタートされたプ
ログラム2は、実行履歴を採取されながら処理が進めら
れるが、障害が再現されずに次のチェックポイント取得
箇所に到達してしまった場合には(図5の(5))、こ
れまでに採取した実行履歴を廃棄し(図5の(6))、
再度、障害発生の直前に取得したチェックポイントから
のリスタートが実施される(図5の(7))。
【0028】この処理は障害が再現されるまで繰り返さ
れ、障害が発生した時点で(図5の(9))実行履歴の
退避等を行って終了する。これにより、従来再現の困難
であった障害のデバッグを効率良く実施することが可能
となる。
【0029】
【発明の効果】詳述したように、本発明によれば、従
来、再現の困難であった障害に対しても容易に実現可能
となり、また、必要最小限の障害解析用のデータを取り
扱うことになるため、記憶媒体の有効利用が図られると
ともにデバッグの効率が飛躍的に向上させることが可能
となる。
【図面の簡単な説明】
【図1】本発明の実施例に係るデバッグ方式の構成を示
す図。
【図2】同実施例に係るデバッグ方式の動作を説明する
ためのフローチャート。
【図3】同実施例に係るデバッグ方式の動作を説明する
ためのフローチャート。
【図4】同実施例に係るデバッグ方式を適用したシステ
ムの流れを示す概念図。
【図5】同実施例に係るデバッグ方式を適用したシステ
ムの流れを示す概念図。
【図6】従来のデバッグ方式を適用したシステムの流れ
を示す概念図。
【符号の説明】
1…プロセッサ、2…プログラム、3…チェックポイン
ト、4…プログラムエラー発生検出部、5…プログラム
デバッグモードリスタート部、6…デバッグ方式、11
a,11b,11c…プロセッサ、12…チェックポイ
ント、13a,13b,13c…排他処理、14…エラ
ー発生点。

Claims (3)

    (57)【特許請求の範囲】
  1. 【請求項1】 チェックポイントを取得しながらプログ
    ラムを実行するコンピュータシステムにおいて、 プログラムの障害発生を検出する手段と、 プログラムの障害発生が検出された際に、プログラムを
    デバッグモードに移行してチェックポイントからリスタ
    ートさせる手段と、 リスタートさせたプログラムが上記障害を発生させずに
    次のチェックポイント取得箇所に達した場合に、そのチ
    ェックポイントを取得せずに再び前のチェックポイント
    からリスタートさせる手段とを具備し、 上記障害が再現されるまでリスタートを繰り返すことを
    特徴とするデバッグ方式。
  2. 【請求項2】 プログラムをリスタートさせた際に実行
    履歴の採取を開始して、リスタートさせたプログラムが
    上記障害を発生させずに次のチェックポイント取得箇所
    に達した場合に採取された実行履歴を破棄する手段を具
    備し、上記障害が再現された際の実行履歴のみを記録す
    ることを特徴とする請求項記載のデバッグ方式。
  3. 【請求項3】 複数のプロセッサ上で並列に実行されて
    いるプログラムのいずれかに障害が発生した際に、すべ
    てのプロセッサが同期して上記チェックポイントからの
    リスタートを実施する請求項1または請求項2記載の
    バッグ方式。
JP6105545A 1994-05-19 1994-05-19 デバッグ方式 Expired - Lifetime JP2774770B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP6105545A JP2774770B2 (ja) 1994-05-19 1994-05-19 デバッグ方式
US09/012,240 US6031991A (en) 1994-05-19 1998-01-23 Debug system and method for reproducing an error occurring in parallel-executed programs

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6105545A JP2774770B2 (ja) 1994-05-19 1994-05-19 デバッグ方式

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP10016891A Division JPH10198578A (ja) 1998-01-29 1998-01-29 デバッグ方式およびデバッグ方法

Publications (2)

Publication Number Publication Date
JPH07311693A JPH07311693A (ja) 1995-11-28
JP2774770B2 true JP2774770B2 (ja) 1998-07-09

Family

ID=14410562

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6105545A Expired - Lifetime JP2774770B2 (ja) 1994-05-19 1994-05-19 デバッグ方式

Country Status (2)

Country Link
US (1) US6031991A (ja)
JP (1) JP2774770B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6438712B1 (en) * 1998-10-09 2002-08-20 Oak Technology, Inc. Quick identification of defect-uncovering files
US6336194B1 (en) 1998-10-29 2002-01-01 International Business Machines Corporation Program products for repositioning an input/output device without knowledge of current positioning of the device
US6343335B1 (en) * 1998-10-29 2002-01-29 International Business Machines Corporation System for repositioning an I/O device to a predetermined position to retry a program without knowledge of which part of the program caused the retry
US6339799B1 (en) * 1998-10-29 2002-01-15 International Business Machines Corporation Method of repositioning an I/O device to a predetermined position to retry a program without knowledge of which part of the program caused the retry
US6857084B1 (en) * 2001-08-06 2005-02-15 Lsi Logic Corporation Multiprocessor system and method for simultaneously placing all processors into debug mode
IL151251A0 (en) * 2002-08-14 2003-04-10 Elta Systems Ltd Parallel processing platform with synchronous system halt-resume
US7546604B2 (en) * 2003-11-26 2009-06-09 International Business Machines Corporation Program reactivation using triggering
KR101139610B1 (ko) * 2010-07-29 2012-04-27 한국수력원자력 주식회사 데이터베이스화된 공유메모리를 이용한 공학적 분석용 프로그램들간의 동기화된 연계 방법 및 시스템
US9858151B1 (en) 2016-10-03 2018-01-02 International Business Machines Corporation Replaying processing of a restarted application
CN114185324B (zh) * 2021-10-25 2024-04-02 华能澜沧江水电股份有限公司 自动发电控制程序的异常点检测方法、装置及计算机设备

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58201152A (ja) * 1982-05-19 1983-11-22 Hitachi Ltd 情報自動収得方式
FR2602891B1 (fr) * 1986-08-18 1990-12-07 Nec Corp Systeme de correction d'erreur d'un systeme a multiprocesseurs pour corriger une erreur dans un processeur en mettant le processeur en condition de controle apres achevement du redemarrage du microprogramme a partir d'un point de reprise
US4912707A (en) * 1988-08-23 1990-03-27 International Business Machines Corporation Checkpoint retry mechanism
JPH02197954A (ja) * 1989-01-27 1990-08-06 Nec Corp 並列実行再現方式
US5124989A (en) * 1990-01-08 1992-06-23 Microsoft Corporation Method of debugging a computer program
US5170464A (en) * 1990-01-26 1992-12-08 International Business Machines Corporation Method for rolling back an expert system
US5410685A (en) * 1990-06-12 1995-04-25 Regents Of The University Of Michigan Non-intrinsive method and system for recovering the state of a computer system and non-intrusive debugging method and system utilizing same
US5321698A (en) * 1991-12-27 1994-06-14 Amdahl Corporation Method and apparatus for providing retry coverage in multi-process computer environment
JPH06222952A (ja) * 1993-01-27 1994-08-12 Toshiba Corp デバッグ支援装置

Also Published As

Publication number Publication date
JPH07311693A (ja) 1995-11-28
US6031991A (en) 2000-02-29

Similar Documents

Publication Publication Date Title
JPH0738161B2 (ja) 誤り回復装置
JPH09258995A (ja) 計算機システム
JPH06208486A (ja) ソフトウェア例外条件に対する選択的データ捕獲方法
JP2774770B2 (ja) デバッグ方式
CN102810073B (zh) 数据后台实时监控处理方法
JPH06222952A (ja) デバッグ支援装置
JPH01180645A (ja) 保守診断機構の自動検証方式
JPH0950424A (ja) ダンプ採取装置およびダンプ採取方法
US7114097B2 (en) Autonomic method to resume multi-threaded preload imaging process
JPH09212385A (ja) 並列プログラムデバッグ装置
JPH02294739A (ja) 障害検出方式
JPH10198578A (ja) デバッグ方式およびデバッグ方法
JP2998793B2 (ja) 情報処理装置の試験方式
JP2004021936A (ja) 情報処理装置の障害処理方法および情報処理装置
KR101997084B1 (ko) 인터럽트 요청의 재현시점 결정 방법 및 이를 이용하는 시스템 및 프로그램
JPH103403A (ja) 計算機システムおよびデバッグ方法
JPS58201152A (ja) 情報自動収得方式
JP2979553B2 (ja) 障害診断方式
JP2658982B2 (ja) 特定命令実行検出方式
JPH0553852A (ja) テスト装置
JPH02207347A (ja) ソフトウェア障害検出方法
Yeh et al. Improving Fault Tolerance through Crash Recovery
JP2695552B2 (ja) 障害処理方法
JP2002182944A (ja) 情報処理装置試験方式
JP2004046310A (ja) 障害修復プログラム適用方法及びその実施装置並びにその処理プログラム