JPH07311693A - デバッグ方式 - Google Patents

デバッグ方式

Info

Publication number
JPH07311693A
JPH07311693A JP6105545A JP10554594A JPH07311693A JP H07311693 A JPH07311693 A JP H07311693A JP 6105545 A JP6105545 A JP 6105545A JP 10554594 A JP10554594 A JP 10554594A JP H07311693 A JPH07311693 A JP H07311693A
Authority
JP
Japan
Prior art keywords
program
failure
checkpoint
debugging
occurrence
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
JP6105545A
Other languages
English (en)
Other versions
JP2774770B2 (ja
Inventor
Hideaki Hirayama
秀昭 平山
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)

Abstract

(57)【要約】 【目的】障害の再現を容易に実現することによりデバッ
グの効率を飛躍的に向上させることのできるデバッグ方
式を提供する。 【構成】チェックポイント3を取得しながらプログラム
を実行するコンピュータシステムにおいて、プログラム
2の障害発生を検出するプログラムエラー発生検出部4
と、プログラム2の障害発生が検出された際に、プログ
ラム2をデバッグモードに移行してチェックポイントか
らリスタートさせるプログラムデバッグモードリスター
ト部5を具備してなることを特徴とする。

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 (4)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013533564A (ja) * 2010-07-29 2013-08-22 コリア ハイドロ アンド ニュークリア パワー カンパニー リミティッド データベース化された共有メモリを利用した工学的分析用プログラム間の同期化された連係方法及びシステム

Families Citing this family (9)

* 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
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
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
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
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 华能澜沧江水电股份有限公司 自动发电控制程序的异常点检测方法、装置及计算机设备

Citations (2)

* 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 情報自動収得方式
JPH02197954A (ja) * 1989-01-27 1990-08-06 Nec Corp 並列実行再現方式

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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 デバッグ支援装置

Patent Citations (2)

* 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 情報自動収得方式
JPH02197954A (ja) * 1989-01-27 1990-08-06 Nec Corp 並列実行再現方式

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013533564A (ja) * 2010-07-29 2013-08-22 コリア ハイドロ アンド ニュークリア パワー カンパニー リミティッド データベース化された共有メモリを利用した工学的分析用プログラム間の同期化された連係方法及びシステム

Also Published As

Publication number Publication date
JP2774770B2 (ja) 1998-07-09
US6031991A (en) 2000-02-29

Similar Documents

Publication Publication Date Title
JPH0738161B2 (ja) 誤り回復装置
JPH01180645A (ja) 保守診断機構の自動検証方式
JPH07311693A (ja) デバッグ方式
JPH0950424A (ja) ダンプ採取装置およびダンプ採取方法
CN101706752B (zh) 一种软件错误现场定位的方法及装置
JPH09212385A (ja) 並列プログラムデバッグ装置
JPH02294739A (ja) 障害検出方式
US7114097B2 (en) Autonomic method to resume multi-threaded preload imaging process
US20050166089A1 (en) Method for processing a diagnosis of a processor, information processing system and a diagnostic processing program
JP2006065440A (ja) プロセス管理システム
JPH10198578A (ja) デバッグ方式およびデバッグ方法
CN113392006A (zh) 一种使用capsys监控自动化测试日志的方法及设备
JPH103403A (ja) 計算機システムおよびデバッグ方法
JPS58201152A (ja) 情報自動収得方式
JP2998793B2 (ja) 情報処理装置の試験方式
JPH0561734A (ja) 並列プログラムの非決定的動作テスト方法
JPH02207347A (ja) ソフトウェア障害検出方法
KR101997084B1 (ko) 인터럽트 요청의 재현시점 결정 방법 및 이를 이용하는 시스템 및 프로그램
JPH0322657A (ja) 電子交換機の試験方式
JP2979553B2 (ja) 障害診断方式
JP2004021936A (ja) 情報処理装置の障害処理方法および情報処理装置
CN116339904A (zh) 一种基于硬件辅助的虚拟化指令模拟错误检测方法及系统
JPH0553852A (ja) テスト装置
JPH04297933A (ja) 障害解析支援装置
JPH11306032A (ja) 障害発生状態処理方法およびオペレーティングシステム