JP2001134466A - デバッグ装置及び方法並びにプログラム記録媒体 - Google Patents

デバッグ装置及び方法並びにプログラム記録媒体

Info

Publication number
JP2001134466A
JP2001134466A JP31622099A JP31622099A JP2001134466A JP 2001134466 A JP2001134466 A JP 2001134466A JP 31622099 A JP31622099 A JP 31622099A JP 31622099 A JP31622099 A JP 31622099A JP 2001134466 A JP2001134466 A JP 2001134466A
Authority
JP
Japan
Prior art keywords
barrier synchronization
task
synchronization point
program
breakpoint
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
JP31622099A
Other languages
English (en)
Other versions
JP3571976B2 (ja
Inventor
Yoshito Kodera
芳人 小寺
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP31622099A priority Critical patent/JP3571976B2/ja
Priority to US09/620,077 priority patent/US6718484B1/en
Publication of JP2001134466A publication Critical patent/JP2001134466A/ja
Application granted granted Critical
Publication of JP3571976B2 publication Critical patent/JP3571976B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/28Error detection; Error correction; Monitoring by checking the correct order of processing

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)
  • Multi Processors (AREA)

Abstract

(57)【要約】 【課題】本発明は、マルチタスクプログラムを処理対象
とするときにあって、目的となる任意のタスクをそれぞ
れの目的となる任意のプログラム位置に停止させること
を実現するデバッグ装置の提供を目的とする。 【解決手段】タスクに設定される複数のブレークポイン
トを1つのバリア同期ポイントとして、そのバリア同期
ポイントを複数設定する。そして、マルチタスクプログ
ラムを起動した後、その中から、最初にスレッドを停止
させたバリア同期ポイントをバリア同期の対象として設
定し、そのバリア同期ポイントの指定するブレークポイ
ントに到達したスレッドをサスペンド状態にしながら、
そのバリア同期ポイント配下の存在する全てのブレーク
ポイントに基づくスレッドの停止が完了すると、サスペ
ンド状態にしたスレッドを実行可能状態に戻して、マル
チスレッドデバッガに制御を戻していくように構成す
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マルチタスクプロ
グラムを処理対象とするデバッグ装置及び方法と、その
デバッグ装置の実現に用いられるプログラムが格納され
るプログラム記録媒体とに関し、特に、目的となる任意
のタスクをそれぞれの目的となる任意のプログラム位置
に停止させることを実現するデバッグ装置及び方法と、
そのデバッグ装置の実現に用いられるプログラムが格納
されるプログラム記録媒体とに関する。
【0002】近年のコンピュータシステムの発達による
低価格化に伴い、複数のCPUを用いたコンピュータシ
ステムが増加しており、それらのCPUを効率的に利用
するために、複数のタスクが同時に並列動作して1つの
ジョブを実行するマルチタスクプログラムが増えてい
る。
【0003】このマルチタスクプログラムの中には、プ
ロセス内で相互依存の関係のある複数のスレッドを並列
実行させるマルチスレッドプログラムや、相互依存の関
係のある複数のプロセスを並列実行させるマルチプロセ
スプログラムや、後者のマルチプロセスプログラムにお
いて、そのプロセスを複数のコンピュータシステムに分
散させて実行させるネットワーク並列プログラムなどが
ある。
【0004】相互依存の関係にある複数のタスクで構成
されるこれらのマルチタスクプログラムを正しく動作さ
せるには、目的となる複数のタスクが正しいタイミング
(プログラム位置)で同期している必要がある。これが
欠けると、マルチタスクプログラムは正しく動作しない
ことが起こる。
【0005】これから、マルチタスクプログラムをデバ
ッグするために、目的となる複数のタスクが正しいタイ
ミングで同期しているのか否かを効率的にデバッグでき
るようにする技術の構築が求められている。
【0006】
【従来の技術】複数のタスクが同時に並列実行するマル
チタスクプログラムをデバッグする従来技術として、特
開平2-300942 号公報に、オペレーティングシステム上
で動作するタスクの中から複数個のタスクを指定する構
成を採って、その指定されたタスクの何れかのタスクの
実行が停止(デバッガの設定するブレークポイントによ
り停止する)された場合に、指定された他のタスクも同
時に停止させていくというタスクデバッグ技術が開示さ
れている。
【0007】また、特開平4-314141 号公報にも、デバ
ッグのために、マルチタスクジョブを構成する任意のタ
スクが予め設定された停止点あるいは例外を発生した時
点で、そのタスクと同一マルチタスクジョブグループ内
のすべてのタスクの実行を停止させ、任意の時点でその
マルチタスクジョブグループのすべてのタスクの実行を
再開させていくというマルチタスク制御技術が開示され
ている。
【0008】更に、デバッグ処理とは直接関係しない
が、特開昭63-4339 号公報には、プラント制御を構成す
る複数のタスクを使ってプラントを制御するときに、停
止する必要のないプラントの系までも停止してしまうと
いう不都合を解消するために、あるタスクが停止される
ときには同時に停止されなければならないような関係に
あるタスクグループを管理する構成を採って、あるタス
クの実行中に、異常が検出されてオペレーティングシス
テムがそのタスクを停止させる場合には、同じグループ
に属する他のタスクも停止させていくというタスク管理
技術が開示されている。
【0009】
【発明が解決しようとする課題】しかしながら、このよ
うな従来のデバッグ技術に従っていると、目的となる任
意のタスクをそれぞれの目的となる任意のプログラム位
置に停止させていくというバリア同期を実現できないと
いう問題点がある。
【0010】すなわち、上述した特開平2-300942 号公
報や特開平4-314141 号公報に記載されている従来技術
に従っていると、グルーピングされたタスクの何れかの
タスクの実行が停止された場合に、そのグループに属す
る他のタスクも同時に停止させていくという構成を採っ
ていることから、目的となる任意のタスクをそれぞれの
目的となる任意のプログラム位置に停止させていくとい
うバリア同期を実現できないのである。
【0011】ここで、このようなバリア同期は、複数の
タスクがそれぞれの分担個所を分担して初期化処理を行
うとか、複数のタスクがそれぞれの分担個所を分担して
計算処理を行うといったような処理を行うマルチタスク
プログラムをデバッグしていく際に必要となる。
【0012】このバリア同期を実現する1つの方法とし
て、デバッグ対象となるマルチタスクプログラムを書き
換えてバリア同期機構を組み込み、バリア同期が完了し
たことの保証できるプログラム位置に、デバッガを用い
てブレークポイント(プログラムを停止させる命令を埋
め込む)を設定して、その位置までマルチタスクプログ
ラムを実行させていくという方法を用いることが考えら
れる。
【0013】しかしながら、このような方法を用いる
と、バリア同期機構を追加するためにデバッグ対象とな
るマルチタスクプログラムを書き換えることから、本来
の原因を隠蔽するとか、組み込むバリア同期機構に不備
がある場合に、そのための調査作業を行わなくてはなら
ないとか、新たなバグを発生する危険性があるといった
ような様々な問題点がある。
【0014】本発明はかかる事情に鑑みてなされたもの
であって、マルチタスクプログラムを処理対象とすると
きにあって、目的となる任意のタスクをそれぞれの目的
となる任意のプログラム位置に停止させることを実現す
る新たなデバッグ装置及び方法の提供と、そのデバッグ
装置の実現に用いられるプログラムが格納される新たな
プログラム記録媒体の提供を目的とする。
【0015】
【課題を解決するための手段】図1に本発明の原理構成
を図示する。
【0016】図中、1は本発明を具備するデバッグ装置
であって、デバッグ対象となるマルチタスクプログラム
10と、デバッグ処理手段11と、設定手段12と、バ
リア同期ポイント管理手段13と、特定手段14と、判
断手段15と、再開手段16と、制御手段17とを備え
る。
【0017】デバッグ処理手段11は、マルチタスクプ
ログラム10のデバッグを行う。
【0018】設定手段12は、タスクに設定される複数
のブレークポイントを1つのバリア同期ポイントとし
て、そのバリア同期ポイントを1つ又は複数設定する。
【0019】バリア同期ポイント管理手段13は、設定
手段12の設定したバリア同期ポイントの情報を管理す
る。
【0020】特定手段14は、設定手段12が複数のバ
リア同期ポイントを設定したときに動作して、最初にタ
スクを停止させたブレークポイントの属するバリア同期
ポイントを特定する。
【0021】判断手段15は、設定手段12が1つのバ
リア同期ポイントを設定したときには、そのバリア同期
ポイント配下のブレークポイントに基づくタスクの停止
が発生するときに、そのバリア同期ポイント配下の存在
する全てのブレークポイントに基づくタスクの停止が完
了したのか否かを判断する。
【0022】また、判断手段15は、設定手段12が複
数のバリア同期ポイントを設定したときには、いずれか
のバリア同期ポイント配下のブレークポイントに基づく
タスクの停止が発生するときに、特定手段14の特定し
たバリア同期ポイントを判断対象として、そのバリア同
期ポイント配下の存在する全てのブレークポイントに基
づくタスクの停止が完了したのか否かを判断する。
【0023】再開手段16は、判断手段15が未完了を
判断するときに、その判断対象となった停止タスクをサ
スペンド状態にしてから、マルチタスクプログラム10
の実行を再開させる。
【0024】制御手段17は、判断手段15が完了を判
断するときに、バリア同期の完了を判断して、サスペン
ド状態に設定したタスクを実行可能状態に戻す。
【0025】このように構成される本発明のデバッグ装
置1では、設定手段12は、タスクに設定される複数の
ブレークポイントを1つのバリア同期ポイントとして、
そのバリア同期ポイントを1つ設定し、これを受けて、
デバッグ処理手段11は、それらのブレークポイントに
応じたプログラム停止命令をマルチタスクプログラム1
0に埋め込むとともに、バリア同期ポイント管理手段1
3は、その設定されたバリア同期ポイントの情報を管理
する。
【0026】続いて、マルチタスクプログラム10が起
動されると、ブレークポイントに到達したタスクは、埋
め込まれたプログラム停止命令に従って動作を停止し
て、その旨をデバッグ処理手段11に通知し、デバッグ
処理手段11からこの通知を受け取ると、判断手段15
は、設定手段12の設定したバリア同期ポイント配下の
存在する全てのブレークポイントに基づくタスクの停止
が完了したのか否かを判断する。
【0027】これを受けて、再開手段16は、判断手段
15が未完了を判断すると、その判断対象となった停止
タスクをサスペンド状態にしてから、マルチタスクプロ
グラム10の実行を再開させる。一方、制御手段17
は、判断手段15が完了を判断すると、バリア同期の完
了を判断して、サスペンド状態に設定したタスクを実行
可能状態に戻す。
【0028】このとき、バリア同期ポイントを構成しな
いブレークポイントが設定される場合には、バリア同期
ポイントを構成するブレークポイントに基づくタスクの
停止に応答してバリア同期の動作に入った後、バリア同
期ポイントを構成しないブレークポイントに基づくタス
クの停止が発生するときに、そのブレークポイントを無
視してマルチタスクプログラム10の実行を再開させる
実行手段を備えることで、バリア同期を迅速に実行でき
るように処理することがある。
【0029】また、このように構成される本発明のデバ
ッグ装置1では、設定手段12は、タスクに設定される
複数のブレークポイントを1つのバリア同期ポイントと
して、そのバリア同期ポイントを複数設定し、これを受
けて、デバッグ処理手段11は、それらのブレークポイ
ントに応じたプログラム停止命令をマルチタスクプログ
ラム10に埋め込むとともに、バリア同期ポイント管理
手段13は、その設定されたバリア同期ポイントの情報
を管理する。
【0030】続いて、マルチタスクプログラム10が起
動されると、ブレークポイントに到達したタスクは、埋
め込まれたプログラム停止命令に従って動作を停止し
て、その旨をデバッグ処理手段11に通知する。
【0031】デバッグ処理手段11からこの最初の通知
を受け取ると、特定手段14は、最初にタスクを停止さ
せたブレークポイントの属するバリア同期ポイントを特
定することで、設定された複数のバリア同期ポイントの
中からバリア同期の対象となるバリア同期ポイントを特
定し、これを受けて、その後、デバッグ処理手段11か
らこの通知を受け取ると、判断手段15は、特定手段1
4の特定したバリア同期ポイント配下の存在する全ての
ブレークポイントに基づくタスクの停止が完了したのか
否かを判断する。
【0032】これを受けて、再開手段16は、判断手段
15が未完了を判断すると、その判断対象となった停止
タスクをサスペンド状態にしてから、マルチタスクプロ
グラム10の実行を再開させる。一方、制御手段17
は、判断手段15が完了を判断すると、バリア同期の完
了を判断して、サスペンド状態に設定したタスクを実行
可能状態に戻す。
【0033】このとき、特定手段14の特定したバリア
同期ポイント以外のバリア同期ポイント配下のブレーク
ポイントに基づくタスクの停止が発生するときに、その
ブレークポイントを無視してマルチタスクプログラム1
0の実行を再開させる実行手段を備えることで、バリア
同期を迅速に実行できるように処理することがある。
【0034】そして、このとき、バリア同期ポイントを
構成しないブレークポイントが設定される場合には、バ
リア同期ポイントを構成するブレークポイントに基づく
タスクの停止に応答してバリア同期の動作に入った後、
バリア同期ポイントを構成しないブレークポイントに基
づくタスクの停止が発生するときに、そのブレークポイ
ントを無視してマルチタスクプログラム10の実行を再
開させる実行手段を備えることで、バリア同期を迅速に
実行できるように処理することがある。
【0035】このようにして、本発明によれば、マルチ
タスクプログラム10をデバッグするときに、目的とな
る任意のタスクをそれぞれの目的となる任意のプログラ
ム位置に停止させていくというバリア同期を実現できる
ようになる。
【0036】これから、複数のタスクがそれぞれの分担
個所を分担して初期化処理を行うとか、複数のタスクが
それぞれの分担個所を分担して計算処理を行うといった
ような処理を行うマルチタスクプログラムのデバッグを
効率的に実行できるようになる。
【0037】そして、本発明によれば、複数のバリア同
期ポイントを設定可能とするときにあって、最初にブレ
ークポイントに到達したバリア同期ポイントをバリア同
期の対象とする構成を採ることから、バリア同期に基づ
くデバッグをプログラムの実行順序に整合させて行うこ
とができるようになる。
【0038】
【発明の実施の形態】以下、実施の形態に従って本発明
を詳細に説明する。
【0039】デバッグの対象となるマルチタスクプログ
ラムとして、プロセス内に相互依存の関係にある複数の
スレッドを並列実行させるマルチスレッドプログラムを
想定して、任意のスレッドだけに効力を持つブレークポ
イントを設定できる機能と、目的のスレッドだけを実行
再開させる機能とを持つマルチスレッドデバッガに適用
した実施例に従って、本発明を詳細に説明する。
【0040】なお、マルチスレッドプログラムは、スタ
ック域は各スレッドで固有であるが、命令域やデータ域
はプログラム内の全スレッドで共有される特性を持って
いる。
【0041】図2に、本発明のデバッガ装置1の一実施
例を図示する。
【0042】図中、20はデバッグ対象となるマルチス
レッドプログラム、30はマルチスレッドプログラム2
0をデバッグするマルチスレッドデバッガ、40はブレ
ークポイントを管理するブレークポイント管理機構、5
0は本発明を実現すべく備えられるバリア同期ポイント
設定プログラム、60は本発明を実現すべく備えられる
バリア同期ポイント管理機構、70は本発明を実現すべ
く備えられるバリア同期ポイント実行制御プログラムで
ある。
【0043】このマルチスレッドデバッガ30は、プロ
グラマなどから入力されてくる各種指示を処理して、マ
ルチスレッドプログラム20に対して、ブレークポイン
トを設定したり解除したり、プログラムの実行や実行再
開を指示したりといったような従来のマルチスレッドデ
バッガが持つ一般的な機能を処理する。
【0044】ブレークポイント管理機構40は、ブレー
クポイントの設定や解除などといったブレークポイント
に関する管理を行うものであり、マルチスレッドデバッ
ガ30に組み込まれて備えられることもある。
【0045】バリア同期ポイント設定プログラム50
は、本発明を実現すべくフロッピィディスクや回線など
を介してインストールされてメモリ上に展開され、マル
チスレッドプログラム20を設定先として、バリア同期
の対象となるブレークポイント(バリア同期先のスレッ
ドと、そのバリア同期停止位置とを規定する)を設定す
ることで、バリア同期ポイントを設定する。
【0046】例えば、マルチスレッドプログラム20の
11行目のプログラム位置で、スレッド1,2,3,
4,5をバリア同期により停止させるというようなバリ
ア同期ポイントを設定するのである。
【0047】バリア同期ポイント管理機構60は、バリ
ア同期ポイント設定プログラム50により設定されたバ
リア同期ポイントの情報を管理するバリア同期ポイント
情報管理域61と、本発明を実現すべくフロッピィディ
スクや回線などを介してインストールされてメモリ上に
展開され、バリア同期ポイント設定プログラム50によ
り設定されたバリア同期ポイントの情報をバリア同期ポ
イント情報管理域61に登録するバリア同期ポイント情
報登録プログラム62とを備える。
【0048】バリア同期ポイント実行制御プログラム7
0は、本発明を実現すべくフロッピィディスクや回線な
どを介してインストールされてメモリ上に展開され、バ
リア同期ポイント情報管理域61に管理されるバリア同
期ポイント情報を参照しつつ、本発明に特徴的なバリア
同期の制御処理を実行する。
【0049】図3に、バリア同期ポイント情報管理域6
1に管理されるバリア同期ポイント情報のデータ構造の
一実施例を図示する。
【0050】この図に示すように、バリア同期ポイント
情報管理域61は、バリア同期ポイントのIDを管理す
るバリア同期ポイント管理ブロック610-i(i=1〜
n)と、ブレークポイントの情報を管理するブレークポ
イント管理ブロック611-i(i=1,2,...)と、バリ
ア同期の動作に入っているバリア同期ポイントがどれで
あるのかを管理する動作中バリア同期ポイント管理ブロ
ック612とを使って、バリア同期情報を管理する構成
を採っている。
【0051】このバリア同期ポイント管理ブロック61
0-iは、図4に示すように、前後に接続されるバリア同
期ポイント管理ブロック610-iへの管理チェーンと、
自ブロックの管理するバリア同期ポイントのIDと、そ
のバリア同期ポイントの構成ブレークポイントを管理す
る先頭のブレークポイント管理ブロック611-iへの管
理チェーン(構成ブレークポイント用管理チェーン)と
を管理する。
【0052】一方、ブレークポイント管理ブロック61
1-iは、図5に示すように、前後に接続されるブレーク
ポイント管理ブロック611-iへの管理チェーンと、自
ブロックの管理するブレークポイントのIDと、そのブ
レークポイントのプログラム位置と、そのブレークポイ
ントの設定されるスレッドの識別子と、そのブレークポ
イントがバリア同期ポイントを構成するブレークポイン
トであるのか否かを示すフラグ(バリア同期ポイントフ
ラグ)と、同一バリア同期ポイントの構成ブレークポイ
ントを管理するブレークポイント管理ブロック611-i
への管理チェーン(バリア同期用管理チェーン)とを管
理する。
【0053】一方、動作中バリア同期ポイント管理ブロ
ック612は、図6に示すように、バリア同期の動作に
入っているバリア同期ポイントがある場合には、そのバ
リア同期ポイントを管理するバリア同期ポイント管理ブ
ロック610-iへのチェーンを管理し、バリア同期の動
作に入っていない場合には、NULLポインタを管理す
る。
【0054】このようなデータ構造を持つバリア同期ポ
イント管理ブロック610-i/ブレークポイント管理ブ
ロック611-iを使い、“1”〜“n”という識別子を
持つn個のバリア同期ポイントが設定されている場合に
あって、“1”という識別子を持つバリア同期ポイント
が、“1”という識別子を持つブレークポイント(プロ
グラム位置=11行、設定先スレッド識別子=1)と、
“2”という識別子を持つブレークポイント(プログラ
ム位置=11行、設定先スレッド識別子=2)などのブ
レークポイントから構成されている場合には、例えば、
図3に示すようなチェーンを張ることで、“1”という
識別子を持つバリア同期ポイントの情報を管理するので
ある。
【0055】そして、動作中バリア同期ポイント管理ブ
ロック612を使って、例えば、図3に示すようなチェ
ーンを張ることで、バリア同期の動作に入っているバリ
ア同期ポイントが“1”という識別子を持つバリア同期
ポイントであるということを管理するのである。
【0056】なお、この管理形態では、全てのブレーク
ポイント(バリア同期ポイントとならないものもある)
に対応付けて用意されて、それらのブレークポイントの
情報を管理するブレークポイント管理ブロック611-i
(i=1,2,...)を用意する構成を採って、その中か
ら、バリア同期ポイントを構成するものをバリア同期用
管理チェーンで接続することで、各バリア同期ポイント
の持つブレークポイントを管理するという方法を用いて
いるが、本発明を実現するためだけであれば、バリア同
期ポイントを構成しないブレークポイントを管理するブ
レークポイント管理ブロック611-i(例えば、図3中
のブレークポイント管理ブロック611-3)について
は、省略することが可能である。
【0057】図7に、バリア同期ポイント情報登録プロ
グラム62の実行する処理フローの一実施例、図8ない
し図10に、バリア同期ポイント実行制御プログラム7
0の実行する処理フローの一実施例を図示する。次に、
これらの処理フローに従って、このように構成される実
施例の処理について詳細に説明する。
【0058】バリア同期ポイント情報登録プログラム6
2は、マルチスレッドデバッガ30を介して、バリア同
期ポイント設定プログラム50の設定したバリア同期ポ
イントを受け取ることで起動されると、設定されたバリ
ア同期ポイントを順番に選択し、その選択した各バリア
同期ポイントに対して図7の処理フローの処理を施して
いくことで、設定されたバリア同期ポイントの情報をバ
リア同期ポイント情報管理域61に登録していくように
処理する。
【0059】すなわち、バリア同期ポイント情報登録プ
ログラム62は、起動されると、図7の処理フローに示
すように、先ず最初に、ステップ1で、選択したバリア
同期ポイントに対応付けて、バリア同期ポイント管理ブ
ロック610-iを作成して、それと既に作成されている
バリア同期ポイント管理ブロック610-iとの間にチェ
ーンを張る。
【0060】続いて、ステップ2で、選択したバリア同
期ポイントを解析して、スレッド単位のブレークポイン
トに分割する。続いて、ステップ3で、分割した全ての
ブレークポイントを選択したのか否かを判断して、全て
のブレークポイントを選択したことを判断するときに
は、選択したバリア同期ポイントの情報の登録完了を判
断して、選択したバリア同期ポイントについての処理を
終了する。
【0061】一方、ステップ3で、分割した全てのブレ
ークポイントを選択していないことを判断するときに
は、ステップ4に進んで、分割したブレークポイントの
中から未選択のものを1つ選択する。続いて、ステップ
5で、選択したブレークポイントがブレークポイント管
理機構40にて既に管理されているのか否かを判断し
て、未管理のものである場合には、ステップ6に進ん
で、ブレークポイント管理機構40に依頼することで、
選択したブレークポイントをブレークポイント管理機構
40の管理下に置く。
【0062】ブレークポイント管理機構40の管理下に
あるブレークポイントについては、そのブレークポイン
トを管理するブレークポイント管理ブロック611-iが
作成されているので、このステップ6では、ブレークポ
イント管理機構40の管理下にないブレークポイントを
処理対象として、ブレークポイント管理機構40に依頼
することで、そのブレークポイントを管理するブレーク
ポイント管理ブロック611-iを作成してもらうように
処理するのである。
【0063】このようにして作成されるブレークポイン
ト管理ブロック611-iの管理するブレークポイントに
ついては、マルチスレッドデバッガ30が、指定される
スレッドの指定されるプログラム位置にプログラム停止
命令を挿入していくことで、ブレークポイントとして機
能させていくように処理することになる。
【0064】続いて、ステップ7で、選択したブレーク
ポイントを管理するブレークポイント管理ブロック61
1-iの持つバリア同期ポイントフラグをONすること
で、そのブレークポイントがバリア同期ポイントを構成
するブレークポイントである旨を記録する。
【0065】続いて、ステップ8で、作成したバリア同
期ポイント管理ブロック610-iの持つ構成ブレークポ
イント管理チェーンからのチェーンに、選択したブレー
クポイントを管理するブレークポイント管理ブロック6
11-iを接続して、ステップ3に戻る。
【0066】このようにして、バリア同期ポイント情報
登録プログラム62は、バリア同期ポイント設定プログ
ラム50の設定したバリア同期ポイントを受け取ると、
バリア同期ポイント管理ブロック610-iとブレークポ
イント管理ブロック611-iとを使い、図3に示したよ
うな形で、このバリア同期ポイントの情報をバリア同期
ポイント情報管理域61に登録していくように処理する
のである。
【0067】次に、バリア同期ポイント実行制御プログ
ラム70の実行する処理について説明する。
【0068】マルチスレッドデバッガ30は、バリア同
期ポイント情報登録プログラム62が処理を終了する
と、マルチスレッドプログラム20を起動して、その実
行中に、いずれかのスレッドが何らかの原因で停止する
とバリア同期ポイント実行制御プログラム70を呼び出
していくことで、マルチスレッドプログラム20のデバ
ッグ処理に入る。
【0069】このようにして呼び出されると、バリア同
期ポイント実行制御プログラム70は、図8ないし図1
0の処理フローに示すように、先ず最初に、ステップ1
で、スレッドの停止原因がブレークポイントによるもの
であるのか否かを判断して、スレッドの停止原因がブレ
ークポイントによるものでないことを判断するときに
は、自プログラムの処理する内容でないことを判断し
て、そのままマルチスレッドデバッガ30に制御を戻
す。
【0070】一方、ステップ1で、スレッドの停止原因
がブレークポイントによるものであることを判断すると
きには、ステップ2に進んで、動作中バリア同期ポイン
ト管理ブロック612にNULLポインタが登録されて
いるのか否かを判断することで、バリア同期の動作中で
あるのか否かを判断する。
【0071】すなわち、後述することから分かるよう
に、バリア同期の動作中であるときには、動作中バリア
同期ポイント管理ブロック612に、バリア同期動作中
のバリア同期ポイントを管理するバリア同期ポイント管
理ブロック610-iへのチェーンが登録されているの
で、動作中バリア同期ポイント管理ブロック612にN
ULLポインタが登録されているのか否かを判断するこ
とで、バリア同期の動作中であるのか否かを判断するの
である。
【0072】なお、マルチスレッドデバッガ30は、マ
ルチスレッドプログラム20の実行開始にあたって、動
作中バリア同期ポイント管理ブロック612にNULL
ポインタを書き込んでいくという初期化処理を行う。
【0073】この判断処理に従って、動作中バリア同期
ポイント管理ブロック612にNULLポインタが登録
されていることで、バリア同期の動作中でないことを判
断するときには、ステップ3に進んで、停止原因となっ
たブレークポイントを管理するブレークポイント管理ブ
ロック611-iのバリア同期ポイントフラグがONを表
示しているのか否かを判断して、OFFを表示している
ことを判断するときには、バリア同期の対象ではないブ
レークポイントが停止原因であることを判断して、その
ままマルチスレッドデバッガ30に制御を戻すことで、
通常のブレークポイントに対するデバッグ処理に入るよ
うに制御する。
【0074】一方、ステップ3の判断処理に従って、停
止原因となったブレークポイントを管理するブレークポ
イント管理ブロック611-iのバリア同期ポイントフラ
グがONを表示していることを判断するときには、バリ
ア同期の開始を判断して、ステップ4に進んで、動作中
バリア同期ポイント管理ブロック612に、そのブレー
クポイント管理ブロック611-iへリンクするバリア同
期ポイント管理ブロック610-iへのチェーンを登録す
る。
【0075】続いて、ステップ5で、停止したスレッド
をサスペンド状態(マルチスレッドプログラム20の実
行再開時に、そのスレッドの実行を再開しない状態にす
る)に設定し、続くステップ6で、プログラマに対して
バリア同期が開始した旨のメッセージを表示してから、
続くステップ7で、マルチスレッドプログラム20の実
行を再開させて、マルチスレッドデバッガ30に制御を
戻す。
【0076】一方、ステップ2の判断処理で、動作中バ
リア同期ポイント管理ブロック612にバリア同期ポイ
ント管理ブロック610-iへのチェーンが登録されてい
ることを判断するときには、ステップ8(図9の処理フ
ロー)に進んで、停止原因となったブレークポイントを
管理するブレークポイント管理ブロック611-iのバリ
ア同期ポイントフラグがONを表示しているのか否かを
判断する。
【0077】この判断処理により、停止原因となったブ
レークポイントを管理するブレークポイント管理ブロッ
ク611-iのバリア同期ポイントフラグがOFFを表示
していることを判断するときには、ステップ9に進ん
で、バリア同期ポイントでないブレークポイントに到達
した旨のメッセージを表示してから、続くステップ10
で、マルチスレッドプログラム20の実行を再開させ
て、マルチスレッドデバッガ30に制御を戻す。
【0078】すなわち、既にバリア同期に入っているの
で、通常のブレークポイントについては無視して、バリ
ア同期動作中のバリア同期ポイントを構成する次のブレ
ークポイントへの到達を実現すべく、マルチスレッドプ
ログラム20の実行を再開させるのである。
【0079】一方、ステップ8で、停止原因となったブ
レークポイントを管理するブレークポイント管理ブロッ
ク611-iのバリア同期ポイントフラグがONを表示し
ていることを判断するときには、ステップ11に進ん
で、そのブレークポイント管理ブロック611-iが動作
中バリア同期ポイント管理ブロック612からのチェー
ンに繋がっているのか否かを判断する。
【0080】この判断処理により、停止原因となったブ
レークポイントを管理するブレークポイント管理ブロッ
ク611-iが動作中バリア同期ポイント管理ブロック6
12からのチェーンに繋がっていないことを判断すると
きには、ステップ12に進んで、バリア同期の動作中で
ないバリア同期ポイントのブレークポイントに到達した
旨のメッセージを表示してから、続くステップ13で、
マルチスレッドプログラム20の実行を再開させて、マ
ルチスレッドデバッガ30に制御を戻す。
【0081】すなわち、バリア同期動作に入れるのは、
複数設定されるバリア同期ポイントの中の最初にブレー
クポイントに到達したものだけであるので、それ以外の
バリア同期ポイントのブレークポイントについては無視
して、バリア同期動作中のバリア同期ポイントを構成す
る次のブレークポイントへの到達を実現すべく、マルチ
スレッドプログラム20の実行を再開させるのである。
【0082】一方、ステップ11で、停止原因となった
ブレークポイントを管理するブレークポイント管理ブロ
ック611-iが動作中バリア同期ポイント管理ブロック
612からのチェーンに繋がっていることを判断すると
きには、ステップ14に進んで、そのチェーンに繋がる
ブレークポイント管理ブロック611-iを参照すること
で、バリア同期動作中のバリア同期ポイント配下のブレ
ークポイントの設定されるスレッドを特定して、それら
の全てのスレッドの停止が完了したのか否かを判断する
ことで、バリア同期が完了したのか否かを判断する。
【0083】このとき、バリア同期動作中のバリア同期
ポイントの中に、その時点では存在しないスレッドを設
定先とするブレークポイントが含まれることがあるが、
このときには、そのスレッドについては停止しているも
のと見なして、この判断処理を実行する。
【0084】すなわち、現在存在しないスレッドがバリ
ア同期ポイントで指定されることがある(プログラマが
スレッドの存在の有無を知らないことがある)ので、そ
のようなスレッドを設定先とするブレークポイントを除
きつつ、バリア同期動作中のバリア同期ポイント配下の
存在する全てのブレークポイントに基づくスレッドの停
止が完了したのか否かを判断することで、バリア同期が
完了したのか否かを判断するのである。
【0085】この判断処理により、バリア同期が完了し
ていないことを判断するときには、ステップ15に進ん
で、停止したスレッドをサスペンド状態(マルチスレッ
ドプログラム20の実行再開時に、そのスレッドの実行
を再開しない状態にする)に設定し、続くステップ16
で、プログラマに対してバリア同期中である旨のメッセ
ージを表示してから、続くステップ17(図10の処理
フロー)で、マルチスレッドプログラム20の実行を再
開させて、マルチスレッドデバッガ30に制御を戻す。
【0086】一方、ステップ14で、バリア同期が完了
したことを判断するときには、ステップ18(図10の
処理フロー)に進んで、プログラマに対してバリア同期
が完了した旨のメッセージを表示し、続くステップ19
で、バリア同期のためにサスペンド状態にしたスレッド
を実行可能状態に戻してから、マルチスレッドデバッガ
30に制御を戻す。
【0087】このようにして、バリア同期ポイント実行
制御プログラム70は、図11に示すように、バリア同
期ポイント設定プログラム50により複数のバリア同期
ポイントが設定されると、その中から、最初にスレッド
を停止させたバリア同期ポイントをバリア同期の対象と
して設定し、そのバリア同期ポイントの指定するブレー
クポイントに到達したスレッドをサスペンド状態にしな
がら、そのバリア同期ポイント配下の存在する全てのブ
レークポイントに基づくスレッドの停止が完了すると、
サスペンド状態にしたスレッドを実行可能状態に戻し
て、マルチスレッドデバッガ30に制御を戻していくよ
うに処理するのである。
【0088】このように、本発明によれば、マルチスレ
ッドプログラム20をデバッグするときに、目的となる
任意のスレッドをそれぞれの目的となる任意のプログラ
ム位置に停止させていくというバリア同期を実現できる
ようになるのである。
【0089】次に、図12に示すマルチスレッドプログ
ラム20を具体例にして、本発明により実現されるバリ
ア同期について具体的に説明する。
【0090】この図12に示すマルチスレッドプログラ
ム20は、図13に示すように、広域変数である配列ar
ray[50] の0〜9に“0”を書き込み、10〜19に“1
0”を書き込み、20〜29に“20”を書き込み、30〜39
に“30”を書き込み、40〜49に“40”を書き込むと
いう処理を実行するものであり、図14に示すように、
4つのスレッド(THRー2〜5)を生成して、この生
成する4つのスレッドと、初期スレッドとして機能する
関数main()とを使って、この書込処理を実行するもので
ある。
【0091】図12に示すマルチスレッドプログラム2
0のプログラム動作について説明するならば、関数main
()(20行)が起動されると、27行に記述されるfor
文の指定する繰り返し回数(4回)に従って、29行に
記述されるシステム関数により4つのスレッドが生成さ
れる。
【0092】このようにして生成されるスレッドは、2
9行の記述に従って、begin[i]のアドレスを渡しつつ、
関数PE()(14行)を呼び出す。ここで、27行及び2
8行の記述に従って、begin[i]には、 begin[0]=0 begin[1]=10 begin[2]=20 begin[3]=30 という値が設定されている。
【0093】スレッドから呼び出されると、関数PE()
は、16行の記述に従って、begin[i]の実体を渡しつ
つ、関数sub()(6行)を呼び出す。一方、関数main()
は、32行の記述に従って、「begin[4]=40 」を渡しつ
つ、関数sub() を呼び出す。
【0094】このようにして呼び出されると、関数su
b() は、10行の記述に従って、図13に示したよう
に、配列array[50] の0〜9に“0”を書き込み、10〜
19に“10”を書き込み、20〜29に“20”を書き込
み、30〜39に“30”を書き込み、40〜49に“40”を
書き込むという処理を実行する。
【0095】この関数sub() による処理を受けて、初期
スレッドとして機能する関数main()は、自分の作成した
全てのスレッドがこの処理を終了するのを待ち合わせ
て、その待ち合わせを終えると、5つのスレッドにより
設定された配列array[50] の内容を表示して、処理を終
了する。
【0096】このようにして、4つのスレッドは、一斉
に単独で関数PE0から動作し始め、スレッドの作成時に
渡された引数をそのまま関数sub()(配列への設定処理を
行う関数)に渡して実行させる。このとき、初期スレッ
ドである関数main0は、スレッドの作成に続いて他のス
レッドと同様に関数sub() を実行させる。
【0097】この時点で、5つのスレッドは、引数を変
えて関数sub() を同時に動作させていることになる。す
なわち、同じ位置の同じ命令列(関数sub())を同時に5
つのスレッドで動作させていくことになる。
【0098】この図12に示すマルチスレッドプログラ
ム20をデバッグする場合に、図13に示すような書込
処理が正常に行われたのかを確認する必要がある。
【0099】そこで、本発明を使い、5つのスレッド<
THR−1>〜<THR−5>に対して、図12に示す
マルチスレッドプログラム20の11行をブレークポイ
ントするバリア同期ポイントを設定することで、5つの
スレッド<THR−1>〜<THR−5>をその11行
でバリア同期させて、この書込処理が正常に行われたの
か否かを確認するデバッグ処理を行う。
【0100】このバリア同期ポイントを設定する場合、
最初に停止するスレッドは不定だが、例えば、最初に、
スレッド<THR−2>がバリア同期ポイントを構成す
るブレークポイントによって停止するとし、それに続い
て、スレッド<THR−3>が停止し、それに続いて、
スレッド<THR−4>が停止し、それに続いて、スレ
ッド<THR−5>が停止し、最後に、スレッド<TH
R−1>が停止していくとする。
【0101】この場合には、上述した処理に従って、ス
レッド<THR−2>が11行で停止することでバリア
同期が動作を開始し、そのスレッド<THR−2>をサ
スペンド状態にした後、マルチスレッドプログラム20
の実行を再開させる。
【0102】続いて、スレッド<THR−3>が11行
で停止し、それに応じてサスペンド状態にし、続いて、
スレッド<THR−4>が11行で停止し、それに応じ
てサスペンド状態にし、続いて、スレッド<THR−5
>が11行で停止し、それに応じてサスペンド状態にし
ていく。
【0103】最後に、スレッド<THR−1>が11行
で停止し、これによりプログラマが指定した現在存在し
ている全てのスレッドがバリア同期ポイントで停止した
ことでバリア同期動作が完了したことを認識して、その
旨をプログラマに通知し、このバリア同期のためにサス
ペンド状態にしたスレッド<THR−2>、スレッド<
THR−3>、スレッド<THR−4>、スレッド<T
HR−5>を実行再開可能状態にして、マルチスレッド
デバッガ30に制御を戻していく。
【0104】このようにして、本発明を用いることで、
図12に示すようなマルチスレッドプログラム20のデ
バッグが可能になる。
【0105】上述した実施例では、複数のバリア同期ポ
イントの設定を可能とする構成を開示したが、1つのバ
リア同期ポイントの設定のみを許可するという構成を採
ることも可能である。この実施例に従う場合には、設定
されるバリア同期ポイントがバリア同期の対象となるこ
とから、動作中バリア同期ポイント管理ブロック612
を備える必要はなく、その代わりに、バリア同期の動作
中であるのか否かを表示するフラグを用意することにな
る。
【0106】この実施例に従う場合、バリア同期ポイン
ト実行制御プログラム70は、図8ないし図10の処理
フローに代えて、図15及び図16の処理フローの処理
を実行することになる。
【0107】すなわち、いずれかのスレッドが何らかの
原因で停止することでマルチスレッドデバッガ30から
呼び出されると、バリア同期ポイント実行制御プログラ
ム70は、図15及び図16の処理フローに示すよう
に、先ず最初に、ステップ1で、スレッドの停止原因が
ブレークポイントによるものであるのか否かを判断し
て、スレッドの停止原因がブレークポイントによるもの
でないことを判断するときには、自プログラムの処理す
る内容でないことを判断して、そのままマルチスレッド
デバッガ30に制御を戻す。
【0108】一方、ステップ1で、スレッドの停止原因
がブレークポイントによるものであることを判断すると
きには、ステップ2に進んで、バリア同期の動作中であ
るのか否かを表示するフラグがONになっているのか否
かを判断することで、バリア同期の動作中であるのか否
かを判断する。なお、このフラグは、マルチスレッドプ
ログラム20の実行開始時にOFFにセットされる。
【0109】この判断処理に従って、バリア同期の動作
中でないことを判断するときには、ステップ3に進ん
で、停止原因となったブレークポイントを管理するブレ
ークポイント管理ブロック611-iのバリア同期ポイン
トフラグがONを表示しているのか否かを判断して、O
FFを表示していることを判断するときには、バリア同
期の対象ではないブレークポイントが停止原因であるこ
とを判断して、そのままマルチスレッドデバッガ30に
制御を戻すことで、通常のブレークポイントに対するデ
バッグ処理に入るように制御する。
【0110】一方、ステップ3の判断処理に従って、停
止原因となったブレークポイントを管理するブレークポ
イント管理ブロック611-iのバリア同期ポイントフラ
グがONを表示していることを判断するときには、バリ
ア同期の開始を判断して、ステップ4に進んで、バリア
同期の動作中であるのか否かを表示するフラグをONに
することで、バリア同期の動作中であることを記録す
る。
【0111】続いて、ステップ5で、停止したスレッド
をサスペンド状態に設定し、続くステップ6で、プログ
ラマに対してバリア同期が開始した旨のメッセージを表
示してから、続くステップ7で、マルチスレッドプログ
ラム20の実行を再開させて、マルチスレッドデバッガ
30に制御を戻す。
【0112】一方、ステップ2の判断処理で、バリア同
期の動作中であることを判断するときには、ステップ8
(図16の処理フロー)に進んで、停止原因となったブ
レークポイントを管理するブレークポイント管理ブロッ
ク611-iのバリア同期ポイントフラグがONを表示し
ているのか否かを判断する。
【0113】この判断処理により、停止原因となったブ
レークポイントを管理するブレークポイント管理ブロッ
ク611-iのバリア同期ポイントフラグがOFFを表示
していることを判断するときには、ステップ9に進ん
で、バリア同期ポイントでないブレークポイントに到達
した旨のメッセージを表示してから、続くステップ10
で、マルチスレッドプログラム20の実行を再開させ
て、マルチスレッドデバッガ30に制御を戻す。
【0114】すなわち、既にバリア同期に入っているの
で、通常のブレークポイントについては無視して、バリ
ア同期ポイントを構成する次のブレークポイントへの到
達を実現すべく、マルチスレッドプログラム20の実行
を再開させるのである。
【0115】一方、ステップ8で、停止原因となったブ
レークポイントを管理するブレークポイント管理ブロッ
ク611-iのバリア同期ポイントフラグがONを表示し
ていることを判断するときには、ステップ11に進ん
で、そのブレークポイント管理ブロック611-iにバリ
ア同期用管理チェーン(図5に示したもの)で繋がるブ
レークポイント管理ブロック611-iを参照すること
で、バリア同期ポイント配下のブレークポイントの設定
されるスレッドを特定して、それらの全てのスレッドの
停止が完了したのか否かを判断することで、バリア同期
が完了したのか否かを判断する。
【0116】このとき、バリア同期ポイントの中に、そ
の時点では存在しないスレッドを設定先とするブレーク
ポイントが含まれることがあるが、このときには、その
スレッドについては停止しているものと見なして、この
判断処理を実行する。
【0117】すなわち、現在存在しないスレッドがバリ
ア同期ポイントで指定されることがあるので、そのよう
なスレッドを設定先とするブレークポイントを除きつ
つ、バリア同期ポイント配下の存在する全てのブレーク
ポイントに基づくスレッドの停止が完了したのか否かを
判断することで、バリア同期が完了したのか否かを判断
するのである。
【0118】この判断処理により、バリア同期が完了し
ていないことを判断するときには、ステップ12に進ん
で、停止したスレッドをサスペンド状態に設定し、続く
ステップ13で、プログラマに対してバリア同期中であ
る旨のメッセージを表示してから、続くステップ14
で、マルチスレッドプログラム20の実行を再開させ
て、マルチスレッドデバッガ30に制御を戻す。
【0119】一方、ステップ11で、バリア同期が完了
したことを判断するときには、ステップ15に進んで、
プログラマに対してバリア同期が完了した旨のメッセー
ジを表示し、続くステップ16で、バリア同期のために
サスペンド状態にしたスレッドを実行可能状態に戻して
から、マルチスレッドデバッガ30に制御を戻す。
【0120】このようにして、バリア同期ポイント実行
制御プログラム70は、1つのバリア同期ポイントの設
定のみを許可するという構成を採る場合には、図15及
び図16の処理フローの処理を実行することで、マルチ
スレッドプログラム20に対するバリア同期を実行する
のである。
【0121】図示実施例に従って本発明を説明したが、
本発明はこれに限定されるものではない。例えば、実施
例では、マルチスレッドプログラム20に対してのバリ
ア同期を具体例にして本発明を説明したが、本発明は、
相互依存の関係のある複数のプロセスを並列実行させる
マルチプロセスプログラムなどのような他のマルチタス
クプログラムに対してもそのまま適用できる。
【0122】
【発明の効果】以上説明したように、本発明によれば、
マルチタスクプログラムをデバッグするときに、目的と
なる任意のタスクをそれぞれの目的となる任意のプログ
ラム位置に停止させていくというバリア同期を実現でき
るようになる。
【0123】これから、複数のタスクがそれぞれの分担
個所を分担して初期化処理を行うとか、複数のタスクが
それぞれの分担個所を分担して計算処理を行うといった
ような処理を行うマルチタスクプログラムのデバッグを
効率的に実行できるようになる。
【0124】そして、本発明によれば、複数のバリア同
期ポイントを設定可能とするときにあって、最初にブレ
ークポイントに到達したバリア同期ポイントをバリア同
期の対象とする構成を採ることから、バリア同期に基づ
くデバッグをプログラムの実行順序に整合させて行うこ
とができるようになる。
【図面の簡単な説明】
【図1】本発明の原理構成図である。
【図2】本発明の一実施例である。
【図3】バリア同期ポイント管理の一実施例である。
【図4】バリア同期ポイント管理ブロックの一実施例で
ある。
【図5】ブレークポイント管理ブロックの一実施例であ
る。
【図6】動作中バリア同期ポイント管理ブロックの一実
施例である。
【図7】バリア同期ポイント情報登録プログラムの処理
フローである。
【図8】バリア同期ポイント実行制御プログラムの処理
フローである。
【図9】バリア同期ポイント実行制御プログラムの処理
フローである。
【図10】バリア同期ポイント実行制御プログラムの処
理フローである。
【図11】実施例の処理の説明図である。
【図12】マルチスレッドプログラムの一例である。
【図13】マルチスレッドプログラムの説明図である。
【図14】マルチスレッドプログラムの説明図である。
【図15】バリア同期ポイント実行制御プログラムの処
理フローである。
【図16】バリア同期ポイント実行制御プログラムの処
理フローである。
【符号の説明】
1 デバッグ装置 10 マルチタスクプログラム 11 デバッグ処理手段 12 設定手段 13 バリア同期ポイント管理手段 14 特定手段 15 判断手段 16 再開手段 17 制御手段

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 マルチタスクプログラムを処理対象とす
    るデバッグ装置において、 タスクに設定される複数のブレークポイントを1つのバ
    リア同期ポイントとして、該バリア同期ポイントを1つ
    設定する設定手段と、 上記ブレークポイントに基づくタスクの停止が発生する
    ときに、上記バリア同期ポイント配下の存在する全ての
    上記ブレークポイントに基づくタスクの停止が完了した
    のか否かを判断する判断手段と、 上記判断手段が未完了を判断するときに、その判断対象
    となった停止タスクをサスペンド状態にしてから、マル
    チタスクプログラムの実行を再開させる再開手段と、 上記判断手段が完了を判断するときに、サスペンド状態
    に設定したタスクを実行可能状態に戻す制御手段とを備
    えることを、 特徴とするデバッグ装置。
  2. 【請求項2】 マルチタスクプログラムを処理対象とす
    るデバッグ装置において、 タスクに設定される複数のブレークポイントを1つのバ
    リア同期ポイントとして、該バリア同期ポイントを複数
    設定する設定手段と、 最初にタスクを停止させた上記ブレークポイントの属す
    るバリア同期ポイントを特定する特定手段と、 上記ブレークポイントに基づくタスクの停止が発生する
    ときに、上記特定手段の特定するバリア同期ポイントを
    判断対象として、該バリア同期ポイント配下の存在する
    全ての上記ブレークポイントに基づくタスクの停止が完
    了したのか否かを判断する判断手段と、 上記判断手段が未完了を判断するときに、その判断対象
    となった停止タスクをサスペンド状態にしてから、マル
    チタスクプログラムの実行を再開させる再開手段と、 上記判断手段が完了を判断するときに、サスペンド状態
    に設定したタスクを実行可能状態に戻す制御手段とを備
    えることを、 特徴とするデバッグ装置。
  3. 【請求項3】 請求項2記載のデバッグ装置において、 特定手段の特定したバリア同期ポイント以外のバリア同
    期ポイント配下のブレークポイントに基づくタスクの停
    止が発生するときに、該ブレークポイントを無視してマ
    ルチタスクプログラムの実行を再開させる実行手段を備
    えることを、 特徴とするデバッグ装置。
  4. 【請求項4】 請求項1〜3のいずれかに記載されるデ
    バッグ装置において、 バリア同期ポイントを構成しないブレークポイントが設
    定される場合に、バリア同期ポイントを構成するブレー
    クポイントに基づくタスクの停止に応答してバリア同期
    の動作に入った後、バリア同期ポイントを構成しないブ
    レークポイントに基づくタスクの停止が発生するとき
    に、該ブレークポイントを無視してマルチタスクプログ
    ラムの実行を再開させる実行手段を備えることを、 特徴とするデバッグ装置。
  5. 【請求項5】 マルチタスクプログラムを処理対象とす
    るデバッグ方法において、 タスクに設定される複数のブレークポイントを1つのバ
    リア同期ポイントとして、該バリア同期ポイントを1つ
    設定する第1の処理過程と、 上記ブレークポイントに基づくタスクの停止が発生する
    ときに、上記バリア同期ポイント配下の存在する全ての
    上記ブレークポイントに基づくタスクの停止が完了した
    のか否かを判断する第2の処理過程と、 第2の処理過程で未完了を判断するときに、その判断対
    象となった停止タスクをサスペンド状態にしてから、マ
    ルチタスクプログラムの実行を再開させる第3の処理過
    程と、 第2の処理過程で完了を判断するときに、サスペンド状
    態に設定したタスクを実行可能状態に戻す第4の処理過
    程とを備えることを、 特徴とするデバッグ方法。
  6. 【請求項6】 マルチタスクプログラムを処理対象とす
    るデバッグ方法において、 タスクに設定される複数のブレークポイントを1つのバ
    リア同期ポイントとして、該バリア同期ポイントを複数
    設定する第1の処理過程と、 最初にタスクを停止させた上記ブレークポイントの属す
    るバリア同期ポイントを特定する第2の処理過程と、 上記ブレークポイントに基づくタスクの停止が発生する
    ときに、第2の処理過程で特定したバリア同期ポイント
    を判断対象として、該バリア同期ポイント配下の存在す
    る全ての上記ブレークポイントに基づくタスクの停止が
    完了したのか否かを判断する第3の処理過程と、 第3の処理過程で未完了を判断するときに、その判断対
    象となった停止タスクをサスペンド状態にしてから、マ
    ルチタスクプログラムの実行を再開させる第4の処理過
    程と、 第3の処理過程で完了を判断するときに、サスペンド状
    態に設定したタスクを実行可能状態に戻す第5の処理過
    程とを備えることを、 特徴とするデバッグ方法。
  7. 【請求項7】 マルチタスクプログラムを処理対象とす
    るデバッグ装置の実現に用いられるプログラムが格納さ
    れるプログラム記録媒体において、 タスクに設定される複数のブレークポイントを1つのバ
    リア同期ポイントとして、該バリア同期ポイントを1つ
    設定する設定処理と、 上記ブレークポイントに基づくタスクの停止が発生する
    ときに、上記バリア同期ポイント配下の存在する全ての
    上記ブレークポイントに基づくタスクの停止が完了した
    のか否かを判断する判断処理と、 上記判断処理で未完了を判断するときに、その判断対象
    となった停止タスクをサスペンド状態にしてから、マル
    チタスクプログラムの実行を再開させる再開処理と、 上記判断処理で完了を判断するときに、サスペンド状態
    に設定したタスクを実行可能状態に戻す制御処理とをコ
    ンピュータに実行させるプログラムが格納されること
    を、 特徴とするプログラム記録媒体。
  8. 【請求項8】 マルチタスクプログラムを処理対象とす
    るデバッグ装置の実現に用いられるプログラムが格納さ
    れるプログラム記録媒体において、 タスクに設定される複数のブレークポイントを1つのバ
    リア同期ポイントとして、該バリア同期ポイントを複数
    設定する設定処理と、 最初にタスクを停止させた上記ブレークポイントの属す
    るバリア同期ポイントを特定する特定処理と、 上記ブレークポイントに基づくタスクの停止が発生する
    ときに、上記特定処理で特定するバリア同期ポイントを
    判断対象として、該バリア同期ポイント配下の存在する
    全ての上記ブレークポイントに基づくタスクの停止が完
    了したのか否かを判断する判断処理と、 上記判断処理で未完了を判断するときに、その判断対象
    となった停止タスクをサスペンド状態にしてから、マル
    チタスクプログラムの実行を再開させる再開処理と、 上記判断処理で完了を判断するときに、サスペンド状態
    に設定したタスクを実行可能状態に戻す制御処理とをコ
    ンピュータに実行させるプログラムが格納されること
    を、 特徴とするプログラム記録媒体。
JP31622099A 1999-11-08 1999-11-08 デバッグ装置及び方法並びにプログラム記録媒体 Expired - Fee Related JP3571976B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP31622099A JP3571976B2 (ja) 1999-11-08 1999-11-08 デバッグ装置及び方法並びにプログラム記録媒体
US09/620,077 US6718484B1 (en) 1999-11-08 2000-07-20 Debugging method and apparatus for multitask programs and recording medium storing a program realizing the debugging method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP31622099A JP3571976B2 (ja) 1999-11-08 1999-11-08 デバッグ装置及び方法並びにプログラム記録媒体

Publications (2)

Publication Number Publication Date
JP2001134466A true JP2001134466A (ja) 2001-05-18
JP3571976B2 JP3571976B2 (ja) 2004-09-29

Family

ID=18074652

Family Applications (1)

Application Number Title Priority Date Filing Date
JP31622099A Expired - Fee Related JP3571976B2 (ja) 1999-11-08 1999-11-08 デバッグ装置及び方法並びにプログラム記録媒体

Country Status (2)

Country Link
US (1) US6718484B1 (ja)
JP (1) JP3571976B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7216346B2 (en) 2002-12-31 2007-05-08 International Business Machines Corporation Method and apparatus for managing thread execution in a multithread application
JP2008269579A (ja) * 2007-03-27 2008-11-06 Toshiba Corp マルチタスク処理装置およびその方法
WO2012127534A1 (ja) * 2011-03-23 2012-09-27 富士通株式会社 バリア同期方法、バリア同期装置及び演算処理装置

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3810631B2 (ja) * 2000-11-28 2006-08-16 富士通株式会社 情報処理プログラムを記録した記録媒体
US7398519B2 (en) * 2001-11-30 2008-07-08 International Business Machines Corporation Inheritance breakpoints for use in debugging object-oriented computer programs
US7644394B2 (en) * 2001-11-30 2010-01-05 International Business Machines Corporation Object-oriented creation breakpoints
US9003376B2 (en) * 2002-08-09 2015-04-07 Texas Instruments Incorporated Software breakpoints with tailoring for multiple processor shared memory or multiple thread systems
JP4403794B2 (ja) * 2003-02-28 2010-01-27 株式会社デンソー 制御プログラムの検査方法及び検査装置及び検査プログラム
US7493615B2 (en) * 2003-05-01 2009-02-17 Sun Microsystems, Inc. Apparatus and method for synchronizing multiple threads in an out-of-order microprocessor
US7383539B2 (en) * 2003-09-18 2008-06-03 International Business Machines Corporation Managing breakpoints in a multi-threaded environment
US20050229163A1 (en) * 2004-04-08 2005-10-13 International Business Machines Corporation Thread-scoped breakpoints
US7353427B2 (en) * 2004-04-08 2008-04-01 International Business Machines Corporation Method and apparatus for breakpoint analysis of computer programming code using unexpected code path conditions
DE102004062852A1 (de) * 2004-12-27 2006-07-06 Siemens Ag Steuerung einer Maschine mit Debuggfunktionalität
US7716031B2 (en) * 2005-02-25 2010-05-11 Coware, Inc. Interface converter for unified view of multiple computer system simulations
US7742905B2 (en) 2005-02-25 2010-06-22 Coware, Inc. Method and system for dynamically adjusting speed versus accuracy of computer platform simulation
US7770170B2 (en) * 2005-07-12 2010-08-03 Microsoft Corporation Blocking local sense synchronization barrier
FR2894694A1 (fr) * 2005-12-09 2007-06-15 St Microelectronics Sa Procede et dispositif de mise au point d'un programme execute par un processeur multitache
GB0613289D0 (en) * 2006-07-04 2006-08-16 Imagination Tech Ltd Synchronisation of execution threads on a multi-threaded processor
US7925791B2 (en) * 2006-07-17 2011-04-12 The Math Works, Inc. Recoverable error detection for concurrent computing programs
US20080127118A1 (en) * 2006-10-02 2008-05-29 Bulent Kasman Method and system for dynamic patching of software
US7865778B2 (en) * 2007-02-20 2011-01-04 International Business Machines Corporation Method and system for detecting synchronization errors in programs
CN101295279B (zh) * 2007-04-29 2012-05-09 国际商业机器公司 多线程环境下的调试程序的方法和系统
US9009020B1 (en) * 2007-12-12 2015-04-14 F5 Networks, Inc. Automatic identification of interesting interleavings in a multithreaded program
US8739133B2 (en) 2007-12-21 2014-05-27 International Business Machines Corporation Multi-threaded debugger support
JP5022262B2 (ja) * 2008-02-12 2012-09-12 株式会社アドバンテスト デバッグ中にツールを使用可能な試験システム及び方法
US20100281469A1 (en) * 2009-04-30 2010-11-04 Nec Laboratories America, Inc. Symbolic predictive analysis for concurrent programs
JP2011070256A (ja) * 2009-09-24 2011-04-07 Toshiba Corp デバッガおよびプログラム
DE102009050161A1 (de) * 2009-10-21 2011-04-28 Siemens Aktiengesellschaft Verfahren und Vorrichtung zum Testen eines Systems mit zumindest einer Mehrzahl von parallel ausführbaren Softwareeinheiten
JP5994601B2 (ja) * 2012-11-27 2016-09-21 富士通株式会社 並列計算機、並列計算機の制御プログラム及び並列計算機の制御方法
US9218223B2 (en) 2013-08-13 2015-12-22 Qualcomm Incorporated Barrier synchronization with dynamic width calculation
GB2580428B (en) * 2019-01-11 2021-08-25 Graphcore Ltd Handling exceptions in a machine learning processor
CN112306845B (zh) * 2019-07-31 2024-06-11 腾讯科技(深圳)有限公司 一种并发测试方法、装置、设备及介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01114946A (ja) * 1987-10-28 1989-05-08 Nec Corp 同期型デバグ方式
JPH03113648A (ja) * 1989-09-28 1991-05-15 Mitsubishi Electric Corp プログラムデバツグ方式
JPH03244040A (ja) * 1990-02-21 1991-10-30 Nec Corp 並列走行型デバグ方式
JPH0588933A (ja) * 1991-09-27 1993-04-09 Hitachi Ltd デバツグ機能を有する並列処理システム
JPH08185340A (ja) * 1994-12-27 1996-07-16 Toshiba Corp 並列プログラムデバッグ方法および並列プログラム可視化装置
JPH09259002A (ja) * 1996-03-22 1997-10-03 Hitachi Ltd デバッグ支援装置
JPH1049507A (ja) * 1996-07-31 1998-02-20 Fujitsu Ltd 並列計算機
JPH10187486A (ja) * 1996-12-27 1998-07-21 Fujitsu Ltd マルチプロセッサシステムのプログラムデバッグ方法
JPH10269185A (ja) * 1997-03-25 1998-10-09 Hitachi Ltd バリア同期方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2509811B2 (ja) 1986-06-25 1996-06-26 株式会社日立製作所 タスク管理方式
JPH07120302B2 (ja) 1989-05-16 1995-12-20 日本電気株式会社 タスクデバッグ方式
US5365228A (en) * 1991-03-29 1994-11-15 International Business Machines Corporation SYNC-NET- a barrier synchronization apparatus for multi-stage networks
JPH04314141A (ja) 1991-04-12 1992-11-05 Nec Software Ltd マルチタスク制御方法とその機構
US5581778A (en) * 1992-08-05 1996-12-03 David Sarnoff Researach Center Advanced massively parallel computer using a field of the instruction to selectively enable the profiling counter to increase its value in response to the system clock
US5721921A (en) * 1995-05-25 1998-02-24 Cray Research, Inc. Barrier and eureka synchronization architecture for multiprocessors
US5768538A (en) * 1996-04-30 1998-06-16 International Business Machines Corporation Barrier synchronization method wherein members dynamic voting controls the number of synchronization phases of protocols and progression to each new phase

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01114946A (ja) * 1987-10-28 1989-05-08 Nec Corp 同期型デバグ方式
JPH03113648A (ja) * 1989-09-28 1991-05-15 Mitsubishi Electric Corp プログラムデバツグ方式
JPH03244040A (ja) * 1990-02-21 1991-10-30 Nec Corp 並列走行型デバグ方式
JPH0588933A (ja) * 1991-09-27 1993-04-09 Hitachi Ltd デバツグ機能を有する並列処理システム
JPH08185340A (ja) * 1994-12-27 1996-07-16 Toshiba Corp 並列プログラムデバッグ方法および並列プログラム可視化装置
JPH09259002A (ja) * 1996-03-22 1997-10-03 Hitachi Ltd デバッグ支援装置
JPH1049507A (ja) * 1996-07-31 1998-02-20 Fujitsu Ltd 並列計算機
JPH10187486A (ja) * 1996-12-27 1998-07-21 Fujitsu Ltd マルチプロセッサシステムのプログラムデバッグ方法
JPH10269185A (ja) * 1997-03-25 1998-10-09 Hitachi Ltd バリア同期方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7216346B2 (en) 2002-12-31 2007-05-08 International Business Machines Corporation Method and apparatus for managing thread execution in a multithread application
JP2008269579A (ja) * 2007-03-27 2008-11-06 Toshiba Corp マルチタスク処理装置およびその方法
WO2012127534A1 (ja) * 2011-03-23 2012-09-27 富士通株式会社 バリア同期方法、バリア同期装置及び演算処理装置

Also Published As

Publication number Publication date
JP3571976B2 (ja) 2004-09-29
US6718484B1 (en) 2004-04-06

Similar Documents

Publication Publication Date Title
JP3571976B2 (ja) デバッグ装置及び方法並びにプログラム記録媒体
US8327336B2 (en) Enhanced thread stepping
US8136097B2 (en) Thread debugging device, thread debugging method and information storage medium
US10191835B2 (en) Multi-threaded debugger support
KR101325229B1 (ko) 비대칭 멀티프로세서 장치의 진단연산 수행
JP4222370B2 (ja) デバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラム
JP3965142B2 (ja) コンピュータ・プログラムをデバックするための方法、システムおよびソフトウェア・プロダクト
US6981243B1 (en) Method and apparatus to debug a program from a predetermined starting point
CN109726135B (zh) 一种多核调试方法、装置及计算机可读存储介质
US20120331351A1 (en) N-way runtime interoperative debugging
KR102025078B1 (ko) 단일 스텝 실행을 이용한 코드 진단
US20040268317A1 (en) Method and apparatus for controlling execution of a child process generated by a modified parent process
JPH07225693A (ja) 異なるアドレス空間にわたってスレッド事象を処理する方法
CN111124792A (zh) 一种多核调试方法、装置及存储介质
JP2000066904A (ja) マルチタスク制御方法及び記憶媒体
US20040168157A1 (en) System and method for creating a process invocation tree
US20170039124A1 (en) Method and apparatus for interception of synchronization objects in graphics application programming interfaces for frame debugging
JPH02294739A (ja) 障害検出方式
TWI736564B (zh) 用於診斷執行指令串流的處理器之方法、設備、及系統
US7249348B2 (en) Non-interfering status inquiry for user threads
JP2010015364A (ja) マルチプロセッサシステム及び情報処理装置
JPS62290942A (ja) デバツガ起動方式
JP3075359B2 (ja) プログラムデバッグ開始処理方式
JPH06274372A (ja) 並列分岐トレースシステム
JPH04321139A (ja) デバッグ支援装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040413

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040528

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040625

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20080702

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090702

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100702

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100702

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110702

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110702

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120702

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20120702

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130702

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees