JPH11338733A - デバッグ装置及び記録媒体 - Google Patents

デバッグ装置及び記録媒体

Info

Publication number
JPH11338733A
JPH11338733A JP11053392A JP5339299A JPH11338733A JP H11338733 A JPH11338733 A JP H11338733A JP 11053392 A JP11053392 A JP 11053392A JP 5339299 A JP5339299 A JP 5339299A JP H11338733 A JPH11338733 A JP H11338733A
Authority
JP
Japan
Prior art keywords
unit
sequential execution
program
execution unit
instruction
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.)
Pending
Application number
JP11053392A
Other languages
English (en)
Inventor
Fumitaka Tamura
文隆 田村
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 JP11053392A priority Critical patent/JPH11338733A/ja
Publication of JPH11338733A publication Critical patent/JPH11338733A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 プログラム中の誤りを効率良くデバッグする
ことができるデバッグ装置及び記録媒体を提供するこ
と。 【解決手段】 マルチスレッドプログラムを対象とする
デバッグ装置1において、スレッド分類部121がスレ
ッドを排他実行スレッドとそうでないスレッドに分類
し、デバッグコマンドとしてスレッドに個別に与え得る
ものとプログラム全体に与え得るものとを設け、排他実
行スレッドに指定されたものは同時に実行させないよう
に制御することにより、複数のスレッドの実行を、デバ
ッグ作業者の希望する順序で実行することが可能とな
り、従ってデバッグ作業者は、タイミングに起因するバ
グの再現を常に行うことができるようになる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はデバッグ装置、特に
例えばマルチスレッドプログラムを含む並列プログラム
のデバッグを効率良く行うことのできるデバッグ装置と
デバッグをコンピュータに実行させるためのプログラム
が記録された記憶媒体に関する。
【0002】
【従来の技術】従来より、プログラム中に含まれる誤り
(バグ)をプログラマーが取る作業(デバッグ)を補助
する装置として、デバッグ装置なる装置が使われてき
た。デバッグ装置は、デバッグ作業者からの指示に基づ
きプログラムの状態を制御することができる。
【0003】例えば、デバッグ装置を用いて、デバッグ
対象のプログラムを実行する際、そのソースプログラム
中のある行に、デバッグ作業者がブレークポイントを指
定しておくと、プログラムがその行を実行しようとする
直前に、デバッグ装置は、デバッグ対象のプログラムの
実行状態を停止状態にし、デバッグ作業者の指示を待
つ。この時点で、デバッグ作業者はデバッグ装置を介し
て、デバッグ対象のプログラムの状態(プログラムが次
に実行しようとしている位置や各種の変数値等)を調査
できる。又、デバッグ作業者は、この時点で、デバッグ
対象のプログラムの実行再開命令や、単位実行命令(ス
テップ命令)等のデバッグコマンドをデバッグ装置に与
えることができる。例えば、デバッグ作業者がステップ
命令をデバッグ装置に指示すると、デバッグ装置は、デ
バッグ対象のプログラムを一旦実行状態に戻し、デバッ
グ対象のプログラムが一つの命令を実行し終えた時点
で、再び、これを停止状態にし、デバッグ作業者にデバ
ッグ対象のプログラムの状態を示す。ステップ命令を繰
り返してデバッグ装置に指示すれば、デバッグ作業者は
デバッグ対象のプログラムがいかにしてソースプログラ
ム内を実行していくかの過程を追跡することができる。
【0004】このようにして、デバッグ装置を利用する
と、逐次プログラムのデバッグ効率は非常に高くなる。
【0005】一方、並列プログラムは、逐次プログラム
に比較して、タイミングに起因する誤りを含む可能性が
非常に大きい。並列プログラムの一つとしてマルチスレ
ッドプロラムを例にとる。例えば、二つのスレッドを有
するマルチスレッドプロラムにおいて、両スレッドに共
有変数が存在する場合、一方のスレッドが、その共有変
数に書き込みを行い、他方のスレッドが読み込みを行う
とする。この場合、しばしば、書き込み、読み込みの実
行順序が設計者の期待するものと異なってしまうことが
ある。
【0006】上記のような、マルチスレッドプログラム
のタイミングに起因するバグを取り除くために、従来の
デバッグ装置では、次の様な機能をデバッグ作業者に提
供していた。
【0007】まず、デバッグ装置がプログラムを実行し
ている任意の時点で、デバッグ作業者は存在するスレッ
ドのリストを見ることができる。このリストの中から、
デバッグ作業者は一つのスレッドを選び、それをカレン
トスレッドに指定する。それ以降、カレントスレッドが
変更される(デバッグ作業者がデバッグ装置に変更を指
示する場合やデバッグ装置が自動的に変更する場合があ
る)迄、そのカレントスレッドが、デバッグ作業者によ
るステップ命令等のデバッグコマンドの対象となる。即
ち、例えば、ステップ命令をデバッグ作業者が指示する
と、カレントスレッドを含む総てのスレッドの実行が再
開される。その後、カレントスレッドが、一命令の実行
を終了すると、その直後に総てのスレッドの実行が停止
させられる。但し、カレントスレッド以外のスレッド
は、実行が再開されてから、停止する迄にどれだけすす
むかは、デバッグ作業者には分からない。
【0008】図20は従来のデバッグ装置をグラフィカ
ルユーザインターフェイス(GUI)を用いて実現した
場合の該装置画面の一例を示す図である。同図におい
て、コントロールパネル2001はカレントスレッドの
実行をデバッグ作業者が制御するためのパネルであり、
プログラム表示ウインドウ2002は、カレントスレッ
ドの実行位置をデバッグ作業者に示すウインドウであ
る。コントロールパネル2001には、停止したカレン
トスレッドの実行を再開するためのContボタン20
03、停止したカレントスレッドを一命令だけ実行させ
るための『StepIn』ボタン2004、停止したカ
レントスレッドを一命令だけ実行する際、関数呼び出し
に関しては、それを一命令として実行するための『St
ep Over』ボタン2005、停止したカレントス
レッドの実行を再開し、現在の関数の実行を終えたとき
に停止させるための『Step Out』ボタン200
6、プログラム表示ウインドウ2002に表示するカレ
ントスレッドのスタックフレームを一つ上げるための
『Up』ボタン2007、プログラム表示ウインドウ2
002に表示するカレントスレッドのスタックフレーム
を一つ下げるための『Down』ボタン2008等が含
まれる。
【0009】一方、プログラム表示ウインドウ2002
では、カレントスレッドの現在のスタックフレームに対
応するソースプログラム2009が表示されている。位
置ポインタ2010は、カレントスレッドが次に実行す
る位置を示すためのポインタであり、ブレークポイント
ポインタ2011はユーザが設定したブレークポイント
を示すためのポインタである。
【0010】従来のデバッグ装置では、カレントスレッ
ドの切替えは、その為のダイアログや、スレッド状態表
示ウインドウ等を用いてデバッグ作業者に指定させる場
合が多い。図20に示された状態では、カレントスレッ
ドは、関数f()内のステートメント「a=g();」
を次に実行する状態で停止している。この状態でデバッ
グ作業者がStep Inボタン2004を押すと、カ
レントスレッド、及びその他のスレッドの実行が再開さ
れる。カレントスレッドが一行の実行を終えると、デバ
ッグ装置はカレントスレッド、及び、その他のスレッド
の実行を総て停止させる。又、カレントスレッドの実行
中に、あるスレッドがブレークポインタ2011の付け
られた行に達すると、総てのスレッドの実行が停止し、
デバッグ作業者が次の命令をコントロールパネル200
1を用いてカレントスレッドに与えられる状態になる。
ブレークポイントに達したスレッドがStep Inボ
タン2004ボタンが押下される前のカレントスレッド
と異なる場合には、ブレークポイントに達したスレッド
が新しくカレントスレッドになるという仕様を採り入れ
ているデバッグ装置が多い。又、カレントスレッドの実
行中に、そのカレントスレッドがサスペンドし、実行継
続ができなくなった場合には、その他のスレッドがデバ
ッグ装置によって自動的に選択されてカレントスレッド
になるという仕様を採り入れているデバッグ装置が多
い。
【0011】上記従来のデバッグ装置では、デバッグ作
業者が特定のスレッドをカレントスレッドに指定し、そ
れに対してステップ実行を繰り返している時、もし、そ
の他のスレッドが偶然、バグの原因となるタイミングで
実行された場合には、誤りの発見をすることは可能であ
る。
【0012】しかしながら、デバッグ作業者は非カレン
トスレッドの実行のタイミングを任意に定めることがで
きないため、誤りを起こす状況を自由に再現させること
ができない。複数のスレッドの実行タイミングをデバッ
グ作業者が制御し得るためには、ステップ実行の都度、
複数のスレッドに『suspend』命令や『resu
me』命令を与える必要があり、非常に煩雑な操作を強
いられることになる。又、カレントスレッドがデバッグ
作業者の意図しないときに切り替わることがあると、デ
バッグ作業者は混乱を来たす恐れがある。
【0013】
【発明が解決しようとする課題】上述したように、従来
のデバッグ装置においては、デバッグ作業者は非カレン
トスレッドの実行のタイミングを任意に定めることがで
きないため、誤りを起こす状況を自由に再現させること
ができないという問題点があった。
【0014】また、複数のスレッドの実行タイミングを
デバッグ作業者が制御し得るためには、ステップ実行の
都度、複数のスレッドに『suspend』命令や『r
esume』命令を与える必要があり、非常に煩雑な操
作を強いられることになるという問題点があった。
【0015】また、カレントスレッドがデバッグ作業者
の意図しないときに切り替わることがある場合、デバッ
グ作業者は混乱を来たす恐れがあるという点も問題とな
っていた。
【0016】なお、上記の問題点は、マルチスレッドプ
ログラムの場合に対するものを例示的に挙げたものであ
り、並列プログラム、又は、並列プログラム一般に同様
の問題点が指摘される。
【0017】本発明は、このような従来技術上の問題点
を解決するためになされたものであり、効率的なデバッ
グを可能とするデバッグ装置及び記録媒体を提供するこ
とを各請求項に記載された発明の共通した目的とする。
【0018】さらに、各請求項に記載された発明は、複
数のスレッドの実行を、デバッグ作業者の希望する順序
で実行せしめ、タイミングに起因するバグの再現を容易
に行うことを可能とするデバッグ装置及び記録媒体を提
供することを目的とする。
【0019】各請求項に記載された発明ごとには、以下
の課題が目的として挙げられる。
【0020】請求項1に係る本願発明は、逐次実行単位
間の実行のタイミングを任意に制御することにより、よ
り効率的なデバッグを可能とするデバッグ装置の提供を
目的とする。
【0021】請求項2に係る本願発明は、逐次実行単位
間の再開、停止のタイミングを任意に制御することによ
り、より効率的なデバッグを可能とするデバッグ装置を
提供することを目的とする。
【0022】請求項3に係る本願発明は、請求項1及び
2記載の発明の目的とすることろに加え、逐次実行単位
の実行動作の排他性・従属性の度合いに応じて異なる制
御をすることにより、より効率的なデバッグを可能とす
るデバッグ装置を提供することを目的とする。
【0023】請求項4に係る本願発明は、請求項3記載
の発明の目的とするところに加え、逐次実行単位に応じ
てデバッグ中に異なる制御をすることにより、より効率
的なデバッグを可能とするデバッグ装置を提供すること
を目的とする。
【0024】請求項5に係る本願発明は、請求項3及び
4記載の発明の目的とするところに加え、逐次実行単位
の実行動作の排他性・従属性の度合いに応じてデバッグ
制御を行うことにより、より効率的なデバッグを可能と
するデバッグ装置を提供することを目的とする。
【0025】請求項6に係る本願発明は、請求項3及び
4記載の発明の目的とするところに加え、逐次実行単位
の実行動作の着目性の度合いに応じてデバッグ制御を行
うことにより、より効率的なデバッグを可能とするデバ
ッグ装置を提供することを目的とする。
【0026】請求項7に係る本願発明は、請求項3及び
4記載の発明の目的とするところに加え、逐次実行単位
の実行動作の表示性の度合いに応じてデバッグ制御を行
うことにより、より効率的なデバッグを可能とするデバ
ッグ装置を提供することを目的とする。
【0027】請求項8に係る本願発明は、デバッグ制御
において特定の逐次実行単位のみを対象とする制御指示
と、プログラム全体を対象とする制御指示を分けること
により、特定の逐次実行単位にのみ注目してデバッグ制
御することで、より効率的なデバッグを可能にするデバ
ッグ装置を提供することを目的とする。
【0028】請求項9乃至11に係る本願発明は、請求
項1及び2に係る本願発明の目的とするところ及び請求
項8に係る本願発明の目的とするところを同時に達成す
ること、即ち、全体のプログラム/特定の逐次実行単位
を対象とする一般/特定制御指示により他の排他的逐次
実行単位の実行を停止させる間に微妙なタイミングの制
御をすることにより、より効率的なデバッグを可能にす
るデバッグ装置を提供することを目的とする。
【0029】請求項12に係る本願発明は、請求項9に
係る本願発明の目的とするところに加えて、逐次実行単
位の動作状態をデバッグ制御に的確に反映させること
で、実際には起こり得ないタイミングの実行を回避し、
より効率的なデバッグを可能にするデバッグ装置を提供
することを目的とする。
【0030】請求項13に係る本願発明は、請求項9に
係る本願発明の目的とするところに加えて、逐次実行単
位の実行の微妙なタイミングを制御することにより、よ
り効率的なデバッグを可能にするデバッグ装置を提供す
ることを目的とする。
【0031】請求項14に係る本願発明は、そのプログ
ラムに含まれるモジュールをその属性に応じてデバッグ
制御において差別的に取り扱うことにより、より効率的
なデバッグを可能にするデバッグ装置を提供することを
目的とする。
【0032】請求項15に係る本願発明は、請求項14
記載の発明の目的とするところに加えて、そのモジュー
ルの属性をデバッグ作業者が変更することにより、より
効率的なデバッグを可能にするデバッグ装置を提供する
ことを目的とする。
【0033】請求項16に係る本願発明は、着目の対象
でないモジュールに対する容易な実行制御を可能にする
ことにより、より効率的なデバッグを可能とするデバッ
グ装置を提供することを目的とする。
【0034】請求項17に係る本願発明は、請求項1及
び2記載の発明の目的とするところと請求項16記載の
発明の目的とするところを同時に達成することを可能に
するデバッグ装置を提供することを目的とする。
【0035】請求項18および19に係る本願発明は、
逐次実行単位の実行のタイミングを制御した上でデバッ
グ制御の自動実行をすることにより、さらに効率的なデ
バッグ及び自動テストを可能にするデバッグ装置を提供
することを目的とする。
【0036】請求項20乃至22に係る本願発明は、並
列プログラムをデバッグ装置を用いて実行する際に、各
逐次実行単位の動作状態を並列的に可視化することを可
能にするデバッグ装置を提供することを目的とする。
【0037】請求項23に係る本願発明は、逐次実行単
位の動作状態を、デバッグ制御の入力手段の表示形態に
反映させることにより、さらに効率的なデバッグを可能
にするデバッグ装置を提供することを目的とする。
【0038】請求項24に係る本願発明は、請求項23
記載の発明の目的とするところに加えて、モジュールの
呼出軌跡を確認しながらデバッグ作業を進めることを可
能にするデバッグ装置を提供することを目的とする。
【0039】さらに、請求項25乃至48に係る本発明
は、以上の課題を同様に解決し得る機能をコンピュータ
において実現するプログラムが記録された記録媒体の提
供を目的とする。
【0040】
【課題を解決するための手段】かかる目的を達成するた
めに、請求項1記載の発明のデバッグ装置は、並列して
実行される逐次実行単位を含むプログラムについてのデ
バッグの制御を行う制御手段と、前記逐次実行単位の
内、特定の逐次実行単位のみについて前記制御手段を動
作させる対象特定制御手段とを具備する。
【0041】請求項2記載の発明は、請求項1記載の発
明のデバッグ装置において、前記対象特定制御手段が、
デバッグ制御の対象となる特定の逐次実行単位のみにつ
いて実行の再開または停止を行わせる手段をさらに具備
する。
【0042】請求項3記載の本発明は、請求項1または
2記載のデバッグ装置において、前記対象特定制御手段
は、前記各逐次実行単位の分類を指定するための手段
と、前記指定された分類を表す分類情報を入力するため
の手段と、前記入力された分類情報に従ってデバッグ制
御を行う手段とを具備する。
【0043】請求項4記載の本発明は、請求項3記載の
デバッグ装置において、前記対象特定制御手段は、前記
各逐次実行単位の分類のための規則を記録する手段と、
前記記録された規則を用いて前記各逐次実行単位の初期
の分類を定める手段と、前記分類を変更するための手段
とをさらに具備する。
【0044】請求項5記載の本発明は、請求項3または
4記載のデバッグ装置において、前記分類情報は、デバ
ッグ装置が前記逐次実行単位を制御する形態に関する情
報であることを特徴とする。
【0045】請求項6記載の本発明は、請求項3または
4記載のデバッグ装置において、前記分類情報は、前記
逐次実行単位についてデバッグ作業者が着目する程度に
関する情報であることを特徴とする。
【0046】請求項7記載の本発明は、請求項3または
4記載のデバッグ装置において、前記分類情報は、デバ
ッグ装置が前記逐次実行単位の状態を表示させる形態に
関する情報であることを特徴とする。
【0047】請求項8記載の発明は、並列して実行され
る逐次実行単位を含むプログラムをデバッグするデバッ
グ装置において、前記デバッグ装置は、前記プログラム
の状態を制御する指示を入力するための手段を具備し、
前記指示は、前記プログラムの状態のうち、特定の逐次
実行単位に関する実行状態のみを対象とする特定制御指
示と、前記プログラムの状態全体を対象とする一般制御
指示とを含むことを特徴とする。
【0048】請求項9記載の発明のデバッグ装置は、デ
バッグ対象のプログラムの状態全体を対象とする制御を
行うための制御指示を入力する一般制御指示入力手段
と、前記デバッグ対象のプログラムに含まれる特定の逐
次実行単位を対象として、該逐次実行単位の実行状態の
制御を行うための制御指示を入力する特定制御指示入力
手段と、前記デバッグ対象のプログラムに含まれる各逐
次実行単位を分類する分類手段と、前記一般制御指示入
力手段もしくは特定制御指示入力手段にプログラムの状
態を制御するための指示が入力された場合には、前記分
類手段による分類に基づく制御情報に従ってプログラム
の状態の制御を行う制御手段とを具備する。
【0049】請求項10記載の発明のデバッグ装置は、
デバッグ対象のプログラムの状態全体を対象とする制御
を行うための制御指示を入力する一般制御指示入力手段
と、前記デバッグ対象のプログラムに含まれる各逐次実
行単位を、被制御形態に基づいて排他的逐次実行単位、
並立的逐次実行単位及び継続的逐次実行単位のいずれか
に分類する分類手段と、前記一般制御指示入力手段に逐
次実行単位の実行を停止する指示が入力された場合に
は、前記分類手段により排他的逐次実行単位及び並立的
逐次実行単位に分類された逐次実行単位のうち実行中の
逐次実行単位の実行を停止する停止手段と、前記一般制
御指示入力手段に逐次実行単位の実行を再開する指示が
入力された場合には、前記分類手段により排他的逐次実
行単位及び並立的逐次実行単位に分類された逐次実行単
位のうち停止された逐次実行単位の実行を再開する再開
手段とを具備する。
【0050】請求項11記載の発明のデバッグ装置は、
デバッグ対象のプログラムを構成する逐次実行単位のう
ち特定の逐次実行単位を対象として、該逐次実行単位の
実行状態の制御を行うための制御指示を入力する特定制
御指示入力手段と、前記デバッグ対象のプログラムに含
まれる各逐次実行単位を、被制御形態に基づいて排他的
逐次実行単位、並立的逐次実行単位及び継続的逐次実行
単位のいずれかに分類する分類手段と、前記特定制御指
示入力手段に逐次実行単位の実行を停止する指示が入力
された場合には、前記分類手段により並立的逐次実行単
位に分類された逐次実行単位のうち実行中の総ての逐次
実行単位及び前記分類手段により排他的逐次実行単位に
分類された逐次実行単位のうち前記特定制御指示入力手
段によって第1の指定がされた逐次実行単位の実行を停
止する停止手段と、前記特定制御指示入力手段に逐次実
行単位の実行を再開する指示が入力された場合には、前
記分類手段により並立的逐次実行単位に分類された逐次
実行単位の総て、及び排他的逐次実行単位に分類された
逐次実行単位のうち前記特定制御指示入力手段によって
第2の指定がされた逐次実行単位の実行を再開する再開
手段とを具備する。
【0051】請求項12記載の発明は、請求項9記載の
デバッグ装置において、前記制御手段は、前記デバッグ
対象のプログラムに含まれる各逐次実行単位の状態指標
に対応させて該逐次実行単位の実行状態の制御を行う手
段を具備するものである。
【0052】請求項13記載の発明は、内在的停止命令
を含む命令群を逐次実行する特定の逐次実行単位を含む
プログラムのデバッグ装置において、前記特定の逐次実
行単位に対する単位実行指示を入力するための特定制御
指示入力手段と、前記特定制御指示入力手段に第1の単
位実行指示が入力されたときに前記特定の逐次実行単位
が次に実行すべき命令が前記内在的停止命令である場合
には前記特定の逐次実行単位を実行停止状態とし、前記
特定制御指示入力手段に前記実行停止状態とされた逐次
実行単位に対しての第2の単位実行指示が入力されると
該逐次実行単位が前記内在的停止命令の次の命令を実行
可能な状態にする手段とを具備する。
【0053】請求項14記載の発明は、命令群を有する
モジュールが定義されるデバッグ対象のプログラムに含
まれる各モジュールを着目形態において分類する分類手
段と、前記分類手段による着目形態に応じたデバッグ制
御を行う手段とを具備する。
【0054】請求項15記載の発明は、請求項14記載
のデバッグ装置において、前記分類手段は、前記モジュ
ールを分類のための規則を用いて分類する手段と、外部
からの指示を入力するための手段と、前記入力された指
示に基づいて前記モジュールの分類を更新する手段とを
具備する。
【0055】請求項16記載の発明のデバッグ装置は、
デバッグ対象のプログラム内のモジュールで定義される
命令群に対する単位実行指示が入力される制御指示入力
手段と、前記各モジュールを着目属性に応じて着目モジ
ュール及び非着目モジュールに分類する分類手段と、前
記制御指示入力手段に前記非着目モジュール内で定義さ
れた命令群への単位実行指示が入力された場合には該命
令群全体を実行する手段とを具備する。
【0056】請求項17記載の発明は、請求項1または
2記載のデバッグ装置において、デバッグ対象のプログ
ラムに含まれる並列して実行される逐次実行単位が実行
する一、又は、複数の命令群を有するモジュールを分類
するモジュール分類手段と、前記各逐次実行単位を、前
記モジュール分類手段による分類を考慮して定められる
分類規則に基づいてプログラムの実行時に動的に分類す
る逐次実行単位分類手段と、前記逐次実行単位分類手段
による分類情報に従ってデバッグ制御を行う手段とをさ
らに具備するものである。
【0057】請求項18記載の発明のデバッグ装置は、
並列して実行される逐次実行単位を含むプログラムの動
作を制御するための第1の制御指示群を記録する手段
と、前記制御指示群に従って前記プログラムの動作を制
御することで得られる前記プログラムの第1の動作過程
を記録する動作過程記録手段と、前記動作過程記録手段
に記録された第1の動作過程と同じ、又は、異なる動作
をするように該各逐次実行単位を制御する第2の制御指
示群を生成する手段とを具備する。
【0058】請求項19記載の発明は、請求項18記載
のデバッグ装置において、前記生成された第2の制御指
示群に従って前記プログラムの動作を制御する手段と、
前記実行によって得られる第2の動作過程と前記第1の
動作過程とを比較する手段とをさらに具備してなるもの
である。
【0059】請求項20記載の発明のデバッグ装置は、
デバッグ対象のプログラムに含まれる並列して実行され
る逐次実行単位を属性に応じて分類する分類手段と、前
記分類手段により特定の属性を持つと分類される逐次実
行単位の動作状態を、該逐次実行単位ごとに設けられた
ウインドウに表示する手段と、前記ウインドウごとに、
該ウインドウに対応する逐次実行単位のみを対象とする
第1の制御指示を入力するための手段と、前記プログラ
ム全体を対象とする第2の制御指示を入力するための手
段とを具備する。
【0060】請求項21記載の発明は、請求項20記載
のデバッグ装置において、実行中の逐次実行単位の増減
及び前記分類手段による逐次実行単位の分類の変化に対
応させて前記ウインドウをプログラムの実行時に動的に
増減させる手段をさらに具備してなる。
【0061】請求項22記載の発明のデバッグ装置は、
デバッグ対象のプログラムに含まれる並列して実行され
る逐次実行単位を分類する手段と、前記逐次実行単位ご
とに設けられたウインドウに該逐次実行単位の動作状態
を前記分類に適応させて可視的に表示する手段と、前記
プログラム全体を対象とする第1の制御指示を入力する
ための手段と、前記ウインドウごとに該ウインドウに対
応する逐次実行単位のみを対象とする第2の制御指示を
入力するための手段とを具備してなる。
【0062】請求項23記載の発明のデバッグ装置は、
デバッグ対象のプログラム内の並列実行される逐次実行
単位ごとに設けられたウインドウ画面内に、前記逐次実
行単位に対する前記第2の制御指示を入力するための手
段のための表示を該逐次実行単位の実行状態に適応させ
て行う手段を具備する。
【0063】請求項24記載の発明は、請求項23記載
のデバッグ装置において、前記逐次実行単位ごとに設け
られたウインドウ画面ごとに、前記逐次実行単位が実行
中のモジュールもしくは命令群を表示する手段と、該ウ
インドウに前記モジュールを構成する命令群を呼出す論
理軌跡を表示する手段とをさらに具備する。
【0064】請求項25記載の発明の記録媒体は、並列
して実行される逐次実行単位を含むデバッグ対象プログ
ラムについてのデバッグの制御を行う制御手段と、前記
逐次実行単位のうち特定の逐次実行単位のみについて前
記制御手段を動作させる対象特定制御手段とをコンピュ
ータを機能させるためのプログラムとして記録してなる
ものである。
【0065】請求項26記載の発明の記録媒体は、請求
項25記載の記録媒体において、前記対象特定制御手段
が、デバッグ制御の対象となる特定の逐次実行単位のみ
について実行の再開または停止を行わせる手段をさらに
具備することを特徴とするものである。
【0066】請求項27記載の発明の記録媒体は、請求
項25または26記載の記録媒体において、前記対象特
定制御手段は、前記各逐次実行単位の分類を指定するた
めの手段と、前記指定された分類を表す分類情報を入力
するための手段と、前記入力された分類情報に従ってデ
バッグ制御を行う手段とを具備することを特徴とするも
のである。
【0067】請求項28記載の発明の記録媒体は、請求
項27記載の記録媒体において、前記対象特定制御手段
は、前記各逐次実行単位の分類のための規則を記録する
手段と、前記記録された規則を用いて前記各逐次実行単
位の初期の分類を定める手段と、前記分類を変更するた
めの手段とをさらに具備することを特徴とするものであ
る。
【0068】請求項29記載の発明の記録媒体は、請求
項27または28記載の記録媒体において、前記分類情
報は、前記逐次実行単位を制御する形態に関する情報で
あることを特徴とするものである。
【0069】請求項30記載の発明の記録媒体は、請求
項27または28記載の記録媒体において、前記分類情
報は、前記逐次実行単位についてデバッグ作業者が着目
する程度に関する情報であることを特徴とするものであ
る。
【0070】請求項31記載の発明の記録媒体は、請求
項27または28記載の記録媒体において、前記分類情
報は、前記逐次実行単位の状態を表示させる形態に関す
る情報であることを特徴とするものである。
【0071】請求項32記載の発明の記録媒体は、並列
して実行される逐次実行単位を含むデバッグ対象プログ
ラムの状態を制御する指示を入力するための手段がコン
ピュータを機能させるためのプログラムとして記録さ
れ、前記指示は、前記デバッグ対象プログラムの状態の
うち、特定の逐次実行単位に関する実行状態のみを対象
とする特定制御指示と、前記デバッグ対象プログラムの
状態全体を対象とする一般制御指示とを含むことを特徴
とするものである。
【0072】請求項33記載の発明の記録媒体は、デバ
ッグ対象プログラムの状態全体を対象とする制御を行う
ための制御指示を入力する一般制御指示入力手段と、前
記デバッグ対象プログラムに含まれる特定の逐次実行単
位を対象として、該逐次実行単位の実行状態の制御を行
うための制御指示を入力する特定制御指示入力手段と、
前記デバッグ対象プログラムに含まれる各逐次実行単位
を分類する分類手段と、前記一般制御指示入力手段もし
くは特定制御指示入力手段に前記デバッグ対象プログラ
ムの状態を制御するための指示が入力された場合には、
前記分類手段による分類に基づく制御情報に従って前記
デバッグ対象プログラムの状態の制御を行う制御手段と
をコンピュータを機能させるためのプログラムとして記
録したものである。
【0073】請求項34記載の発明の記録媒体は、デバ
ッグ対象のプログラムの状態全体を対象とする制御を行
うための制御指示を入力する一般制御指示入力手段と、
前記デバッグ対象プログラムに含まれる各逐次実行単位
を、被制御形態に基づいて排他的逐次実行単位、並立的
逐次実行単位及び継続的逐次実行単位のいずれかに分類
する分類手段と、前記一般制御指示入力手段に逐次実行
単位の実行を停止する指示が入力された場合には、前記
分類手段により排他的逐次実行単位及び並立的逐次実行
単位に分類された逐次実行単位のうち実行中の逐次実行
単位の実行を停止する停止手段と、前記一般制御指示入
力手段に逐次実行単位の実行を再開する指示が入力され
た場合には、前記分類手段により排他的逐次実行単位及
び並立的逐次実行単位に分類された逐次実行単位のうち
停止された逐次実行単位の実行を再開する再開手段とを
コンピュータを機能させるためのプログラムとして記録
したものである。
【0074】請求項35記載の発明の記録媒体は、デバ
ッグ対象のプログラムを構成する逐次実行単位のうち特
定の逐次実行単位を対象として、該逐次実行単位の実行
状態の制御を行うための制御指示を入力する特定制御指
示入力手段と、前記デバッグ対象のプログラムに含まれ
る各逐次実行単位を、被制御形態に基づいて排他的逐次
実行単位、並立的逐次実行単位及び継続的逐次実行単位
のいずれかに分類する分類手段と、前記特定制御指示入
力手段に逐次実行単位の実行を停止する指示が入力され
た場合には、前記分類手段により並立的逐次実行単位に
分類された逐次実行単位のうち実行中の総ての逐次実行
単位及び前記分類手段により排他的逐次実行単位に分類
された逐次実行単位のうち前記特定制御指示入力手段に
よって第1の指定がされた逐次実行単位の実行を停止す
る停止手段と、前記特定制御指示入力手段に逐次実行単
位の実行を再開する指示が入力された場合には、前記分
類手段により並立的逐次実行単位に分類された逐次実行
単位の総て、及び排他的逐次実行単位に分類された逐次
実行単位のうち前記特定制御指示入力手段によって第2
の指定がされた逐次実行単位の実行を再開する再開手段
とをコンピュータを機能させるためのプログラムとして
記録したものである。
【0075】請求項36記載の発明の記録媒体は、請求
項33記載の記録媒体において、前記制御手段は、前記
デバッグ対象プログラムに含まれる各逐次実行単位の状
態指標に対応させて該逐次実行単位の実行状態の制御を
行う手段を具備することを特徴とするものである。
【0076】請求項37記載の発明の記録媒体は、内在
的停止命令を含む命令群を逐次実行する特定の逐次実行
単位を含むプログラムのデバッグを行うためのプログラ
ムが記録された記録媒体において、前記特定の逐次実行
単位に対する単位実行指示を入力するための特定制御指
示入力手段と、前記特定制御指示入力手段に第1の単位
実行指示が入力されたときに前記特定の逐次実行単位が
次に実行すべき命令が前記内在的停止命令である場合に
は前記特定の逐次実行単位を実行停止状態とし、前記特
定制御指示入力手段に前記実行停止状態とされた逐次実
行単位に対しての第2の単位実行指示が入力されると該
逐次実行単位が前記内在的停止命令の次の命令を実行可
能な状態にする手段とをコンピュータを機能させるため
のプログラムとして記録したものである。
【0077】請求項38記載の発明の記録媒体は、命令
群を有するモジュールが定義されるデバッグ対象のプロ
グラムに含まれる各モジュールを着目形態において分類
する分類手段と、前記分類手段による着目形態に応じた
デバッグ制御を行う手段とをコンピュータを機能させる
ためのプログラムとして記録したものである。
【0078】請求項39記載の発明の記録媒体は、請求
項37記載の記録媒体において、前記分類手段は、前記
モジュールを分類のための規則を用いて分類する手段
と、外部からの指示を入力するための手段と、前記入力
された指示に基づいて前記モジュールの分類を更新する
手段とを具備することを特徴とするものである。
【0079】請求項40記載の発明の記録媒体は、デバ
ッグ対象のプログラム内のモジュールで定義される命令
群に対する単位実行指示が入力される制御指示入力手段
と、前記各モジュールを着目属性に応じて着目モジュー
ル及び非着目モジュールに分類する分類手段と、前記制
御指示入力手段に前記非着目モジュール内で定義された
命令群への単位実行指示が入力された場合には該命令群
全体を実行する手段とをコンピュータを機能させるため
のプログラムとして記録したものである。
【0080】請求項41記載の発明の記録媒体は、請求
項25または26記載の記録媒体において、デバッグ対
象のプログラムに含まれる並列して実行される逐次実行
単位が実行する一、又は、複数の命令群を有するモジュ
ールを分類するモジュール分類手段と、前記各逐次実行
単位を、前記モジュール分類手段による分類を考慮して
定められる分類規則に基づいて前記デバッグ対象プログ
ラムの実行時に動的に分類する逐次実行単位分類手段
と、前記逐次実行単位分類手段による分類情報に従って
デバッグ制御を行う手段とをさらに具備することを特徴
とするものである。
【0081】請求項42記載の発明の記録媒体は、並列
して実行される逐次実行単位を含むデバッグ対象プログ
ラムの動作を制御するための第1の制御指示群を記録す
る手段と、前記制御指示群に従って前記デバッグ対象プ
ログラムの動作を制御することで得られる前記デバッグ
対象プログラムの第1の動作過程を記録する動作過程記
録手段と、前記動作過程記録手段に記録された第1の動
作過程と同じ、又は、異なる動作をするように該各逐次
実行単位を制御する第2の制御指示群を生成する手段と
をコンピュータを機能させるためのプログラムとして記
録したものである。
【0082】請求項43記載の発明の記録媒体は、請求
項42記載の記録媒体において、前記生成された第2の
制御指示群に従って前記デバッグ対象プログラムの動作
を制御する手段と、前記実行によって得られる第2の動
作過程と前記第1の動作過程とを比較する手段とをさら
に具備することを特徴とするものである。
【0083】請求項44記載の発明の記録媒体は、デバ
ッグ対象のプログラムに含まれる並列して実行される逐
次実行単位を属性に応じて分類する分類手段と、前記分
類手段により特定の属性を持つと分類される逐次実行単
位の動作状態を、該逐次実行単位ごとに設けられたウイ
ンドウに表示する手段と、前記ウインドウごとに、該ウ
インドウに対応する逐次実行単位のみを対象とする第1
の制御指示を入力するための手段と、前記デバッグ対象
プログラム全体を対象とする第2の制御指示を入力する
ための手段とをコンピュータを機能させるためのプログ
ラムとして記録したものである。
【0084】請求項45記載の発明の記録媒体は、請求
項44記載の記録媒体において、実行中の逐次実行単位
の増減及び前記分類手段による逐次実行単位の分類の変
化に対応させて前記ウインドウを前記デバッグ対象プロ
グラムの実行時に動的に増減させる手段をさらに具備す
ることを特徴とするものである。
【0085】請求項46記載の発明の記録媒体は、デバ
ッグ対象のプログラムに含まれる並列して実行される逐
次実行単位を分類する手段と、前記逐次実行単位ごとに
設けられたウインドウに該逐次実行単位の動作状態を前
記分類に適応させて可視的に表示する手段と、前記デバ
ッグ対象プログラム全体を対象とする第1の制御指示を
入力するための手段と、前記ウインドウごとに該ウイン
ドウに対応する逐次実行単位のみを対象とする第2の制
御指示を入力するための手段とをコンピュータを機能さ
せるためのプログラムとして記録したものである。
【0086】請求項47記載の発明の記録媒体は、デバ
ッグ対象のプログラム内の並列実行される逐次実行単位
ごとに設けられたウインドウ画面内に、前記逐次実行単
位に対する前記第2の制御指示を入力するための手段の
ための表示を該逐次実行単位の実行状態に適応させて行
う手段をコンピュータを機能させるためのプログラムと
して記録したものである。
【0087】請求項48記載の発明の記録媒体は、請求
項47記載の記録媒体において、前記逐次実行単位ごと
に設けられたウインドウ画面ごとに、前記逐次実行単位
が実行中のモジュールもしくは命令群を表示する手段
と、該ウインドウに前記モジュールを構成する命令群を
呼出す論理軌跡を表示する手段とをさらに具備すること
を特徴とするものである。
【0088】以上各請求項に記載される「デバッグ」と
は、作成されたプログラム、又は、既存のプログラム中
に含まれる論理的、又は、タイミング的な誤りを取り除
く作業を示す概念である。「デバッグ装置」とは、デバ
ッグ作業者を補助し、デバッグ作業者の作業量を軽減す
ることを目的とする装置である。デバッグ装置は、「ソ
ースコードレベルのデバッグ装置」、「機械語レベルの
デバッグ装置」の二種類に大別される。「ソースコード
レベルのデバッグ装置」とは、デバッグ対象のプログラ
ムの実行状態を、そのプログラムのソースコード上の実
行位置に対応させてデバッグ作業者に示す装置である。
又、「機械語レベルのデバッグ装置」とは、プログラム
の実行状態を、そのプログラムの機械語上の実行位置に
対応させてデバッグ作業者に示す装置である。本発明に
おける「デバッグ装置」は、「ソースコードレベルのデ
バッグ装置」、及び、「機械語レベルのデバッグ装置」
の両者を指す。そして、本願発明で「ソースコード」と
記述した場合、これは、「機械語レベルのデバッグ装
置」においては、機械語のソースコード、すなわち、デ
バッグ対象のプログラムのアセンブルコードを意味す
る。
【0089】「逐次実行単位」とは、並列プログラムに
おける逐次実行単位全般を示す概念であり、例えば、マ
ルチスレッドプログラムにおけるスレッド、マルチプロ
セスプログラムにおけるプロセス、マルチタスクプログ
ラムにおけるタスク等を含む。本発明において「並列プ
ログラム」というときは、特記ない限り、一または複数
の逐次実行単位よりなるものとする。
【0090】「デバッグ対象のプログラムの実行状態」
とは、デバッグ対象のプログラムを実行するCPUの状
態、各種変数値を保存しているメモリーの状態等を指す
概念である。従って、「デバッグ対象の並列プログラム
の実行状態」とは、デバッグ対象の並列プログラムを構
成する各逐次実行単位に割当てられたCPUの状態、各
逐次実行単位が固有に持つ変数を保存しているメモリー
の状態、複数の逐次実行単位の間で共有されている変数
を保存しているメモリーの状態等を意味する。
【0091】「デバッグ制御」とは、デバッグ装置によ
るデバッグ対象のプログラムの実行状態に対する制御を
意味する。デバッグ制御は、デバッグ装置に対して、デ
バッグ作業者が指示を与えることによって行われる場
合、及び、デバッグ装置が、デバッグ対象のプログラム
の実行状態に応じて、自動的に行う場合がある。
【0092】「特定の逐次実行単位のみについて実行を
再開または停止させる」とは、逐次実行単位のあるもの
が停止し、あるものが実行されている状態から、一部の
逐次実行単位のみを再開または停止させるというデバッ
グ制御を示す概念であり、例えば、1つのスレッドの実
行を停止または再開させるときに、他の停止し、または
実行されているスレッドの実行状態を変更しないように
論理設計されたプログラムや回路等によって実現され
る。
【0093】「分類」とは、逐次実行単位の被制御形態
に応じて分類することをいう。ここで、「被制御形態」
とは、例えばマルチスレッドプログラムのデバッグを行
うに当たってデバッグ対象について用いられる属性を表
す概念であり、実行形態、着目形態、表示形態の3つの
形態も含まれる。また「実行形態」とは、デバッグ対象
のプログラムに含まれる前記逐次実行単位の各逐次実行
単位について、デバッグ過程でどう実行させ、及び停止
させるかを表す性質を示す概念であり、例えばデバッグ
対象のマルチスレッドプログラムに包含される各スレッ
ドを、本発明の対象たるデバッグ装置がどのように実行
及び停止するのかを表すように、排他実行スレッド、同
時実行スレッド、及び継続実行スレッドのいずれかに分
類するときの属性が含まれる。
【0094】「着目形態」とは、デバッグ対象のプログ
ラムに含まれる各逐次実行単位に対してデバッグ過程で
デバッグ作業者が着目する度合いを示す概念であり、例
えばデバッグ対象のマルチスレッドプログラムに包含さ
れる各スレッドを、着目すべき着目スレッド及び着目し
ない非着目スレッドのいずれかに分類するときの属性が
含まれる。
【0095】「排他的逐次実行単位」とは、デバッグ作
業者がデバッグ中に、そのタイミング等の振舞いを制御
しようと思う逐次実行単位、例えばスレッドについて、
かかるスレッドのみを排他的に実行させ他の排他的逐次
実行単位の実行状態を変えないようにさせる場合の該ス
レッドを表す概念である。具体的にはデバッグ作業者が
スレッド間の実行のタイミングを再現させたいと考えて
いるスレッドである。
【0096】「並立的逐次実行単位」とは、デバッグ作
業者がデバッグ中に、そのタイミング等の振舞いを制御
しようと思わない逐次実行単位、例えばスレッドについ
て、かかるスレッドは他と並立的に実行させる場合の、
該スレッドを表す概念であり、具体的には例えば、マル
チスレッドプログラムに対する従来のデバッガにおける
非カレントスレッドに相当するものである。
【0097】「継続的逐次実行単位」とは、デバッグ作
業者がデバッグ中に、その着目の意思にかかわらず継続
的な実行を要すると考える逐次実行単位、例えばスレッ
ドについて、かかるスレッドは他と関係なく継続的に実
行させるという場合の、該スレッドを表す概念であり、
例えば、GUIのイベント処理を行うスレッドのような
システムスレッドが該当する。
【0098】「逐次実行単位の分類のための規則」と
は、逐次実行単位を属性によって分類するための指標と
なるものを示す概念であり、例えば、デバッグ対象のマ
ルチスレッドプログラムに包含される各スレッドを、排
他的実行スレッド、同時実行スレッド及び継続実行スレ
ッドのいずれかに分類し、同じく各スレッドを着目スレ
ッド及び非着目スレッドのいずれかに分類するために対
応表を論理設計したプログラムや回路等によって実現さ
れる。
【0099】「一般制御指示」とは、デバッグ対象の並
列プログラムを構成する特定逐次実行単位を対象せず、
プログラム全体を対象とする制御指示を示す概念であ
り、例えば、デバッグ対象となるプログラムの指定、そ
のプログラムの実行の開始、終了や、デバッグ対象のプ
ログラムに包含される総てのスレッドに対して、実行再
開、停止、ブレークポイント設定等を指示する一般デバ
ッグコマンドが含まれる。
【0100】「特定制御指示」とは、デバッグ対象の並
列プログラムを構成する特定逐次実行単位のみを対象と
する制御指示を示す概念であり、例えば、デバッグ対象
のマルチスレッドプログラムに包含される特定のスレッ
ドに対して、実行再開、停止、1ステップのみ実行、ブ
レークポイント設定等を指示するスレッド別デバッグコ
マンドが含まれる。スレッド別デバッグコマンドには、
上に挙げたステップ命令の他に、実行中のスレッドを停
止させる 『Stop』等が含まれる。
【0101】「逐次実行単位の状態指標」とは、デバッ
グ対象プログラムの実行制御に反映されるべき逐次実行
単位の本来の挙動のエミュレーションを示す概念であ
り、「逐次実行単位の優先度」をも包含する概念であ
る。ここで、「逐次実行単位の優先度」とは、デバッグ
対象プログラムの実行制御に反映されるべき逐次実行単
位の実行の優劣を示す概念であり、例えば、デバッグ対
象のマルチスレッドプログラムに包含されるスレッドt
1及びt2に対して、スレッドt1の優先度がスレッド
t2の優先度より高く設定されていれば、OSはスレッ
ドt1に対してより優先的にCPUを割り当てる。従っ
て、例えば、デバッグ対象のマルチスレッドプログラム
に包含されるスレッドt1の優先度がスレッドt2の優
先度よりも高く設定されているような場合も、本来の挙
動は、スレッドt1の実行中にはスレッドt2の実行が
抑制されるといったものとなる。
【0102】「内在的停止命令」とは、逐次実行単位の
実行を、デバッグ装置による制御に起因してでなくデバ
ッグ対象のプログラムが実行に伴って内在的に停止状態
となる処理命令を示す概念である。例えば、デバッグ対
象のプログラムに含まれる『sleep』命令をデバッ
グ対象のあるスレッドが実行すると、そのスレッドの実
行が一定時間休眠状態になるように論理設計されたプロ
グラムや回路等によって実現される。『sleep』以
外にも、 『suspend』、『wait』等の各種
命令が存在する。
【0103】「単位実行指示」とは、この指示がデバッ
グ装置に与えられると、デバッグ装置は逐次実行単位に
対して、実行を一定の単位だけ行ったのちに停止状態に
するように制御するという指示である。例えば、『St
ep In』命令を実行すると、ソースコード上の1行
のみ実行した後に停止状態に移行するように論理設計さ
れたプログラムや回路等によって実現される。
【0104】「実行停止状態」とは、CPUがデバッグ
対象のプログラムを実行するのを、デバッグ装置が一時
的に中断させている状態である。例えば、デバッグ装置
の制御の元で、デバッグ対象のプログラムが実行されて
いるとき、このプログラムがブレークポイントの置かれ
た位置を実行しようとすると、デバッグ装置は、このプ
ログラムを実行停止状態に移行させる。
【0105】「命令群」とは、プログラムを構成する処
理の集まりを示す概念であり、関数、メソッド、手続き
などの概念を含むものである。命令群は複数の処理命令
によって構成される。ここで「処理命令」とは、例えば
変数への代入命令、入出力命令等のプログラムを構成す
る基本単位を指す。
【0106】「モジュール」とは、一または複数の命令
群から構成される単位を示す概念であり、具体的には、
オブジェクト指向言語におけるクラス、プログラムを構
成するファイル、複数のファイルの論路的集まりである
パッケージなどを指す。
【0107】「モジュール分類手段による分類を考慮し
て定められる分類規則」とは、モジュールの属性を、逐
次実行単位の分類規則に反映させることを示す概念であ
り、例えば、関数の分類規則により『着目関数』とされ
ている関数にデバッグ対象のプログラムのあるスレッド
の実行が移ったスレッドを『着目スレッド』と、該関数
の分類規則により『非着目関数』とされている関数に実
行が移ったスレッドを『非着目スレッド』と、自動的に
分類するように論理設計されたプログラムや回路等によ
って実現される。
【0108】「制御指示群」とは、デバッグ装置に与え
るべき一または複数の制御指示を時系列的に羅列した列
である。
【0109】「動作過程」とは、制御指示群を与えられ
たデバッグ装置が、それに従ってデバッグ対象のプログ
ラムを制御した際の、デバッグ対象のプログラムの状態
を時系列的に羅列した列、及び、この際与えた制御指示
群、及び、例えばマルチスレッドプログラムの場合に
は、スレッドの分類といった情報を総て含む概念であ
る。
【0110】「処理命令を呼出す論理軌跡」とは、処理
命令が呼出された論理的な軌跡を表す情報を示す概念で
あり、例えば、関数呼び出しのスタックを指す。
【0111】以上の各請求項に記載された本発明によれ
ば次のような効果が得られる。
【0112】請求項1及び25記載の本発明では、デバ
ッグ対象のプログラムに含まれる逐次実行単位のデバッ
グにあたり、特定の逐次実行単位のみを対象として制御
するので、逐次実行単位間の実行のタイミングを任意に
定めることが可能となる。
【0113】請求項2及び26記載の本発明では、特定
動作手段がプログラムに含まれる逐次実行単位の内、特
定の逐次実行単位のみについて実行を停止させるように
制御するので、逐次実行単位間の実行の再開又は停止の
タイミングを任意に定めることが可能となる。
【0114】請求項3及び27記載の本発明では、請求
項1及び2記載の発明の作用に加えて、プログラムに含
まれる各逐次実行単位を被制御形態に応じて分類し、こ
の分類情報に適応的にデバッグ装置は制御を行うので、
並列プログラムのデバッグ効率を高めることが可能とな
る。
【0115】請求項4及び28記載の本発明では、請求
項3記載の発明の作用に加えて、プログラムに含まれる
各逐次実行単位の分類を分類のための規則に基づいて行
い、この分類規則をデバッグ作業者が任意に更新できる
ので、並列プログラムの特定逐次実行単位について制御
させる動作がより機動的になる。
【0116】請求項5及び29記載の本発明では、請求
項3及び4記載の発明の作用に加えて、分類情報として
逐次実行単位の被制御形態に関する情報を用いるので、
より効率のよいデバッグを行うことが可能になる。
【0117】請求項6及び30記載の本発明では、請求
項3及び4記載の発明の作用に加えて、分類情報として
逐次実行単位の着目形態に関する情報を用いるので、デ
バッグ制御において着目性に適応させた制御を行うこと
により、より効率のよいデバッグを行うことが可能にな
る。
【0118】請求項7及び31記載の本発明では、請求
項3及び4記載の発明の作用に加えて、分類情報として
逐次実行単位の表示形態に関する情報を用いるので、デ
バッグ制御において表示性に適応させた制御を行うこと
により、より効率のよいデバッグを行うことが可能にな
る。
【0119】請求項8及び32記載の本発明では、デバ
ッグを制御する指示として、複数の逐次実行単位のうち
特定の逐次実行単位のみを対象とする特定制御指示と、
デバッグ対象のプログラム全体を対象とする一般制御指
示とを含んで構成されるので、デバッグ制御を細かく指
示することができ、より効率の良いデバッグを行うこと
が可能になる。
【0120】請求項9及び33記載の本発明では、デバ
ッグ対象のプログラムを構成する複数の逐次実行単位の
うち特定の逐次実行単位とを対象としてそれぞれの分類
に適応的にデバッグ制御がされるので、逐次実行単位の
分類を変えればデバッグ時の挙動を変えることができ、
従ってより効率の良いデバッグを行うことが可能にな
る。
【0121】請求項10及び34記載の本発明では、一
般制御指示が入力された場合、デバッグ対象のプログラ
ムの構成要素のうち実行または停止中の排他的逐次実行
単位及び並立的逐次実行単位のみについて実行または再
開させるように動作するので、プログラム全体に対する
制御指示を行う際に、デバッグ作業者が逐次実行単位に
対して1つ1つ制御指示を与えなければならない事態が
回避され、デバッグ作業における手間を省くことが可能
となる。
【0122】請求項11及び35記載の本発明では、特
定制御指示が入力された場合、デバッグ対象のプログラ
ムの構成要素のうち実行中の総ての並立的逐次実行単位
及び排他的逐次実行単位のうち特定制御指示入力手段に
よって指定された逐次実行単位の実行を停止または再開
するように動作するので、逐次実行単位ごとの詳細な制
御指示を行うことにより、他の排他的逐次実行単位の実
行を停止させる間に微妙なタイミングの設定をすること
が可能となる。
【0123】請求項12及び36記載の本発明では、請
求項9記載の発明の作用に加えて、逐次実行単位の状態
指標をデバッグ制御に反映させるので、デバッグ対象の
プログラムを、デバッグ装置を介さないで実行する際に
は起こり得ないタイミングの実行が回避され、さらに効
率的なデバッグが可能となる。
【0124】請求項13及び37記載の本発明では、制
御指示入力手段に特定の逐次実単位を対象として第1の
単位実行指示が入力されたときに次に実行すべき命令が
内在的停止命令である場合には特定の逐次実行単位を実
行停止状態とし、該制御指示入力手段に第2の単位実行
指示が入力されると次の命令を実行可能な状態にするよ
うに制御するので、第1の単位実行指示と第2の単位実
行指示との間に他の排他的逐次実行単位を実行すること
により微妙なタイミングの設定をすることが可能とな
る。
【0125】請求項14及び38記載の本発明では、プ
ログラムに含まれる各モジュールを、着目属性に応じて
分類し、特定の着目属性を持つモジュールに含まれる命
令群総てをプログラムの実行の際に同一に扱うように制
御するので、該プログラムに含まれるモジュールをその
被着目度に応じて適切に取り扱うことが可能となる。
【0126】請求項15及び39記載の本発明では、請
求項14記載の発明の作用に加えて、分類手段が、プロ
グラムに含まれる各モジュールに対する分類規則を用い
て前記各モジュールを分類する手段と、変更指示に基づ
いてその分類を更新する手段とを具備するので、そのモ
ジュールの属性をデバッグ作業者が変更することが可能
となり、より効率的なデバッグが可能となる。
【0127】請求項16及び40記載の本発明では、着
目しないモジュールで定義された命令群、例えば関数、
メソッド、手続き等の中に入り込むような『STEP
IN』命令は、当該命令群全体をひとかたまりに実行し
てしまう『STEP OVER』命令と解釈するので、
着目の対象でないモジュールに対する容易な実行制御が
可能となる。
【0128】請求項17及び41記載の本発明では、プ
ログラムに含まれる各モジュールを分類し、このモジュ
ールの分類を考慮して逐次実行単位を分類し、この各逐
次実行単位の分類に適応させてデバッグ制御を行うの
で、請求項1及び2に係る本願発明の目的とするところ
及び請求項15に係る本願発明の目的とするところを同
時に達成すること、即ち、着目の対象でないモジュール
に対する容易な実行制御が可能となると同時に、モジュ
ールの着目属性を逐次実行単位の分類に反映させた上で
逐次実行単位間の実行のタイミングを任意に定めること
が可能となる。
【0129】請求項18及び42記載の本発明では、デ
バッグログ手段に記録されたデバッグ情報を用いること
により、デバッグ装置上でデバッグ実行された場合の各
逐次実行単位間の動作のタイミングと同じ、又は異なる
タイミングで該各逐次実行単位を動作させる動作過程を
生成するので、例えばデバッグ作業者に提示することで
プログラムに含まれる問題発見が容易になる。
【0130】請求項19及び43記載の本発明では、請
求項18記載の発明の作用に加えてさらに、請求項18
記載の発明によって生成された動作過程を自動実行し、
その結果とデバッグ情報とを比較する手段を備えるの
で、効率的な自動テストが可能となる。
【0131】請求項20及び44記載の本発明では、デ
バッグ対象のプログラムに含まれる並列して実行される
複数の逐次実行単位を属性に応じて分類し、該逐次実行
単位ごとに設けられたウインドウに特定の属性を持つ逐
次実行単位の動作状態を表示し、該ウインドウごとに、
制御指示が入力されるように構成するので、並列プログ
ラムのデバッグの動作状態を並列的に可視化することが
可能となり、より効率的なデバッグが可能となる。
【0132】請求項21及び45記載の本発明では、請
求項20記載の発明の作用に加えて、デバッグ対象のプ
ログラム実行中の逐次実行単位の増減及び逐次実行単位
の分類の変化に対応させてウインドウが増減されるの
で、逐次実行単位の状態をより反映させたデバッグを行
うことができ、より効率的なデバッグが可能となる。
【0133】請求項22及び46記載の本発明では、デ
バッグ対象のプログラム全体に対する第1の制御指示を
入力するための手段と、デバッグ対象のプログラムに含
まれる並列して実行される複数の逐次実行単位を分類
し、該逐次実行単位ごとに設けられたウインドウに、特
定の属性の対応する逐次実行単位の動作状態と、該ウイ
ンドウに対応する逐次実行単位のみを対象とする第2の
制御指示を入力するための手段とを併有させることによ
り、より効率的なデバッグが可能となる。
【0134】請求項23及び47記載の本発明では、逐
次実行単位ごとのウインドウ画面内で逐次実行単位の実
行状況に適応させた前記第2の制御指示を入力する手段
のための表示を行うので、効率のよいデバッグが可能と
なる。
【0135】請求項24及び48記載の本発明では、デ
バッグ対象のプログラムに含まれる並列して実行される
複数の逐次実行単位のうち特定の逐次実行単位ごとに可
視的に設けられたウインドウごとに、該特定の逐次実行
単位が実行中のモジュールもしくは命令群を表示させ、
更に、そのウインドウに前記関数を呼出す論理軌跡を表
示するので、並列プログラムのデバッグの動作状態を並
列的に可視化し、デバッグ対象のプログラムの働きを理
解する助けとなる。
【0136】以上から、本発明の構成によれば、例えば
複数のスレッドの実行を、デバッグ作業者の希望する順
序で実行制御することが可能となり、従ってデバッグ作
業者は、タイミングに起因するバグの再現を常に行うこ
とができるようになる。
【0137】
【発明の実施の形態】以下、図面を参照しながら本発明
の実施の形態について説明する。
【0138】図1は、本発明に係るデバッグ装置の用い
られる環境を示す概念図である。同図(a)に示すよう
に、デバッグ装置1をデバッグ作業者2が用いることに
より、ターゲットプログラム(デバッグ対象のプログラ
ム)3のデバッグを行う場合を想定するが、同図(b)
に示すように、マシンA内のデバッグ装置1がデバッグ
作業者2の指示に基づいて、マシンAにリモート接続さ
れたマシンB内のターゲットプログラム3のデバッグを
リモートコントロールによって制御する環境を想定する
ことも可能である。なおここでは、ターゲットプログラ
ム3はマルチスレッドプログラムであるとする。
【0139】(第1の実施形態)図2は本発明の一実施
形態に係るマルチスレッドプログラム3のデバッグ装置
1の構成を示す概念図である。同図に示すように、デバ
ッグ装置1は、各種制御を行うCPU101、入力装置
103、出力装置105、記憶装置107、ターゲット
プログラムを読み込むターゲットプログラム読み込み部
109、読み込んだプログラムをデバッグのために実行
するターゲットプログラム実行部111、実行中のプロ
グラムを停止するターゲットプログラム停止部113、
排他実行スレッドについて所定の実行処理を行う排他的
スレッド実行機構115、スレッドの優先度により実行
の制御を行うスケジューラ部117、ターゲットプログ
ラムの実行状態及び挙動を監視するターゲットプログラ
ム監視部119、スレッドを(後述する)各種属性によ
って分類するスレッド分類部121、かかるスレッドの
デフォルトの分類を定めるための規則を格納するスレッ
ド分類規則格納部123、デバッグ制御のためのコマン
ドを可視的に表示するデバッグコマンド表示部125、
デバッグ作業者からのデバッグコマンドが入力されるデ
バッグコマンド入力部127、プログラム中の特定スレ
ッドを表示するスレッド表示部129、スレッド表示の
有無についてのデフォルトの規則を格納するスレッド表
示規則格納部131及びプログラムあるいはスレッドの
実行が一時停止されるポイントを設定するブレークポイ
ント設定部133がバス135によって接続されて構成
される。
【0140】図3は、本発明の一実施形態に係るマルチ
スレッドプログラム3のデバッグ装置1の構成を、デバ
ッグ作業者2及びターゲットプログラム3との関係にお
いて示した概念図である。同図に示すような接続形態に
よって本実施形態に係るデバッグ装置は実現される。
【0141】図4は、デバッグコマンド入力部127の
受け付けるデバッグコマンドの種別を表した図である。
同図4に示すように、デバッグコマンドは、プログラム
全体を対象とする一般デバッグコマンドと、特定のスレ
ッドのみを対象とするスレッド別デバッグコマンドの二
種類に大別される。
【0142】一般デバッグコマンドには、従来のデバッ
グ装置と同様に、ターゲットプログラムの指定・読み込
みコマンド、デバッグの開始・終了コマンド、総ての停
止スレッドの実行を再開させるコマンド、総ての実行中
のスレッドを停止させるコマンド等が含まれる。尚、停
止状態にあるスレッドは、デバッグ装置からの指示に依
らず、ターゲットプログラム自身の実行過程で停止状態
になっているスレッドと、ブレークポイントに到達した
結果や、デバッグ装置からの停止コマンドの結果によっ
て、停止状態になっているスレッドの二者に大別され
る。本願発明では、区別を明確にするため、前者を「待
機スレッド」、後者を単に「停止スレッド」と呼ぶ。
【0143】スレッド別デバッグコマンドには、停止ス
レッドの実行を再開するコマンド、実行中のスレッドを
停止させるコマンド、各種ステップコマンド等が含まれ
る。後に述べるように、これらのスレッド別デバッグコ
マンドは、デバッグ作業者の指定した特定のスレッドに
対して個別に指示される。又、ブレークポイントの設定
をするコマンドも、一般デバッグコマンドと、スレッド
別デバッグコマンドの二種類がある。前者によって設定
されたブレークポイントには、不特定のスレッドが反応
するのに対し、後者によって設定されたブレークポイン
トには、対象となる(一、又は、複数の)スレッドのみ
が反応する。
【0144】次に、スレッド分類部121及びスレッド
表示部129等の働きを、図5を用いて説明する。デバ
ッグ実行中の任意の時点で、本実施形態に係るデバッグ
装置1のスレッド分類部121は、存在する各スレッド
を、着目スレッド、非着目スレッドのいずれかに分類す
る。デバッグ作業者は、着目スレッドに分類された複数
のスレッドに対して、その振る舞いや状態に着目する。
又、スレッド分類部121は、各スレッドを、デバッグ
装置1がどのように実行・停止させるかに応じて、排他
実行スレッド、同時実行スレッド、継続実行スレッドの
いずれかに分類する。ターゲットプログラム3の実行中
に、新しいスレッドが生成されたときには、スレッド分
類部121は、スレッド分類規則格納部123に格納さ
れるスレッド分類規則を用いて、デフォルトの分類を決
定する。またスレッド分類部121は、後にデバッグ作
業者からの分類の指示によって、スレッドの分類を変更
することもできる。
【0145】着目スレッドの状態は、一般に、出力装置
105上に表示され続けることが望ましいが、着目スレ
ッドの総数が多くなると、その総てを表示し続けると、
逆に煩雑になる場合も有り得る。そこで、本発明では、
スレッド表示部129によって、各スレッドを、表示の
対象となる表示スレッド、又は、表示の対象とならない
非表示スレッドに分類する。このとき、スレッド表示部
129は、スレッド表示規則格納部131に格納される
スレッド表示規則を用いて、デフォルトの表示方法を決
定する。また後に、デバッグ作業者からの表示方法の指
示によって、表示方法を変更することもできる。デバッ
グコマンド表示部125は、出力装置105上に、一般
デバッグコマンドの他、表示スレッドに対応するスレッ
ド別デバッグコマンドを表示する。
【0146】スレッド分類規則の例としては、 ・メインスレッド(ターゲットプログラムの入口となる
スレッド)を着目スレッドとする。
【0147】・ブレークポイントで停止したスレッドを
着目スレッドとする。
【0148】・ある親スレッドから生成された子スレッ
ドは、親スレッドの分類を継承する。
【0149】・着目スレッドは排他実行スレッドとす
る。
【0150】・システムスレッドは、非着目スレッド、
かつ、継続実行スレッドとする。
【0151】・システムスレッド以外の非着目スレッド
は、同時実行スレッドとする。
【0152】・非表示スレッドは非着目スレッドとす
る。
【0153】等が挙げられる。また、デバッグ作業者が
スレッド分類規則を変更することや、追加すること、一
部のみ採用すること等を可能にしても良い。スレッド表
示規則の例としては、 ・着目スレッドは表示スレッドとする。
【0154】・スレッドが消滅すれば表示を終了する。
【0155】・ある親スレッドから生成された子スレッ
ドは、親スレッドの表示方法を継承する。
【0156】・スレッドの優先順位に応じて色分けや表
示順序を決定する。
【0157】等が挙げられる。スレッド分類規則と同
様、デバッグ作業者がスレッド表示規則を変更すること
や、追加すること、一部のみ採用すること等を可能にし
ても良い。
【0158】次に、一般デバッグコマンド、スレッド別
デバッグコマンドを与えられた排他実行スレッド、同時
実行スレッド、継続実行スレッドの振る舞いを説明す
る。
【0159】図6は、一般デバッグコマンド、スレッド
別デバッグコマンドを与えられた排他実行スレッド、同
時実行スレッド、継続実行スレッド別の振る舞いの対応
関係の一例を示す概念図である。
【0160】一般デバッグコマンドによって実行を再開
する場合には、全停止スレッドの実行再開コマンドが与
えられた場合等がある。又、一般デバッグコマンドによ
って停止を行う場合には、全実行中スレッドの停止コマ
ンドが与えられた場合や、一般デバッグコマンドで設定
されたブレークポイントにあるスレッドが到達した場合
等がある。スレッド別デバッグコマンドによって実行を
再開する揚合には、停止スレッドに対して実行再開コマ
ンドが与えられた場合や、各種ステップコマンドが停止
スレッドに与えられた場合等がある。又、スレッド別デ
バッグコマンドによって停止を行う場合には、実行中ス
レッドに対して停止コマンドが与えられた場合や、各種
ステップコマンドを与えられたスレッドが停止条件(例
えば、『Step In』コマンドならば、一行の実行
が終了する)を満たした場合、スレッド別ブレークポイ
ントに対象のスレッドが到達した場合等がある。ここに
挙げた再開・停止の条件は例示であって、一般・スレッ
ド別デバッグコマンドによって実行を再開・停止する場
合としては、他の場合もあり得る。
【0161】図6に示すように、一般デバッグコマンド
によって実行を再開する場合、排他実行スレッド及び同
時実行スレッドのうち停止状態にあるスレッドが実行を
再開する。一般デバッグコマンドによって実行を停止す
る場合、排他実行スレッド、同時実行スレッドのうち実
行状態にあるスレッドが総て停止する。一方、総ての継
続実行スレッドは、常にそのときの停止状態、実行状態
を維持する。なお、ここに説明した一般デバッグコマン
ドによる実行の再開・停止動作は例示であって、他の動
作、例えば、一般デバッグコマンドによって実行を停止
する場合に、実行状態にある総ての継続実行スレッドの
実行を停止させるようにしてもよい。
【0162】スレッド別デバッグコマンドによって実行
を再開する場合、排他実行スレッドは、対象となるスレ
ッドのみ、停止状態ならば実行を再開する。その他総て
の排他実行スレッドは、その時の状態を維持する。一
方、同時実行スレッドは、総ての停止状態にあるスレッ
ドが、実行を再開する。スレッド別デバッグコマンドに
よって実行を停止する場合、排他実行スレッドは、対象
となるスレッドのみ、実行状態ならば停止する。その他
総ての排他実行スレッドは、その時の状態を維持する。
一方、同時実行スレッドの実行状態にあるスレッドは総
て停止する。継続実行スレッドは、常にそのときの停止
状態、実行状態を維持する。
【0163】次に、以上のように構成される本デバッグ
装置の動作を説明する。
【0164】図7は、デバッグ実行中に、あるスレッド
が生成された時の、スレッド分類部121及びスレッド
表示部129の処理の動作を説明するためのフローチャ
ートである。
【0165】同図に示すように、ターゲットプログラム
の実行過程において、新しいスレッドが生成された場合
を考える(ステップ701)。
【0166】まず、上述したスレッド分類規則を用いて
デフォルトの分類を定める(ステップ702)ととも
に、同様にしてデフォルトの表示方法を定める(ステッ
プ703)。
【0167】ここでこの分類により、表示対象のスレッ
ドかどうかを検証し(ステップ704)、表示スレッド
ならば出力装置105上に表示する(ステップ70
5)。表示スレッドでなければ、既に表示されている場
合には出力装置105上の表示を終了させる(ステップ
706)。
【0168】次にデバッグ作業者からの分類の指示が与
えられた場合(ステップ707)にはスレッドの分類を
更新し(ステップ708)、デバッグ作業者からの分類
の指示が与えられていない場合には、デバッグ作業者か
らの表示方法の指示が与えられているかを確認する(ス
テップ709)。デバッグ作業者からの表示方法の指示
が与えられているならば、表示方法を更新し(ステップ
710)、スレッド分類規則を用いてデフォルトの分類
を定め(ステップ702´)た後にステップ704にか
える。ステップ709で、デバッグ作業者からの表示方
法の指示が与えられていなければ、スレッドが消滅した
かを確かめ(ステップ711)、消滅していなければ、
ステップ707に戻る。
【0169】スレッドが消滅した場合には(ステップ7
11)、着目スレッドでなければ(ステップ712)そ
のまま、着目スレッドならば(ステップ712)デバッ
グ作業者に該消滅を連絡した(ステップ713)上で表
示スレッドかどうかを確かめ(ステップ714)、表示
を終了させて(ステップ715)、一連の処理を終了す
る。
【0170】ここで表示スレッドでなければ(ステップ
714)、そのまま処理を終了する。
【0171】次に、スレッド別デバッグコマンドである
『Step In』をデバッグ作業者が指示した場合の
動作を、図8のフローチャートを用いて説明する。
【0172】同図に示すように、まず、スレッド別デバ
ッグコマンド『Step In』が入力される(ステッ
プ801)。デバッグコマンド入力部127は、対象に
なるスレッドTを決定する(ステップ802)。同時実
行スレッドのうち停止状態にあるスレッド総ての実行を
再開し(ステップ803)、スレッドTの実行を再開す
る(ステップ804)。
【0173】スレッドTの実行中ブレークポイントに達
したスレッドがある場合(ステップ805)には、既知
の技術であるブレークポイント処理(ステップ806)
を行う。ブレークポイントに達したスレッドがない場合
(ステップ805)には、スレッドTが1行の実行を終
えたかを確認する(ステップ807)。
【0174】スレッドTが1行の実行を終えていない場
合にはステップ805に戻り、スレッドTが1行の実行
を終えた場合には、スレッドTの実行を停止する(ステ
ップ808)。
【0175】最後に同時実行スレッドのうち実行状態に
あるスレッド総ての実行を停止して(ステップ809)
終了する。
【0176】ここで述べた、スレッドの実行形態による
分類に対する、スレッドの実行及び停止は、ターゲット
プログラム実行部111、ターゲットプログラム停止部
113、排他的スレッド実行機構115、ターゲットプ
ログラム監視部119、スレッド分類部121によって
実現される。具体的な実現方法は、OSに依存してい
る。この実現方法の一例として、OSの提供するデバッ
グ機能が、ある特定のスレッドの実行を再開すると、そ
の他の総てのスレッドの実行も再開し、あるスレッドの
実行が停止すると、その他総てのスレッドの実行も停止
するという場合に、図8に示した『Step In』を
実現するときの処理の流れを次に説明する。
【0177】図9は、『Step In』を実現するに
あたっての排他実行スレッドの実行の再開及び停止の動
作を示すフローチャートである。
【0178】同図に示すように、排他実行スレッドの実
行の再開にあたっては、まず、スレッドT以外の停止状
態にある排他実行スレッドを集合Sに記憶する(ステッ
プ901)。具体的には、集合Sの内容を記憶装置10
7内に記憶する。
【0179】次に、集合Sに含まれるスレッドに『OS
_suspend』を発行する(ステップ902)。
【0180】スレッドTが停止すべき位置に、スレッド
Tのみが反応するブレークポイントを設定し(ステップ
903)、スレッドTの実行を再開する(ステップ90
4)。 排他実行スレッドの実行の停止にあたっては、
まず、スレッドTの実行を停止し(ステップ912)、
スレッドTに対して『OS_suspend』を発行す
る(ステップ914)。
【0181】ここで任意のスレッドの実行を再開する
(ステップ915)。これにより、『OS_suspe
nd』を発行されていない総てのスレッドの実行が再開
される。
【0182】次に、集合Sに含まれるスレッドに『OS
_resume』を発行し(ステップ916)、スレッ
ドTに対しても『OS_resume』を発行して(ス
テップ917)処理を終了する。
【0183】なお、同図において、『OS_suspe
nd』及び『OS_resume』は、例にあげたOS
の提供するデバッガの命令で、この『OS_suspe
nd』を発行されたスレッドは、その他のスレッドの実
行が再開しても、実行を再開せず、また、『OS_re
sume』は、先に発行された『OS_suspen
d』命令を取り消す命令であると仮定している。ここで
は、OSによってスレッド別ブレークポイントが提供さ
れていることを仮定したが、スレッド別ブレークポイン
トが提供されていない場合には、デバッグ装置側でスレ
ッド別ブレークポイントをエミュレートする必要があ
る。
【0184】次に、スレッド別デバッグコマンドの『S
tep In』を例にして、本発明の一実施形態に係る
デバッグ装置の付加的機能を説明する。
【0185】デバッグのある時点で、ある排他実行スレ
ッドが、ターゲットプログラム中の『sleep』命令
(実行することにより、そのスレッドは一定時間待機状
態になり、一定時間経過後、自発的に実行状態になる。
このような待機状態を休眠状態とよぶ)を次に実行する
状態で停止しているとする。デバッグ作業者がこの状態
で、そのスレッドにスレッド別デバッグコマンド『St
ep In』を発行した場合、そのスレッドに、実際に
『sleep』命令を実行させ、一定時間休眠状態にす
ることもできるが、本発明においては、更に、図10に
示す動作により、あるスレッドが『sleep』状態に
ある間に、その他のスレッドが動くタイミングを、デバ
ッグ作業者が自由に選んでデバッグすることを可能とす
る。
【0186】図10は、かかる機能を実現するための動
作を説明するためのフローチャートである。
【0187】同図に示すように、まず、排他実行スレッ
ドTが、次に『sleep』命令を実行する直前で停止
状態にある(ステップ1001)とする。
【0188】スレッドTに対して『Step In』コ
マンドが発行されると(ステップ1002)、スレッド
Tは停止状態になる(ステップ1003)。即ち、『S
tep In』コマンドを発行された排他実行スレッド
が、『sleep』命令を実行しようとすると、直ち
に、そのスレッドを停止状態にする。そしてTの第1の
『Step In』コマンドは終了する(ステップ10
04)。この際、デバッグ作業者に対しそのスレッドが
『sleep』状態に入ったことを示しても良い。
【0189】デバッグ作業者は、この状態において、そ
の他の排他実行スレッドを任意に制御することができ
る。sleep命令により停止状態になったスレッドに
対し、デバッグ作業者が第2の『Step In』コマ
ンドを発行する(ステップ1005)ことにより、この
スレッドは、『sleep』命令を抜け、次の命令を実
行できる状態になり(ステップ1006)、第2の『S
tep In』コマンドは終了する(ステップ100
7)。
【0190】なお同図中、画面のイメージ1001a、
1003a及び1006aは、それぞれステップ100
1、1003及び1006におけるスレッドTが次に実
行する位置を指標する様子を表した画面図である。
【0191】この機能によって、あるスレッドが『sl
eep』状態にある間に、その他のスレッドが動くタイ
ミングを、デバッグ作業者は自由に選んでデバッグする
ことが可能となる。同様に、例えば、ターゲットプログ
ラム中の『suspend』命令(実行することにより
そのスレッドは待機状態になる。待機状態から抜けるた
めには、その他のスレッドから 『resume』命令
を受ける必要がある)を『Step In』コマンドで
実行した場合の動作を図11のフローチャートを用いて
説明する。
【0192】同図に示すように、まず、排他実行スレッ
ドTが、次に『suspend』命令を実行する直前で
停止状態にある(ステップ1101)とする。
【0193】スレッドTに対して『Step In』コ
マンドが発行されると(ステップ1102)、スレッド
Tは待機状態になる(ステップ1103)。即ち、『S
tep In』コマンドを発行された排他実行スレッド
が、『suspend』命令を実行しようとすると、直
ちに、デバッグ装置はそのスレッドを待機状態にする。
この際、デバッグ作業者に対しそのスレッドが『sus
pend』状態に入ったことを示しても良い。
【0194】上記の『suspend』命令を実行した
スレッドが、待機状態に入った時点で、デバッグ装置は
『Step In』コマンドの実行を終える(ステップ
1104)。
【0195】デバッグ作業者はこの状態において、その
他の排他実行スレッドを任意に制御することができる。
そして、その過程において、他のスレッドが待機状態に
ある当該スレッドに『resume』命令を発行すると
(ステップ1105)、発行されたスレッドは、待機状
態から停止状態に遷移する(ステップ1106)。
【0196】更に、このスレッドにデバッグ作業者が第
2の『Step In』コマンドを発行して初めて(ス
テップ1107)、このスレッドは、『suspen
d』命令の次の命令を実行できる状態になり(ステップ
1108)、第2の『StepIn』コマンドは終了す
る(ステップ1109)。又、ステップ1106、ステ
ップ1107は省略するという実装も考えられる。
【0197】なお同図中、画面のイメージ1101a、
1103a、1106a及び1008aは、それぞれス
テップ1101、1103、1106及び1008にお
けるカレントスレッドの位置を指標する様子を表した画
面図である。
【0198】以上の手法により、デバッグの任意の時点
で、デバッグ作業者が複数のスレッドの間の実行のタイ
ミングによるプログラムの挙動を確認することを意図す
る場合、これらのスレッドを着目スレッド(従って、デ
フォルトで排他実行スレッドとなる)と指定すれば、そ
れらのスレッドをデバッグ作業者の希望する任意の順序
で容易にステップ実行することが可能となる。
【0199】なお、スレッド間に優先度が設けられてい
る場合には、上述の手法のみでは、デバッグ装置を介し
ない本来のターゲットプログラムの実行では、起こり得
ないタイミングを許すことが生じ得る。例えば、スレッ
ドt1の優先度がスレッドt2の優先度より高い場合を
考える。実際には、スレッドt1の実行中には、スレッ
ドt2の実行は行われない。しかし、上述の手法のみで
は、例えば、次のような問題が生ずる。
【0200】(1)スレッドt1が排他実行スレッド、
スレッドt2が同時実行スレッドと指定されており、ど
ちらも停止状態である場合、もしも、スレッドt1以外
の停止した排他実行スレッドの実行を再開すると、スレ
ッドt1は停止しているにもかかわらず、スレッドt2
の実行は再開されてしまう。
【0201】(2)スレッドt1、t2が共に、排他実
行スレッドに指定されている場合、デバッグ作業者は、
スレッドt2を、スレッドt1を停止させたまま、実行
させることができる。
【0202】これらの実際には起こり得ないタイミング
の実行を避ける為、本発明では、スケジューラ部117
が、本来のスレッドの挙動をエミュレートする。例え
ば、上記(1)の場合には、ターゲットプログラム実行
部111は、スレッドt2に対して、実行の再開を指示
するが、スレッドt2よりも優先度の高いスレッドt1
が停止しているために、最終的に、スケジューラ部11
7がスレッドt2の実行を行わない。
【0203】また上記(2)の場合には、デバッグ作業
者が、スレッドt2を実行させようとしたときに、スケ
ジューラ部117が、実際には起らないタイミングでの
実行を行おうとしている旨をデバッグ作業者に伝えるこ
とができる。さらに(2)に関しては、ターゲットプロ
グラム監視部119が、デバッグコマンド表示部125
にt2を実行するコマンドを表示させないようにするこ
ともできる。
【0204】次に、本発明の一実施形態に係るデバッグ
装置のGUI上の動作を説明する。図12は、本発明の
一実施形態に係るデバッグ装置をGUIを用いて実現し
た場合の画面の一例を示した図である。
【0205】同図において、スレッドトレースウインド
ウ1201は、従来のデバッグ装置のプログラム表示ウ
インドウとコントロールパネルとを一つにまとめたもの
である。但し、従来デバッグ装置のように、ターゲット
プログラムに対してコントロールパネルが一つだけ存在
するのではなく、従来のコントロールパネルに相当する
本発明のスレッド別コントロール部は、排他実行スレッ
ドかつ表示スレッドである各スレッドに対して一つづつ
存在する。これにより、スレッド別デバッグコマンドを
各スレッドに個別に与えることが容易になる。
【0206】スレッドトレースウインドウ1201に
は、排他実行・表示スレッドに対応するスレッド別コン
トロール部が含まれる。同図の例では、三つの排他実行
・表示スレッドmain、th1、th2が存在する
為、それぞれに対する個別スレッドコントロール部12
02、1203及び1204がスレッドトレースウイン
ドウ1201に含まれている。
【0207】スレッド別コントロール部1202、12
03及び1204は、ターゲットプログラム3実行中の
スレッドの生成及び消滅、並びにスレッド分類の変化等
に連動して自動的に増減させることができる。
【0208】スレッド別コントロール部1202、12
03及び1204は、スレッドトレースウインドウ12
01内にまとめて表示するのではなく、スレッドごとに
異なるウインドウに表示するという実現例も考えられ
る。
【0209】尚、一般デバッグコマンドを与えるために
は、一般コントロールパネルを用意する方法や、ウイン
ドウシステムのメニューを用いる方法等が考えられる。
【0210】図13は、このような一般コントロールパ
ネルの一例を示す図である。
【0211】同図に示す一般コントロールパネル130
0は、スレッドボタン1301、ブレークポイント設定
ボタン1302、一般デバッグコマンド指示部1303
が含まれる。
【0212】スレッドボタン1301を押すと、(後述
するように)ウインドウに着目スレッド及び非着目スレ
ッドの一覧が表示される。このウインドウや、メニュー
バーを用いて、デバッグ作業者はスレッドの分類の指示
や、表示方法の指示をスレッド分類部121及びスレッ
ド表示部129に与えることができる。このウインドウ
には、各スレッドの優先順位や現在の状態等の詳細な情
報を表示させることもできる。
【0213】ブレークポイント設定ボタン1302を押
すと、全てのスレッドに反応するブレークポイント等を
設定することができる。
【0214】一般デバッグコマンド指示部1303は、
一般デバッグコマンドを列挙したボタン群よりなる。同
図の例では、全停止スレッドの実行を再開させるCon
tボタン1303a、全実行中スレッドを停止させるS
topボタン1303b、デバッグを終了させるExi
tボタン1303cが含まれている。
【0215】一般デバッグコマンドには、ここに挙げた
ものの他に、デバッグ対象となるターゲットプログラム
3の指定、デバッグの開始コマンド等も含まれる。これ
らのコマンドは比較的使用頻度が低いので、一般コント
ロールパネル1300には含まれておらず、メニューバ
ーを通して指示される。
【0216】次に、スレッドトレースウインドウ120
1における、各スレッド別コントロール部1202、1
203及び1204の働きを図14を用いて説明する。
【0217】図14は、図12におけるスレッド別コン
トロール部1203の部分を取り出して表示した図であ
る。
【0218】同図に示すように、スレッド別コントロー
ル部1203には、非着目化ボタン1401、スレッド
状態表示アイコン1402、スレッド名表示部140
3、スタックフレーム表示選択部1404、スレッド別
デバッグコマンド指示部1405、ソース表示部140
6、位置ポインタ1407、ブレークポイントポインタ
1408等が含まれる。
【0219】非着目化ボタン1401を押すことによ
り、スレッド分類部121は対応するスレッドを非着目
スレッドにする。これは、図7のフローチャート上では
デバッグ作業者からの表示方法の指示(ステップ70
7)によって、スレッドの表示方法を更新する部分(ス
テップ710)に相当する。続いて、ステップ702´
でスレッド分類規則を用いて、指定されたスレッドを同
時実行スレッドにする。この後、ステップ704及び7
06で指定されたスレッドを非表示スレッドにする。
【0220】スレッド状態表示アイコン1402は、対
応するスレッドの状態(実行状態、停止状熊、自発的停
止状態等)を可視的に表示する。
【0221】スレッド名表示部1403は、対応する着
目スレッドの名前を表示する。スレッド名をここでデバ
ッグ作業者に変更させることもできる。
【0222】スタックフレーム表示選択部1404は、
ソース表示部1406で表示する関数呼び出しスタック
フレームをデバッグ作業者に表示選択させる部分であ
る。スタックフレーム表示選択部1404の中の、プル
ダウンボタン1404aをクリックした場合の画面の一
例を図15に示す。
【0223】同図に示す例では、スレッドth1は、関
数でrun()の実行中に、関数sub1 ()を呼び
出し、その実行中に、関数g()を呼び出し、更にその
内部で停止状態になっている。デバッグ作業者は、ソー
ス表示部1406に表示するソースプログラムを、関数
sub1()を定義したものから、関数g()を定義し
たものに変えようとしている。
【0224】スタックフレーム表示選択部1404に
は、関数の定義されているファイル名等を合わせて表示
することもできる。
【0225】スレッド別デバッグコマンド指示部140
5は、対応するスレッドに対するスレッド別デバッグコ
マンドを列挙したボタン群より成る。図14に示した例
では、停止スレッドの実行を再開させる『Cont』ボ
タン1405aや、ステップ実行させる『Step I
n』『Step Over』『Step Out』ボタ
ン1405b、1405c及び1405dが含まれてい
る。
【0226】スレッド別デバッグコマンド指示部140
5には、更に、対応するスレッドのローカル状態(例え
ば、スタックフレーム表示選択部1401に示されたス
タックフレーム中で定義された変数の現在値等)を表示
させるボタン等も含めることができる。さらに、スレッ
ド別デバッグコマンド指示部1405に含まれるボタン
を、対応するスレッドの現在の状熊によって可変にする
こともできる。例えば、図12におけるスレッド別コン
トロール部1202のスレッド別デバッグコマンド指示
部には、対応するスレッドmainが実行中なので、そ
の実行を停止させる『Stop』ボタン1202aが含
まれている。
【0227】また、図12におけるスレッド別コントロ
ール部1204では、対応するスレッドth2がsus
pend命令による待機状態になっているため、スレッ
ド別デバッグコマンド指示部1405に含まれるボタン
が総て押せない状態になっている。
【0228】ソース表示部1406では、スタックフレ
ーム表示選択部1404に示されたスタックフレームの
関数が定義されたファイルの一部を表示する。このファ
イルの適当な行をデバッグ作業者がクリックする等して
指示することにより、対応するスレッドのみが反応する
スレッド別ブレークポイントを設定することも可能であ
る。
【0229】位置ポインタ1407は、対応するスレッ
ドの現在の行を示す。ブレークポイントポインタ140
8は、そのポインタの示す位置にブレークポイントが置
かれていることを示す。ポインタの形状によって、ブレ
ークポイントの種類(例えば、全ての着目スレッドに反
応するブレークポイント、スレッド別ブレークポイン
ト、全てのスレッドに反応するブレークポイント等)を
デバッグ作業者に可視的に示すこともできる。
【0230】図16は、図13に示した一般コントロー
ルパネル1300においてスレッドボタン1301を押
すことにより表示されるスレッドの一覧画面の一例を示
す図である。
【0231】同図に示す例では、着目スレッド(『*』
のついたスレッド)、非着目スレッド(『*』のついて
いないスレッド)の一覧が表示される。
【0232】次に、デバッグコマンドに対する排他実行
スレッド及び同時実行スレッドのGUIに関連する動き
を、例を用いて説明する。
【0233】今、デバッグ実行中のある時点で、ターゲ
ットプログラム3中に、6つのスレッドmain、th
0、th1、th2、th2及びth4が存在し、その
うち、3つのスレッドmain、th1及びth2をデ
バッグ作業者が着目スレッドとして指定しているとす
る。これらのスレッドは、デフォルトで排他実行スレッ
ドに分類されている。またスレッドth4は、非表示ス
レッドではあるが、排他実行スレッドとしてデバッグ作
業者に指示されているとする。その他のスレッドth0
及びth3は、デフォルトで同時実行スレッドに分類さ
れている。
【0234】この時点で、スレッドmainは実行状態
(図12における1202で表示)にあり、スレッドt
h1はある行で停止(図12における1203で表示)
しており、スレッドth2はある行で待機状態(図12
における1204の状態)にあり、スレッドth4はあ
る行で停止しているとする。
【0235】デバッグ作業者が、スレッドth1にスレ
ッド別デバッグコマンド『StepIn』を与えた場
合、スレッドth1の実行と、全ての同時実行スレッド
(th0,th3)の実行が再開される。このとき、従
来のデバッグ装置とは異なり、スレッドth1以外の排
他実行スレッドは、現在の状態を維持する。即ち、スレ
ッドmainは実行状態、スレッドth2は待機状態、
スレッドth4は停止状態を維持する。但し、もし、ス
レッドmainの優先度がスレッドth4の優先度より
低い場合には、実際にはスケジューラ部117が、スレ
ッドmainの実行を行わない。
【0236】またもし、スレッドth1の優先度がスレ
ッドth4の優先度より低い場合には、スケジューラ部
117によって、実際には起こり得ないタイミングでス
テップ実行を行おうとしていることがデバッグ作業者に
伝えられる。それにもかかわらず、デバッグ作業者が敢
えてスレッドth1をステップ実行することを選んだ場
合には、スレッドth1の実行が実際に行われるように
することができる。
【0237】スレッドth1が一つの行を実行し終える
と、スレッドth1及び全ての同時実行スレッドは停止
状態になる。このときも、スレッドth1以外の排他実
行スレッドは、現在の状態を維持する。
【0238】もしスレッドth1のステップ実行途中に
おいて、同時実行スレッドth0、th3、又は実行中
の排他実行スレッドmainの内のいずれかのスレッド
(例えばth3)が非着目スレッドに対しても反応する
ブレークポイントに到達した場合、排他実行スレッドは
現在の状態を維持し、th3及びその他の同時実行スレ
ッドth0は停止させられる。
【0239】以上説明したように本実施形態によれば、
並列プログラム、例えばマルチスレッドプログラム、を
対象とするデバッグ装置において、スレッドを排他実行
スレッドとそうでないスレッドに分類して扱い、デバッ
グコマンドとしてスレッドに個別に与え得るものとスレ
ッド全体に与え得るものとを設け、排他実行スレッドに
指定されたものは同時に実行させないように動作させる
ことにより、複数のスレッドの実行を、デバッグ作業者
の希望する順序で制御することが可能となり、従ってデ
バッグ作業者は、タイミングに起因するバグの再現を常
に行うことができるようになる。
【0240】(第2の実施形態)次に、本発明の他の実
施形態を説明する。
【0241】上述した実施形態では、スレッドの分類
は、スレッド分類規則によるデフォルトの分類及びデバ
ッグ作業者からの分類の指示に依っていたが、本実施形
態においては、プログラムに含まれるモジュール、又
は、モジュールに含まれる関数、を属性によって分類す
ることによる、更に高度なスレッドの分類方法を示す。
【0242】図17は本実施形態に係るデバッグ装置の
構成を示すブロック図である。
【0243】同図に示すように、本デバッグ装置の構成
は図3に示す構成に、関数分類部1701及び関数分類
規則格納部1703を付加して成り立つ。但し図17は
本デバッグ装置の構成の主要部を示したものであり、図
3の構成と同様な箇所については記載を省略しているも
のもある。また図17において図3の構成と同等の部分
については図3の場合と同一番号を付し、以下の説明に
おいては当該共通部分については機能の説明を省略す
る。
【0244】関数分類部1701は、図18にその概念
が示されるように、ターゲットプログラム3中で定義さ
れた任意の関数(手続きを含む)を、例えば着目関数又
は非着目関数のいずれかに分類する機能を有する。この
場合、デバッグ作業者から特に関数分類の指示が与えら
れない限り、デフオルトでは関数分類規則格納部170
3に格納されている関数分類規則を用いて分類が行われ
る。
【0245】関数分類規則の例としては、 ・ターゲットプログラムで定義された関数を全て着目関
数とする。
【0246】・関数名に特定の文字列を含む物のみを着
目関数とする。
【0247】・オブジェクト指向プログラミング言語を
対象としている場合、デバッグ作業者に指定されたクラ
スのクラスメソッド及びインスタンスメソッドのみを着
目関数とする。
【0248】・オブジェクト指向プログラミング言語を
対象としている場合、デバッグ作業者に指定されたイン
スタンスのインスタンスメソッドのみを着目関数とす
る。
【0249】等が挙げられる。デバッグ作業者は、これ
らの規則のいずれを採用するかを選択することや新しい
規則を設けることができる。
【0250】これに応じて、スレッド分類規則には、新
しく、 ・着目関数に実行が移ったスレッドを着目スレッドとす
る。
【0251】・非着目関数に実行が移ったスレッドを非
着目スレッドとする。
【0252】等の規則を加える。
【0253】更にデバッグ作業者が、例えばスレッド別
デバッグコマンド『Step In』をあるスレッドに
与えたとき、そのスレッドが着目関数から、非着目関数
を呼び出すことになった場合には、デバッグ装置1側で
は、このコマンドを『Step Over』コマンドと
解釈して、非着目関数内部のステップ実行を行わないよ
うにすることもできる。
【0254】なお、以上の説明においては、モジュール
として関数を例にとり説明したが、モジュールたり得る
他の要素、例えば、クラス、メソッド、サブルーチン等
を対象としても同様の技術思想を適用することが可能で
ある。
【0255】以上説明したように、本実施形態に係るデ
バッグ装置によれば、プログラムに含まれる各モジュー
ルを着目形態に応じて分類し、この着目形態に応じてデ
バッグ制御するので、細かいデバッグ制御が可能とな
る。従って、第1の実施形態の場合のスレッド分類規則
と本実施形態の場合の関数分類規則とを適切に対応付け
ることによれば、第1の実施形態の場合にデバッグ作業
者にかかる手間を減らし、デバッグにおける利便性を一
層増すことが可能となる。
【0256】(第3の実施形態)次に、本発明の更に別
の実施形態について説明する。
【0257】本実施形態においては、ターゲットプログ
ラム3の自動テスト実行装置の実現例を述ベる。
【0258】図19は本実施形態に係る自動テスト装置
の構成を示すブロック図である。
【0259】同図に示すように、本テスト装置の構成は
図3に示す構成に、テストパターン生成部1901及び
デバッグログ記録部1903を付加して成り立つ。但し
図19は本テスト装置の構成の主要部を示したものであ
り、図3の構成と同様な箇所については記載を省略して
いるものもある。また図19において図3の構成と同等
の部分については図3の場合と同一番号を付し、以下の
説明においては当該共通部分については機能の説明を省
略する。
【0260】デバッグログ記録部1903では、作業者
20の入力した各種デバッグコマンド、スレッドの分
類、ターゲットプログラム3の状態等の時系列情報(シ
ナリオ)を記録する。これに加えてデバッグログ記録部
1903では更に、記録している各シナリオごとに、タ
ーゲットプログラム3の振る舞いにバグが含まれてるい
るか否かを作業者に判定させ、その判定結果を記録する
こともできる。
【0261】テストパターン生成部1901では、デバ
ッグログ記録部1903に記録された情報を基に、作業
者20によって実行の行われたスレッド制御のタイミン
グとは異なるタイミングでスレッドの動作を制御するよ
うなテストパターンを自動生成する。
【0262】作業者20の入力するデバッグコマンドに
代えて、テストパターン生成部1901で作られたテス
トパターンをデバッグ装置1に与えることにより、テス
トの自動実行を行うことができる。又、作業者20によ
って実行の行われたスレッド実行のタイミングと同じタ
イミングでスレッドの動作を制御すれば、作業者が過去
に行った作業を再生することができる。そして、この再
生の終了した後、又は、再生を途中で中断した後、作業
者20は、テスト作業を続行し、記録されたタイミング
とは異なる新たなスレッド実行のタイミングでスレッド
の動作を制御して手動でテストを行うこともできる。
【0263】本実施形態に係るテスト装置を用いた場合
の最大の特徴は、スレッド実行のタイミングを、テスト
の自動実行の都度完全に制御できる点にある。
【0264】自動テスト実行についての具体的な実現方
法については、例えば同一出願人による特願平9−28
8200号公報に開示された技術思想を用いることが可
能である。
【0265】即ち、プログラムをテスト動作させ、その
実行の際のログ(実行された文とその順序、外部からの
入力、外部への出力等の情報)を取り出し、この実行の
ログからプログラム動作として起こり得るものであって
もとの動作とテストの判定が異なる可能性のある動作を
発見させる。この発見をさせるために、プログラムを観
察有界と捉え、観察有界なプログラムでは与えられた具
体的シナリオを入出力の制約として解くことにより非決
定的な動作を総て網羅できる点を利用して膨大な量のシ
ナリオの中から対象を限定させる。
【0266】このような自動テスト装置に対して本実施
形態に係る技術的思想を適用すれば、例えばデバッグロ
グ記録部1903に記録されたデバッグ情報を上記の自
動テスト装置のテスト対象として用いることにより、デ
バッグ装置上でデバッグ実行された場合の各処理間の動
作のタイミングと異なるタイミングで該各処理を動作さ
せる動作過程を生成させ、結果として並列プログラムの
実行のタイミングを制御した上でテストの自動実行をす
ることが可能となる。
【0267】また自動テスト本来の、冗長なシナリオを
除いた効率の良いテストを並列プログラムの実行の微妙
なタイミングの制御を行いつつ実現することができる。
【0268】以上詳述したように、本実施形態のテスト
装置によれば、並列プログラムの実行を作業者の希望す
る順序で実行することが可能となり、従って作業者は、
タイミングに起因するバグの再現を常に行うことができ
るようになる。
【0269】従って本実施形態のテスト装置によれば、
テスト、特に並列プログラム、例えばマルチスレッドの
プログラムのテストにおいて、微妙なタイミングの設定
を行うことが可能となる。
【0270】従って本実施形態のテスト装置によれば、
効率的なテストを行うことが可能となる。
【0271】なお、本発明は、上述した実施形態には限
定されず、本発明の技術思想の範囲内で様々な変形が可
能である。
【0272】例えば、上述した実施形態では、本発明の
技術思想を具現化する対象としてデバッグ装置およびテ
スト装置を例にとり説明したが、例えば同様のデバッグ
機能をコンピュータに果たさせるようなプログラムを技
術思想の具現化対象とすることも可能である。
【0273】また、上述した実施形態においては、並列
プログラムとしてマルチスレッドプログラムを例にと
り、このプログラムをデバッグする場合について説明し
たが、並列プログラムとしてマルチプロセスプログラ
ム、マルチタスクプログラム等を用いても本発明の技術
思想を適用することが可能である。
【0274】また、上述した実施形態においては、デバ
ッグ対象の並列プログラム、例えばマルチスレッドプロ
グラムのスレッドをスレッド分類部が、着目スレッド及
び非着目スレッドのいずれかに分類するとともに、同対
象スレッドを排他実行スレッド、同時実行スレッド、継
続実行スレッドのいずれかに分類する場合を説明した。
しかしスレッド分類部はこの2種類の分類を常に同時に
しなければならないものではなく、どちらか一方の分類
を行うようにしても本発明の技術思想は適用できる。さ
らには、分類態様自体が着目・実行分類に限られるもの
でなく、他の分類態様を採用することによってもよい。
【0275】また、実行属性/着目属性に応じた実行・
停止の対応関係を律する実行規則/着目規則は図6の場
合を例として説明したが、同図以外の実行規則/着目規
則を採用する場合であってももとより本発明の技術思想
は適用可能である。
【0276】また上述した実施形態では、排他実行スレ
ッドは表示スレッドとされる論理を背景としたが、他の
論理を背景にする場合であっても本発明の技術思想は適
用可能である。表示規則についても同様に、上述した実
施形態の場合に限定されるものではない。
【0277】また上述した実施形態では、実際には起こ
り得ないタイミングでのプログラム実行を防止するため
に本来のスレッドの挙動をエミュレートするべく、スケ
ジューラ部が参照すべき各処理(例えばスレッド)の状
態指標として「優先度の高いスレッドが停止していると
きは、より低い優先度に係るスレッドの実行は行わな
い」を例にとり説明したが、状態指標としては本来のス
レッドの挙動を表すものであれば総て本発明の技術思想
の適用対象となり得る。
【0278】また上述した実施形態では、モジュール
(例えば、関数)の着目属性による分類を考慮して処理
(例えば、スレッド)を分類させる規則として「着目関
数に実行が移ったスレッドを着目スレッドとし、非着目
関数に実行が移ったスレッドを非着目スレッドとする」
を例にとり説明したが、当該分類規則としてはこの例の
場合に限定されるものでなく、他の分類規則であっても
もとより本発明の技術思想は適用可能である。
【0279】また上述した実施形態では、プログラムの
動作過程として各種デバッグコマンド及びターゲットプ
ログラムの状態等の時系列情報(シナリオ)を例にとり
説明したが、動作過程はここで挙げたものに限定される
ものでなく、プログラムの実行手順や挙動などを含めた
動作過程たる概念に対して、本発明の技術思想は適用可
能である。
【0280】さらには上述した実施形態では、特定の処
理(例えば、スレッド)ごとに設けられたウインドウに
表示された処理単位(例えば、スレッド中のプログラ
ム)を特定する手段としてプルダウンボタンをクリック
する場合を例にとり説明したが、該特定手段はこの方法
に限定されるものでなく、他の特定手段、例えばキーボ
ードからの入力等を用いる場合においても、本発明の技
術思想は適用可能である。
【0281】また上述した実施形態では、特定指示の入
力によりウインドウ画面に表示される処理命令(例え
ば、関数)を呼出す論理軌跡として、当該関数が呼び出
された論理的な履歴を例にとり説明したが、論理軌跡は
このような履歴に限らず、当該処理命令が実行されるた
めのプログラム上の手順を表現するもの一般に対して本
発明の技術思想を適用することが可能である。
【0282】
【発明の効果】以上詳述したように、請求項1及び25
記載の本発明では、デバッグ対象のプログラムに含まれ
る逐次実行単位のデバッグにあたり、特定の逐次実行単
位のみを対象として制御するので、逐次実行単位間の実
行のタイミングを任意に定めることが可能となる。
【0283】請求項2及び26記載の本発明では、特定
動作手段がプログラムに含まれる逐次実行単位の内、特
定の逐次実行単位のみについて実行を停止させるように
制御するので、逐次実行単位間の実行の再開又は停止の
タイミングを任意に定めることが可能となる。
【0284】請求項3及び27記載の本発明では、請求
項1及び2記載の発明の作用に加えて、プログラムに含
まれる各逐次実行単位を被制御形態に応じて分類し、こ
の分類情報に適応的にデバッグ装置は制御を行うので、
並列プログラムのデバッグ効率を高めることが可能とな
る。
【0285】請求項4及び28記載の本発明では、請求
項3記載の発明の作用に加えて、プログラムに含まれる
各逐次実行単位の分類を分類のための規則に基づいて行
い、この分類規則をデバッグ作業者が任意に更新できる
ので、並列プログラムの特定逐次実行単位について制御
させる動作がより機動的になる。
【0286】請求項5及び29記載の本発明では、請求
項3及び4記載の発明の作用に加えて、分類情報として
逐次実行単位の被制御形態に関する情報を用いるので、
より効率のよいデバッグを行うことが可能になる。
【0287】請求項6及び30記載の本発明では、請求
項3及び4記載の発明の作用に加えて、分類情報として
逐次実行単位の着目形態に関する情報を用いるので、デ
バッグ制御において着目性に適応させた制御を行うこと
により、より効率のよいデバッグを行うことが可能にな
る。
【0288】請求項7及び31に係る本発明では、請求
項3及び4記載の発明の作用に加えて、分類情報として
逐次実行単位の表示形態に関する情報を用いるので、デ
バッグ制御において表示性に適応させた制御を行うこと
により、より効率のよいデバッグを行うことが可能にな
る。
【0289】請求項8及び32記載の本発明では、デバ
ッグを制御する指示として、複数の逐次実行単位のうち
特定の逐次実行単位のみを対象とする特定制御指示と、
デバッグ対象のプログラム全体を対象とする一般制御指
示とを含んで構成されるので、デバッグ制御を細かく指
示することができ、より効率の良いデバッグを行うこと
が可能になる。
【0290】請求項9及び33記載の本発明では、デバ
ッグ対象のプログラムを構成する複数の逐次実行単位の
うち特定の逐次実行単位とを対象としてそれぞれの分類
に適応的にデバッグ制御がされるので、逐次実行単位の
分類を変えればデバッグ時の挙動を変えることができ、
従ってより効率の良いデバッグを行うことが可能にな
る。
【0291】請求項10及び34記載の本発明では、一
般制御指示が入力された場合、デバッグ対象のプログラ
ムの構成要素のうち実行または停止中の排他的逐次実行
単位及び並立的逐次実行単位のみについて実行または再
開させるように動作するので、プログラム全体に対する
制御指示を行う際に、デバッグ作業者が逐次実行単位に
対して1つ1つ制御指示を与えなければならない事態が
回避され、デバッグ作業における手間を省くことが可能
となる。
【0292】請求項11及び35記載の本発明では、特
定制御指示が入力された場合、デバッグ対象のプログラ
ムの構成要素のうち実行中の総ての並立的逐次実行単位
及び排他的逐次実行単位のうち特定制御指示入力手段に
よって指定された逐次実行単位の実行を停止または再開
するように動作するので、逐次実行単位ごとの詳細な制
御指示を行うことにより、他の排他的逐次実行単位の実
行を停止させる間に微妙なタイミングの設定をすること
が可能となる。
【0293】請求項12及び36記載の本発明では、請
求項9記載の発明の作用に加えて、逐次実行単位の状態
指標をデバッグ制御に反映させるので、デバッグ対象の
プログラムを、デバッグ装置を介さないで実行する際に
は起こり得ないタイミングの実行が回避され、さらに効
率的なデバッグが可能となる。
【0294】請求項13及び37記載の本発明では、制
御指示入力手段に特定の逐次実行単位を対象として第1
の単位実行指示が入力されたときに次に実行すべき命令
が内在的停止命令である場合には特定の逐次実行単位を
実行停止状態とし、該制御指示入力手段に第2の単位実
行指示が入力されると次の命令を実行可能な状態にする
ように制御するので、第1の単位実行指示と第2の単位
実行指示との間に他の排他的逐次実行単位を実行するこ
とにより微妙なタイミングの設定をすることが可能とな
る。
【0295】請求項14及び38記載の本発明では、プ
ログラムに含まれる各モジュールを、着目属性に応じて
分類し、特定の着目属性を持つモジュールに含まれる命
令群総てをプログラムの実行の際に同一に扱うように制
御するので、該プログラムに含まれるモジュールをその
被着目度に応じて適切に取り扱うことが可能となる。
【0296】請求項15及び39記載の本発明では、請
求項14記載の発明の作用に加えて、分類手段が、プロ
グラムに含まれる各モジュールに対する分類規則を用い
て前記各モジュールを分類する手段と、変更指示に基づ
いてその分類を更新する手段とを具備するので、そのモ
ジュールの属性をデバッグ作業者が変更することが可能
となり、より効率的なデバッグが可能となる。
【0297】請求項16及び40記載の本発明では、着
目しないモジュールで定義された命令群、例えば関数、
メソッド、手続き等の中に入り込むような『STEP
IN』命令は、当該命令群全体をひとかたまりに実行し
てしまう『STEP OVER』命令と解釈するので、
着目の対象でないモジュールに対する容易な実行制御が
可能となる。
【0298】請求項17及び41記載の本発明では、プ
ログラムに含まれる各モジュールを分類し、このモジュ
ールの分類を考慮して逐次実行単位を分類し、この各逐
次実行単位の分類に適応させてデバッグ制御を行うの
で、請求項1及び2に係る本願発明の目的とするところ
及び請求項15に係る本願発明の目的とするところを同
時に達成すること、即ち、着目の対象でないモジュール
に対する容易な実行制御が可能となると同時に、モジュ
ールの着目属性を逐次実行単位の分類に反映させた上で
逐次実行単位間の実行のタイミングを任意に定めること
が可能となる。
【0299】請求項18及び42記載の本発明では、デ
バッグログ手段に記録されたデバッグ情報を用いること
により、デバッグ装置上でデバッグ実行された場合の各
逐次実行単位間の動作のタイミングと同じ、又は異なる
タイミングで該各逐次実行単位を動作させる動作過程を
生成するので、例えばデバッグ作業者に提示することで
プログラムに含まれる問題発見が容易になる。
【0300】請求項19及び43記載の本発明では、請
求項18記載の発明の作用に加えてさらに、請求項18
記載の発明によって生成された動作過程を自動実行し、
その結果とデバッグ情報とを比較する手段を備えるの
で、効率的な自動テストが可能となる。
【0301】請求項20及び44記載の本発明では、デ
バッグ対象のプログラムに含まれる並列して実行される
複数の逐次実行単位を属性に応じて分類し、該逐次実行
単位ごとに設けられたウインドウに特定の属性を持つ逐
次実行単位の動作状態を表示し、該ウインドウごとに、
制御指示が入力されるように構成するので、並列プログ
ラムのデバッグの動作状態を並列的に可視化することが
可能となり、より効率的なデバッグが可能となる。
【0302】請求項21及び45記載の本発明では、請
求項20記載の発明の作用に加えて、デバッグ対象のプ
ログラム実行中の逐次実行単位の増減及び逐次実行単位
の分類の変化に対応させてウインドウが増減されるの
で、逐次実行単位の状態をより反映させたデバッグを行
うことができ、より効率的なデバッグが可能となる。
【0303】請求項22及び46記載の本発明では、デ
バッグ対象のプログラム全体に対する第1の制御指示を
入力するための手段と、デバッグ対象のプログラムに含
まれる並列して実行される複数の逐次実行単位を分類
し、該逐次実行単位ごとに設けられたウインドウに、特
定の属性の対応する逐次実行単位の動作状態と、該ウイ
ンドウに対応する逐次実行単位のみを対象とする第2の
制御指示を入力するための手段とを併有させることによ
り、より効率的なデバッグが可能となる。
【0304】請求項23及び47記載の本発明では、逐
次実行単位ごとのウインドウ画面内で逐次実行単位の実
行状況に適応させた前記第2の制御指示を入力する手段
のための表示を行うので、効率のよいデバッグが可能と
なる。
【0305】請求項24及び48記載の本発明では、デ
バッグ対象のプログラムに含まれる並列して実行される
複数の逐次実行単位のうち特定の逐次実行単位ごとに可
視的に設けられたウインドウごとに、該特定の逐次実行
単位が実行中のモジュールもしくは命令群を表示させ、
更に、そのウインドウに前記関数を呼出す論理軌跡を表
示するので、並列プログラムのデバッグの動作状態を並
列的に可視化し、デバッグ対象のプログラムの働きを理
解する助けとなる。
【0306】以上から、本発明の構成によれば、例えば
複数のスレッドの実行を、デバッグ作業者の希望する順
序で実行制御することが可能となり、従ってデバッグ作
業者は、タイミングに起因するバグの再現を常に行うこ
とができるようになる。
【0307】従って、並列プログラム、例えばマルチス
レッドプログラムをデバッグするユーザは、スレッド間
の実行を任意の順序でステップ実行することが可能とな
り、これによって、従来のデバッグ装置では再現するこ
とが困難であったプログラム中の誤りを非常に効率良く
デバッグすることができるようになる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係り、デバッグ装置の用
いられる環境を示す概念図である。
【図2】本発明の一実施形態に係り、マルチスレッドプ
ログラムのデバッグ装置の構成を示す概念図である。
【図3】本発明の一実施形態に係り、マルチスレッドプ
ログラムのデバッグ装置の構成を、デバッグ作業者及び
ターゲットプログラムとの関係において示した概念図で
ある。
【図4】本発明の一実施形態に係り、デバッグコマンド
の種別を表した図である。
【図5】本発明の一実施形態に係り、スレッド分類部及
びスレッド表示部の働きを説明するための概念図であ
る。
【図6】本発明の一実施形態に係り、一般/スレッド別
デバッグコマンドを与えられた排他実行/同時実行/継
続実行スレッド別の振る舞いの対応関係を示す概念図で
ある。
【図7】本発明の一実施形態に係り、デバッグ装置の動
作を示すフローチャートである。
【図8】本発明の一実施形態に係り、デバッグ装置の動
作を示すフローチャートである。
【図9】本発明の一実施形態に係り、デバッグ装置の動
作を示すフローチャートである。
【図10】本発明の一実施形態に係り、デバッグ装置の
動作を示すフローチャートである。
【図11】本発明の一実施形態に係り、デバッグ装置の
動作を示すフローチャートである。
【図12】本発明の一実施形態に係るデバッグ装置の画
面を表す概念図である。
【図13】本発明の一実施形態に係り、一般コントロー
ルパネルを示す概念図である。
【図14】本発明の一実施形態に係るデバッグ装置の画
面を表す概念図である。
【図15】本発明の一実施形態に係るデバッグ装置の画
面を表す概念図である。
【図16】本発明の一実施形態に係るデバッグ装置の画
面を表す概念図である。
【図17】本発明の一実施形態に係り、マルチスレッド
プログラムのデバッグ装置の構成を示す概念図である。
【図18】本発明の一実施形態に係り、関数分類に関し
て説明するための概念図である。
【図19】本発明の一実施形態に係り、マルチスレッド
プログラムのテスト装置の構成を示す概念図である。
【図20】従来のデバッグ装置の画面を概念的に表した
図である。
【符号の説明】
1 デバッグ装置 101 CPU 107 記憶装置 109 ターゲットプログラム読み込み部 111 ターゲットプログラム実行部 113 ターゲットプログラム停止部 115 排他的スレッド実行機構 117 スケジューラ部 121 スレッド分類部 123 スレッド分類規則格納部 125 デバッグコマンド表示部 127 デバッグコマンド入力部 129 スレッド表示部 131 スレッド表示規則格納部 1201 スレッドトレースウインドウ 1202 スレッドコントロール部 1404 スタックフレーム選択表示部 1405 スレッド別デバッグコマンド指示部 1701 関数分類部 1703 関数分類規則格納部 1901 テストパターン生成部 1903 デバッグログ記録部

Claims (48)

    【特許請求の範囲】
  1. 【請求項1】 並列して実行される逐次実行単位を含む
    プログラムについてのデバッグの制御を行う制御手段
    と、 前記逐次実行単位の内、特定の逐次実行単位のみについ
    て前記制御手段を動作させる対象特定制御手段とを具備
    することを特徴とするデバッグ装置。
  2. 【請求項2】 前記対象特定制御手段が、デバッグ制御
    の対象となる特定の逐次実行単位のみについて実行の再
    開または停止を行わせる手段をさらに具備することを特
    徴とする請求項1記載のデバッグ装置。
  3. 【請求項3】 前記対象特定制御手段は、 前記各逐次実行単位の分類を指定するための手段と、 前記指定された分類を表す分類情報を入力するための手
    段と、 前記入力された分類情報に従ってデバッグ制御を行う手
    段とを具備することを特徴とする請求項1または2記載
    のデバッグ装置。
  4. 【請求項4】 前記対象特定制御手段は、 前記各逐次実行単位の分類のための規則を記録する手段
    と、 前記記録された規則を用いて前記各逐次実行単位の初期
    の分類を定める手段と、 前記分類を変更するための手段とをさらに具備すること
    を特徴とする請求項3記載のデバッグ装置。
  5. 【請求項5】 前記分類情報は、 デバッグ装置が前記逐次実行単位を制御する形態に関す
    る情報であることを特徴とする請求項3または4記載の
    デバッグ装置。
  6. 【請求項6】 前記分類情報は、 前記逐次実行単位についてデバッグ作業者が着目する程
    度に関する情報であることを特徴とする請求項3または
    4記載のデバッグ装置。
  7. 【請求項7】 前記分類情報は、 デバッグ装置が前記逐次実行単位の状態を表示させる形
    態に関する情報であることを特徴とする請求項3または
    4記載のデバッグ装置。
  8. 【請求項8】 並列して実行される逐次実行単位を含む
    プログラムをデバッグするデバッグ装置において、 前記デバッグ装置は、前記プログラムの状態を制御する
    指示を入力するための手段を具備し、 前記指示は、 前記プログラムの状態のうち、特定の逐次実行単位に関
    する実行状態のみを対象とする特定制御指示と、 前記プログラムの状態全体を対象とする一般制御指示と
    を含むことを特徴とするデバッグ装置。
  9. 【請求項9】 デバッグ対象のプログラムの状態全体を
    対象とする制御を行うための制御指示を入力する一般制
    御指示入力手段と、 前記デバッグ対象のプログラムに含まれる特定の逐次実
    行単位を対象として、該逐次実行単位の実行状態の制御
    を行うための制御指示を入力する特定制御指示入力手段
    と、 前記デバッグ対象のプログラムに含まれる各逐次実行単
    位を分類する分類手段と、 前記一般制御指示入力手段もしくは特定制御指示入力手
    段にプログラムの状態を制御するための指示が入力され
    た場合には、前記分類手段による分類に基づく制御情報
    に従ってプログラムの状態の制御を行う制御手段とを具
    備することを特徴とするデバッグ装置。
  10. 【請求項10】 デバッグ対象のプログラムの状態全体
    を対象とする制御を行うための制御指示を入力する一般
    制御指示入力手段と、 前記デバッグ対象のプログラムに含まれる各逐次実行単
    位を、被制御形態に基づいて排他的逐次実行単位、並立
    的逐次実行単位及び継続的逐次実行単位のいずれかに分
    類する分類手段と、 前記一般制御指示入力手段に逐次実行単位の実行を停止
    する指示が入力された場合には、前記分類手段により排
    他的逐次実行単位及び並立的逐次実行単位に分類された
    逐次実行単位のうち実行中の逐次実行単位の実行を停止
    する停止手段と、 前記一般制御指示入力手段に逐次実行単位の実行を再開
    する指示が入力された場合には、前記分類手段により排
    他的逐次実行単位及び並立的逐次実行単位に分類された
    逐次実行単位のうち停止された逐次実行単位の実行を再
    開する再開手段とを具備することを特徴とするデバッグ
    装置。
  11. 【請求項11】 デバッグ対象のプログラムを構成する
    逐次実行単位のうち特定の逐次実行単位を対象として、
    該逐次実行単位の実行状態の制御を行うための制御指示
    を入力する特定制御指示入力手段と、 前記デバッグ対象のプログラムに含まれる各逐次実行単
    位を、被制御形態に基づいて排他的逐次実行単位、並立
    的逐次実行単位及び継続的逐次実行単位のいずれかに分
    類する分類手段と、 前記特定制御指示入力手段に逐次実行単位の実行を停止
    する指示が入力された場合には、前記分類手段により並
    立的逐次実行単位に分類された逐次実行単位のうち実行
    中の総ての逐次実行単位及び前記分類手段により排他的
    逐次実行単位に分類された逐次実行単位のうち前記特定
    制御指示入力手段によって第1の指定がされた逐次実行
    単位の実行を停止する停止手段と、 前記特定制御指示入力手段に逐次実行単位の実行を再開
    する指示が入力された場合には、前記分類手段により並
    立的逐次実行単位に分類された逐次実行単位の総て、及
    び排他的逐次実行単位に分類された逐次実行単位のうち
    前記特定制御指示入力手段によって第2の指定がされた
    逐次実行単位の実行を再開する再開手段とを具備するこ
    とを特徴とするデバッグ装置。
  12. 【請求項12】 前記制御手段は、 前記デバッグ対象のプログラムに含まれる各逐次実行単
    位の状態指標に対応させて該逐次実行単位の実行状態の
    制御を行う手段を具備することを特徴とする請求項9記
    載のデバッグ装置。
  13. 【請求項13】 内在的停止命令を含む命令群を逐次実
    行する特定の逐次実行単位を含むプログラムのデバッグ
    装置において、 前記特定の逐次実行単位に対する単位実行指示を入力す
    るための特定制御指示入力手段と、 前記特定制御指示入力手段に第1の単位実行指示が入力
    されたときに前記特定の逐次実行単位が次に実行すべき
    命令が前記内在的停止命令である場合には前記特定の逐
    次実行単位を実行停止状態とし、前記特定制御指示入力
    手段に前記実行停止状態とされた逐次実行単位に対して
    の第2の単位実行指示が入力されると該逐次実行単位が
    前記内在的停止命令の次の命令を実行可能な状態にする
    手段とを具備することを特徴とするデバッグ装置。
  14. 【請求項14】 命令群を有するモジュールが定義され
    るデバッグ対象のプログラムに含まれる各モジュールを
    着目形態において分類する分類手段と、 前記分類手段による着目形態に応じたデバッグ制御を行
    う手段とを具備することを特徴とするデバッグ装置。
  15. 【請求項15】 前記分類手段は、 前記モジュールを分類のための規則を用いて分類する手
    段と、 外部からの指示を入力するための手段と、 前記入力された指示に基づいて前記モジュールの分類を
    更新する手段とを具備することを特徴とする請求項14
    記載のデバッグ装置。
  16. 【請求項16】 デバッグ対象のプログラム内のモジュ
    ールで定義される命令群に対する単位実行指示が入力さ
    れる制御指示入力手段と、 前記各モジュールを着目属性に応じて着目モジュール及
    び非着目モジュールに分類する分類手段と、 前記制御指示入力手段に前記非着目モジュール内で定義
    された命令群への単位実行指示が入力された場合には該
    命令群全体を実行する手段とを具備することを特徴とす
    るデバッグ装置。
  17. 【請求項17】 デバッグ対象のプログラムに含まれる
    並列して実行される逐次実行単位が実行する一、又は、
    複数の命令群を有するモジュールを分類するモジュール
    分類手段と、 前記各逐次実行単位を、前記モジュール分類手段による
    分類を考慮して定められる分類規則に基づいてプログラ
    ムの実行時に動的に分類する逐次実行単位分類手段と、 前記逐次実行単位分類手段による分類情報に従ってデバ
    ッグ制御を行う手段とをさらに具備することを特徴とす
    る請求項1または2記載のデバッグ装置。
  18. 【請求項18】 並列して実行される逐次実行単位を含
    むプログラムの動作を制御するための第1の制御指示群
    を記録する手段と、 前記制御指示群に従って前記プログラムの動作を制御す
    ることで得られる前記プログラムの第1の動作過程を記
    録する動作過程記録手段と、 前記動作過程記録手段に記録された第1の動作過程と同
    じ、又は、異なる動作をするように該各逐次実行単位を
    制御する第2の制御指示群を生成する手段とを具備する
    ことを特徴とするデバッグ装置。
  19. 【請求項19】 前記生成された第2の制御指示群に従
    って前記プログラムの動作を制御する手段と、 前記実行によって得られる第2の動作過程と前記第1の
    動作過程とを比較する手段とをさらに具備することを特
    徴とする請求項18記載のデバッグ装置。
  20. 【請求項20】 デバッグ対象のプログラムに含まれる
    並列して実行される逐次実行単位を属性に応じて分類す
    る分類手段と、 前記分類手段により特定の属性を持つと分類される逐次
    実行単位の動作状態を、該逐次実行単位ごとに設けられ
    たウインドウに表示する手段と、 前記ウインドウごとに、該ウインドウに対応する逐次実
    行単位のみを対象とする第1の制御指示を入力するため
    の手段と、 前記プログラム全体を対象とする第2の制御指示を入力
    するための手段とを具備することを特徴とするデバッグ
    装置。
  21. 【請求項21】 実行中の逐次実行単位の増減及び前記
    分類手段による逐次実行単位の分類の変化に対応させて
    前記ウインドウをプログラムの実行時に動的に増減させ
    る手段をさらに具備することを特徴とする請求項20記
    載のデバッグ装置。
  22. 【請求項22】 デバッグ対象のプログラムに含まれる
    並列して実行される逐次実行単位を分類する手段と、 前記逐次実行単位ごとに設けられたウインドウに該逐次
    実行単位の動作状態を前記分類に適応させて可視的に表
    示する手段と、 前記プログラム全体を対象とする第1の制御指示を入力
    するための手段と、 前記ウインドウごとに該ウインドウに対応する逐次実行
    単位のみを対象とする第2の制御指示を入力するための
    手段とを具備することを特徴とするデバッグ装置。
  23. 【請求項23】 デバッグ対象のプログラム内の並列実
    行される逐次実行単位ごとに設けられたウインドウ画面
    内に、 前記逐次実行単位に対する前記第2の制御指示を入力す
    るための手段のための表示を該逐次実行単位の実行状態
    に適応させて行う手段を具備することを特徴とするデバ
    ッグ装置。
  24. 【請求項24】 前記逐次実行単位ごとに設けられたウ
    インドウ画面ごとに、 前記逐次実行単位が実行中のモジュールもしくは命令群
    を表示する手段と、 該ウインドウに前記モジュールを構成する命令群を呼出
    す論理軌跡を表示する手段とをさらに具備することを特
    徴とする請求項23記載のデバッグ装置。
  25. 【請求項25】 並列して実行される逐次実行単位を含
    むデバッグ対象プログラムについてのデバッグの制御を
    行う制御手段と、 前記逐次実行単位のうち特定の逐次実行単位のみについ
    て前記制御手段を動作させる対象特定制御手段とをコン
    ピュータを機能させるためのプログラムとして記録した
    記録媒体。
  26. 【請求項26】 前記対象特定制御手段が、デバッグ制
    御の対象となる特定の逐次実行単位のみについて実行の
    再開または停止を行わせる手段をさらに具備することを
    特徴とする請求項25記載の記録媒体。
  27. 【請求項27】 前記対象特定制御手段は、 前記各逐次実行単位の分類を指定するための手段と、 前記指定された分類を表す分類情報を入力するための手
    段と、 前記入力された分類情報に従ってデバッグ制御を行う手
    段とを具備することを特徴とする請求項25または26
    記載の記録媒体。
  28. 【請求項28】 前記対象特定制御手段は、 前記各逐次実行単位の分類のための規則を記録する手段
    と、 前記記録された規則を用いて前記各逐次実行単位の初期
    の分類を定める手段と、 前記分類を変更するための手段とをさらに具備すること
    を特徴とする請求項27記載の記録媒体。
  29. 【請求項29】 前記分類情報は、 前記逐次実行単位を制御する形態に関する情報であるこ
    とを特徴とする請求項27または28記載の記録媒体。
  30. 【請求項30】 前記分類情報は、 前記逐次実行単位についてデバッグ作業者が着目する程
    度に関する情報であることを特徴とする請求項27また
    は28記載の記録媒体。
  31. 【請求項31】 前記分類情報は、 前記逐次実行単位の状態を表示させる形態に関する情報
    であることを特徴とする請求項27または28記載の記
    録媒体。
  32. 【請求項32】 並列して実行される逐次実行単位を含
    むデバッグ対象プログラムの状態を制御する指示を入力
    するための手段がコンピュータを機能させるためのプロ
    グラムとして記録され、 前記指示は、 前記デバッグ対象プログラムの状態のうち、特定の逐次
    実行単位に関する実行状態のみを対象とする特定制御指
    示と、 前記デバッグ対象プログラムの状態全体を対象とする一
    般制御指示とを含むことを特徴とする記録媒体。
  33. 【請求項33】 デバッグ対象プログラムの状態全体を
    対象とする制御を行うための制御指示を入力する一般制
    御指示入力手段と、 前記デバッグ対象プログラムに含まれる特定の逐次実行
    単位を対象として、該逐次実行単位の実行状態の制御を
    行うための制御指示を入力する特定制御指示入力手段
    と、 前記デバッグ対象プログラムに含まれる各逐次実行単位
    を分類する分類手段と、 前記一般制御指示入力手段もしくは特定制御指示入力手
    段に前記デバッグ対象プログラムの状態を制御するため
    の指示が入力された場合には、前記分類手段による分類
    に基づく制御情報に従って前記デバッグ対象プログラム
    の状態の制御を行う制御手段とをコンピュータを機能さ
    せるためのプログラムとして記録した記録媒体。
  34. 【請求項34】 デバッグ対象のプログラムの状態全体
    を対象とする制御を行うための制御指示を入力する一般
    制御指示入力手段と、 前記デバッグ対象プログラムに含まれる各逐次実行単位
    を、被制御形態に基づいて排他的逐次実行単位、並立的
    逐次実行単位及び継続的逐次実行単位のいずれかに分類
    する分類手段と、 前記一般制御指示入力手段に逐次実行単位の実行を停止
    する指示が入力された場合には、前記分類手段により排
    他的逐次実行単位及び並立的逐次実行単位に分類された
    逐次実行単位のうち実行中の逐次実行単位の実行を停止
    する停止手段と、 前記一般制御指示入力手段に逐次実行単位の実行を再開
    する指示が入力された場合には、前記分類手段により排
    他的逐次実行単位及び並立的逐次実行単位に分類された
    逐次実行単位のうち停止された逐次実行単位の実行を再
    開する再開手段とをコンピュータを機能させるためのプ
    ログラムとして記録した記録媒体。
  35. 【請求項35】 デバッグ対象のプログラムを構成する
    逐次実行単位のうち特定の逐次実行単位を対象として、
    該逐次実行単位の実行状態の制御を行うための制御指示
    を入力する特定制御指示入力手段と、 前記デバッグ対象のプログラムに含まれる各逐次実行単
    位を、被制御形態に基づいて排他的逐次実行単位、並立
    的逐次実行単位及び継続的逐次実行単位のいずれかに分
    類する分類手段と、 前記特定制御指示入力手段に逐次実行単位の実行を停止
    する指示が入力された場合には、前記分類手段により並
    立的逐次実行単位に分類された逐次実行単位のうち実行
    中の総ての逐次実行単位及び前記分類手段により排他的
    逐次実行単位に分類された逐次実行単位のうち前記特定
    制御指示入力手段によって第1の指定がされた逐次実行
    単位の実行を停止する停止手段と、 前記特定制御指示入力手段に逐次実行単位の実行を再開
    する指示が入力された場合には、前記分類手段により並
    立的逐次実行単位に分類された逐次実行単位の総て、及
    び排他的逐次実行単位に分類された逐次実行単位のうち
    前記特定制御指示入力手段によって第2の指定がされた
    逐次実行単位の実行を再開する再開手段とをコンピュー
    タを機能させるためのプログラムとして記録した記録媒
    体。
  36. 【請求項36】 前記制御手段は、 前記デバッグ対象プログラムに含まれる各逐次実行単位
    の状態指標に対応させて該逐次実行単位の実行状態の制
    御を行う手段を具備することを特徴とする請求項33記
    載の記録媒体。
  37. 【請求項37】 内在的停止命令を含む命令群を逐次実
    行する特定の逐次実行単位を含むプログラムのデバッグ
    を行うためのプログラムが記録された記録媒体におい
    て、 前記特定の逐次実行単位に対する単位実行指示を入力す
    るための特定制御指示入力手段と、 前記特定制御指示入力手段に第1の単位実行指示が入力
    されたときに前記特定の逐次実行単位が次に実行すべき
    命令が前記内在的停止命令である場合には前記特定の逐
    次実行単位を実行停止状態とし、前記特定制御指示入力
    手段に前記実行停止状態とされた逐次実行単位に対して
    の第2の単位実行指示が入力されると該逐次実行単位が
    前記内在的停止命令の次の命令を実行可能な状態にする
    手段とをコンピュータを機能させるためのプログラムと
    して記録した記録媒体。
  38. 【請求項38】 命令群を有するモジュールが定義され
    るデバッグ対象のプログラムに含まれる各モジュールを
    着目形態において分類する分類手段と、 前記分類手段による着目形態に応じたデバッグ制御を行
    う手段とをコンピュータを機能させるためのプログラム
    として記録した記録媒体。
  39. 【請求項39】 前記分類手段は、 前記モジュールを分類のための規則を用いて分類する手
    段と、 外部からの指示を入力するための手段と、 前記入力された指示に基づいて前記モジュールの分類を
    更新する手段とを具備することを特徴とする請求項37
    記載の記録媒体。
  40. 【請求項40】 デバッグ対象のプログラム内のモジュ
    ールで定義される命令群に対する単位実行指示が入力さ
    れる制御指示入力手段と、 前記各モジュールを着目属性に応じて着目モジュール及
    び非着目モジュールに分類する分類手段と、 前記制御指示入力手段に前記非着目モジュール内で定義
    された命令群への単位実行指示が入力された場合には該
    命令群全体を実行する手段とをコンピュータを機能させ
    るためのプログラムとして記録した記録媒体。
  41. 【請求項41】 デバッグ対象のプログラムに含まれる
    並列して実行される逐次実行単位が実行する一、又は、
    複数の命令群を有するモジュールを分類するモジュール
    分類手段と、 前記各逐次実行単位を、前記モジュール分類手段による
    分類を考慮して定められる分類規則に基づいて前記デバ
    ッグ対象プログラムの実行時に動的に分類する逐次実行
    単位分類手段と、 前記逐次実行単位分類手段による分類情報に従ってデバ
    ッグ制御を行う手段とをさらに具備することを特徴とす
    る請求項25または26記載の記録媒体。
  42. 【請求項42】 並列して実行される逐次実行単位を含
    むデバッグ対象プログラムの動作を制御するための第1
    の制御指示群を記録する手段と、 前記制御指示群に従って前記デバッグ対象プログラムの
    動作を制御することで得られる前記デバッグ対象プログ
    ラムの第1の動作過程を記録する動作過程記録手段と、 前記動作過程記録手段に記録された第1の動作過程と同
    じ、又は、異なる動作をするように該各逐次実行単位を
    制御する第2の制御指示群を生成する手段とをコンピュ
    ータを機能させるためのプログラムとして記録した記録
    媒体。
  43. 【請求項43】 前記生成された第2の制御指示群に従
    って前記デバッグ対象プログラムの動作を制御する手段
    と、 前記実行によって得られる第2の動作過程と前記第1の
    動作過程とを比較する手段とをさらに具備することを特
    徴とする請求項42記載の記録媒体。
  44. 【請求項44】 デバッグ対象のプログラムに含まれる
    並列して実行される逐次実行単位を属性に応じて分類す
    る分類手段と、 前記分類手段により特定の属性を持つと分類される逐次
    実行単位の動作状態を、該逐次実行単位ごとに設けられ
    たウインドウに表示する手段と、 前記ウインドウごとに、該ウインドウに対応する逐次実
    行単位のみを対象とする第1の制御指示を入力するため
    の手段と、 前記デバッグ対象プログラム全体を対象とする第2の制
    御指示を入力するための手段とをコンピュータを機能さ
    せるためのプログラムとして記録した記録媒体。
  45. 【請求項45】 実行中の逐次実行単位の増減及び前記
    分類手段による逐次実行単位の分類の変化に対応させて
    前記ウインドウを前記デバッグ対象プログラムの実行時
    に動的に増減させる手段をさらに具備することを特徴と
    する請求項44記載の記録媒体。
  46. 【請求項46】 デバッグ対象のプログラムに含まれる
    並列して実行される逐次実行単位を分類する手段と、 前記逐次実行単位ごとに設けられたウインドウに該逐次
    実行単位の動作状態を前記分類に適応させて可視的に表
    示する手段と、 前記デバッグ対象プログラム全体を対象とする第1の制
    御指示を入力するための手段と、 前記ウインドウごとに該ウインドウに対応する逐次実行
    単位のみを対象とする第2の制御指示を入力するための
    手段とをコンピュータを機能させるためのプログラムと
    して記録した記録媒体。
  47. 【請求項47】 デバッグ対象のプログラム内の並列実
    行される逐次実行単位ごとに設けられたウインドウ画面
    内に、 前記逐次実行単位に対する前記第2の制御指示を入力す
    るための手段のための表示を該逐次実行単位の実行状態
    に適応させて行う手段をコンピュータを機能させるため
    のプログラムとして記録した記録媒体。
  48. 【請求項48】 前記逐次実行単位ごとに設けられたウ
    インドウ画面ごとに、 前記逐次実行単位が実行中のモジュールもしくは命令群
    を表示する手段と、 該ウインドウに前記モジュールを構成する命令群を呼出
    す論理軌跡を表示する手段とをさらに具備することを特
    徴とする請求項47記載の記録媒体。
JP11053392A 1998-02-27 1999-03-01 デバッグ装置及び記録媒体 Pending JPH11338733A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11053392A JPH11338733A (ja) 1998-02-27 1999-03-01 デバッグ装置及び記録媒体

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP10-48424 1998-02-27
JP4842498 1998-02-27
JP11053392A JPH11338733A (ja) 1998-02-27 1999-03-01 デバッグ装置及び記録媒体

Publications (1)

Publication Number Publication Date
JPH11338733A true JPH11338733A (ja) 1999-12-10

Family

ID=26388696

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11053392A Pending JPH11338733A (ja) 1998-02-27 1999-03-01 デバッグ装置及び記録媒体

Country Status (1)

Country Link
JP (1) JPH11338733A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7284238B2 (en) 2002-12-18 2007-10-16 International Business Machines Corporation Multithread tracing method and apparatus
JP2008098756A (ja) * 2006-10-06 2008-04-24 Sony Corp データ放送処理装置および方法、並びにプログラム
JP2009205623A (ja) * 2008-02-29 2009-09-10 Nec Corp テキスト表示装置、テキスト表示方法及びプログラム
EP1785872A3 (en) * 2005-11-01 2010-03-31 Sony Computer Entertainment Inc. Thread debugging device, thread debugging method and information storage medium
JP2011070256A (ja) * 2009-09-24 2011-04-07 Toshiba Corp デバッガおよびプログラム
JP2013127782A (ja) * 2004-09-14 2013-06-27 Synopsys Inc マルチコアアーキテクチャーにおけるデバッグ

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7284238B2 (en) 2002-12-18 2007-10-16 International Business Machines Corporation Multithread tracing method and apparatus
JP2013127782A (ja) * 2004-09-14 2013-06-27 Synopsys Inc マルチコアアーキテクチャーにおけるデバッグ
JP2013239196A (ja) * 2004-09-14 2013-11-28 Synopsys Inc マルチコアアーキテクチャーにおけるデバッグ
EP1785872A3 (en) * 2005-11-01 2010-03-31 Sony Computer Entertainment Inc. Thread debugging device, thread debugging method and information storage medium
US8136097B2 (en) 2005-11-01 2012-03-13 Sony Computer Entertainment Inc. Thread debugging device, thread debugging method and information storage medium
JP2008098756A (ja) * 2006-10-06 2008-04-24 Sony Corp データ放送処理装置および方法、並びにプログラム
US8875182B2 (en) 2006-10-06 2014-10-28 Sony Corporation Data broadcast processing device, method and program having features that prevent simultaneous execution of imcompatible processes
JP2009205623A (ja) * 2008-02-29 2009-09-10 Nec Corp テキスト表示装置、テキスト表示方法及びプログラム
JP2011070256A (ja) * 2009-09-24 2011-04-07 Toshiba Corp デバッガおよびプログラム

Similar Documents

Publication Publication Date Title
US5903728A (en) Plug-in control including an independent plug-in process
US8336032B2 (en) Implementing enhanced template debug
US6275956B1 (en) Integrated dynamic-visual parallel debugging apparatus and method thereof
US8250537B2 (en) Flexible horizontal stack display and editor
US20040205702A1 (en) Windows-based flowcharting and code generation system
US20060005170A1 (en) Finite State model-based testing user interface
US20050289396A1 (en) Conditional breakpoint using breakpoint function and breakpoint command
US20070074168A1 (en) Automated step type determination
KR20070121649A (ko) 소프트웨어 프로그램의 성능분석 방법 및 장치
US6295613B1 (en) Debug watch mechanism and method for debugging a computer program
US6526567B1 (en) System and method for optimizing a device driver by incorporating debugging and tracing
US20040098639A1 (en) Debugging kernel-loadable modules and suspending and replacing functions in non-microkernel operating systems
JP6984565B2 (ja) 情報処理装置およびプログラム
JPH11338733A (ja) デバッグ装置及び記録媒体
JP2007086921A (ja) 機械装置制御プログラム実行システム
KR20000018932A (ko) 게임 개발 시스템 및 그 방법
US20050066312A1 (en) Inter-job breakpoint apparatus and method
US20030177471A1 (en) System and method for graphically developing a program
US20200272553A1 (en) Configurable system for interaction with system or processor states in development tools
US20190213108A1 (en) Method that supports multithreading/concurrent programming debugging, computer readable recording medium and computer program product
US8458665B2 (en) Debugger with audiation
JP2000112736A (ja) プログラム作成装置
Yan et al. The automated instrumentation and monitoring system (AIMS) reference manual
JPH02275539A (ja) デバッグ処理方式
US11372743B2 (en) Computer devices and computer implemented methods

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040406