JP2004192139A - デバッグ装置、デバッグ方法および記録媒体 - Google Patents
デバッグ装置、デバッグ方法および記録媒体 Download PDFInfo
- Publication number
- JP2004192139A JP2004192139A JP2002356975A JP2002356975A JP2004192139A JP 2004192139 A JP2004192139 A JP 2004192139A JP 2002356975 A JP2002356975 A JP 2002356975A JP 2002356975 A JP2002356975 A JP 2002356975A JP 2004192139 A JP2004192139 A JP 2004192139A
- Authority
- JP
- Japan
- Prior art keywords
- program
- debugging
- parallel
- sequential
- parallel program
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【課題】並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ装置であって、作業者がデバッグ作業を効率良く行うことができるものを提供すること。
【解決手段】並列プログラム31を逐次プログラム34に変換するとともに、並列プログラム31と逐次プログラム34との対応関係を表すデバッグ情報を生成する逐次化手段32を備える。そのデバッグ情報を記憶する記憶手段35を備える。そのデバッグ情報に基づいて、並列プログラム31と逐次プログラム34との間で対応する情報同士を相互に変換する変換手段37を備える。
【選択図】 図3
【解決手段】並列プログラム31を逐次プログラム34に変換するとともに、並列プログラム31と逐次プログラム34との対応関係を表すデバッグ情報を生成する逐次化手段32を備える。そのデバッグ情報を記憶する記憶手段35を備える。そのデバッグ情報に基づいて、並列プログラム31と逐次プログラム34との間で対応する情報同士を相互に変換する変換手段37を備える。
【選択図】 図3
Description
【0001】
【発明の属する技術分野】
この発明は、並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ装置およびデバッグ方法に関する。また、そのようなデバッグ方法を実現させるためのプログラムを記録した記録媒体に関する。
【0002】
なお、並列プログラミング言語により記述されたプログラムを並列プログラムと呼ぶ。
【0003】
また、逐次処理を記述するためのプログラミング言語を逐次プログラミング言語、それにより記述されたプログラムを逐次プログラムと呼ぶ。
【0004】
また、デバッグとはプログラムの不具合を特定して修正することを意味する。
【0005】
【従来の技術】
一般に、並列にいくつかの動作を同時に行う処理を記述する場合、並列プログラミング言語が用いられる。例えば、大規模集積回路(LSI)の設計においては、その内部の動作は基本的に並列動作であるため、プログラミング言語としては、逐次処理を記述するプログラミング言語ではなく、並列プログラミング言語が用いられる。この並列プログラミング言語により設計されたLSIの動作を検証するためには、本来、そのLSIの動作が記述された並列プログラムを計算機上で動作させるのが望ましい。
【0006】
しかし、LSIの設計者が設計のために使用している計算機は、逐次プログラムを実行するものであることが多い。そのような逐次プログラムを実行する計算機を使って、並列プログラムを直接実行することはできない。
【0007】
そこで、図1に示すように、並列プログラム1を逐次化装置2によって自動的に逐次プログラム4に変換し、得られた逐次プログラム4をその計算機上で実行する方法が広く行われている。逐次プログラム4を実行した結果、元の並列プログラム1にバグ(不具合)があることが分かった場合、設計者は逐次プログラム4をデバッガ6上で動作させて不具合個所を特定し、その後、元の並列プログラム1の対応する個所を修正する。
【0008】
【発明が解決しようとする課題】
ところで、並列プログラム1を逐次化装置2によって自動的に逐次プログラム4に変換する際に、並列プログラム1での一つの行が、逐次プログラム4では複数の行からなる処理に書換えられる場合がある。また、変数名についても、並列プログラム1での或る変数名が、逐次プログラム4では別の変数名に書き換えられる場合がある。
【0009】
しかし、上述の方法では、並列プログラム1から逐次プログラム4への変換時には、並列プログラム1での或る行が逐次プログラム4ではどの行に書換えられたかや、並列プログラム1での或る変数名が逐次プログラム4ではどの変数名に書換えられたかの情報が残らない。
【0010】
そのため、デバッグを行う作業者は、並列プログラム1での行と逐次プログラム4での行との対応を自身で取りながら作業を行わなければならない。また、並列プログラムでの変数名と逐次プログラムでの変数名との対応も自身で取りながら作業を行わなければならない。このため、並列プログラムを逐次プログラムに変換してデバッグを行う作業は、非常に効率が悪くなり、時間がかかるという問題がある。
【0011】
また、図2に示すように、並列プログラム1を一旦逐次プログラム4に変換し、逐次プログラム4に不具合があった場合は、元の並列プログラム1ではなく逐次プログラム4を修正し、修正後の逐次プログラムを並列化装置9によって並列プログラム10に変換する方法も知られている(例えば、特許文献1参照。)。
【0012】
しかし、この方法によっても、作業者は、並列プログラム1におけるのとは異なる行や変数名を含む逐次プログラム4をデバッグしなければならない。このためデバッグ作業の効率が悪くなる。また、この方法によれば、逐次プログラム4をデバッグした後に並列プログラム10に変換するため、得られた並列プログラム10が、元の並列プログラム1の作成者が意図しない構造に変更されてしまう可能性がある。そのため、プログラムの分り易さが低下し、後で、並列プログラム10を使用または変更しようとする際の作業効率が下がる。
【0013】
【特許文献1】
特開平8−16429号公報
【0014】
そこで、この発明の課題は、並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ装置であって、作業者がデバッグ作業を効率良く行うことができるものを提供することにある。
【0015】
また、この発明の課題は、並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ方法であって、作業者がデバッグ作業を効率良く行うことができるものを提供することにある。
【0016】
また、この発明の課題は、そのようなデバッグ方法を実現させるためのプログラムを記録した記録媒体を提供することにある。
【0017】
【課題を解決するための手段】
上記課題を解決するため、この発明のデバッグ装置は、並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ装置であって、
並列プログラムを逐次プログラムに変換するとともに、上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を生成する逐次化手段と、
上記デバッグ情報を記憶する記憶手段とを備えたことを特徴とする。
【0018】
この発明のデバッグ装置では、逐次化手段は、並列プログラムを逐次プログラムに変換する。それとともに、上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を生成する。そして、記憶手段が上記デバッグ情報を記憶する。したがって、デバッグを行う作業者は、上記記憶手段の記憶内容、つまり上記デバッグ情報に基づいて上記並列プログラムと逐次プログラムとの対応を容易に取ることができる。これにより、作業者はデバッグ作業を効率良く短時間で行うことができる。
【0019】
また、別の面では、この発明のデバッグ装置は、並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ装置であって、
上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を記憶する記憶手段と、
上記デバッグ情報に基づいて、上記並列プログラムと逐次プログラムとの間で対応する情報同士を相互に変換する変換手段を備えたことを特徴とする。
【0020】
この発明のデバッグ装置では、記憶手段は、デバッグ対象となった並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を記憶している。変換手段は、上記デバッグ情報に基づいて、上記並列プログラムと逐次プログラムとの間で対応する情報同士を相互に変換する。したがって、デバッグを行う作業者は、上記並列プログラムと逐次プログラムとの間で対応する情報同士を自身で相互に変換する必要がない。したがって、作業者はデバッグ作業を効率良く短時間で行うことができる。
【0021】
また、別の面では、この発明のデバッグ装置は、並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ装置であって、
並列プログラムを逐次プログラムに変換するとともに、上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を生成する逐次化手段と、
上記デバッグ情報を記憶する記憶手段と、
上記デバッグ情報に基づいて、上記並列プログラムと逐次プログラムとの間で対応する情報同士を相互に変換する変換手段を備えたことを特徴とする。
【0022】
この発明のデバッグ装置では、逐次化手段は、並列プログラムを逐次プログラムに変換する。それとともに、上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を生成する。そして、記憶手段が上記デバッグ情報を記憶する。変換手段は、上記デバッグ情報に基づいて、上記並列プログラムと逐次プログラムとの間で対応する情報同士を変換する。したがって、デバッグを行う作業者は、上記並列プログラムと逐次プログラムとの間で対応する情報同士を自身で相互に変換する必要がない。したがって、作業者はデバッグ作業を効率良く短時間で行うことができる。
【0023】
上記並列プログラムでの情報を表示する一方、その情報に対応した上記逐次プログラムでの情報を隠すのが望ましい。そのようにした場合、作業者は上記変換手段を介してあたかも上記並列プログラムに対して直接デバッグを行っているかのような感覚でデバッグ作業を行うことができる。例えば、作業者は元の並列プログラム内の行番号や変数名を使って不具合箇所を特定することができる。そして、元の並列プログラム内の行番号や変数名を使ってその不具合を修正して解消することができる。
【0024】
一実施形態のデバッグ装置は、上記デバッグ情報は上記並列プログラムと逐次プログラムとの間の行番号の対応を表すことを特徴とする。
【0025】
この一実施形態のデバッグ装置では、上記デバッグ情報は上記並列プログラムと逐次プログラムとの間の行番号の対応を表す。したがって、デバッグを行う作業者は、上記デバッグ情報に基づいて上記並列プログラムと逐次プログラムとの間で行番号の対応を容易に取ることができる。これにより、作業者はデバッグ作業を効率良く短時間で行うことができる。特に、変換手段が上記デバッグ情報に基づいて上記並列プログラムと逐次プログラムとの間で対応する行番号同士を相互に変換する場合は、作業者はデバッグ作業をさらに効率良く短時間で行うことができる。
【0026】
一実施形態のデバッグ装置は、上記デバッグ情報は上記並列プログラムと逐次プログラムとの間の変数名の対応を表すことを特徴とする。
【0027】
この一実施形態のデバッグ装置では、上記デバッグ情報は上記並列プログラムと逐次プログラムとの間の変数名の対応を表す。したがって、デバッグを行う作業者は、上記デバッグ情報に基づいて上記並列プログラムと逐次プログラムとの間で変数名の対応を容易に取ることができる。これにより、作業者はデバッグ作業を効率良く短時間で行うことができる。特に、変換手段が上記デバッグ情報に基づいて上記並列プログラムと逐次プログラムとの間で対応する変数名同士を相互に変換する場合は、作業者はデバッグ作業をさらに効率良く短時間で行うことができる。
【0028】
一実施形態のデバッグ装置は、上記デバッグ情報は上記並列プログラムと逐次プログラムとの間の行番号の対応と変数名の対応とを表すことを特徴とする。
【0029】
この一実施形態のデバッグ装置では、上記デバッグ情報は上記並列プログラムと逐次プログラムとの間の行番号の対応と変数名の対応とを表す。したがって、デバッグを行う作業者は、上記デバッグ情報に基づいて上記並列プログラムと逐次プログラムとの間で行番号の対応と変数名の対応とを容易に取ることができる。これにより、作業者はデバッグ作業を効率良く短時間で行うことができる。特に、変換手段が上記デバッグ情報に基づいて上記並列プログラムと逐次プログラムとの間で対応する行番号同士、変数名同士を相互に変換する場合は、作業者はデバッグ作業をさらに効率良く短時間で行うことができる。
【0030】
この発明のデバッグ方法は、並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ方法であって、
逐次化手段によって並列プログラムを逐次プログラムに変換するとともに、上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を生成し、
上記デバッグ情報を記憶手段に記憶させることを特徴とする。
【0031】
この発明のデバッグ方法では、逐次化手段によって並列プログラムを逐次プログラムに変換する。それとともに、上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を生成する。そして、上記デバッグ情報を記憶手段に記憶させる。したがって、デバッグを行う作業者は、上記記憶手段の記憶内容、つまり上記デバッグ情報に基づいて上記並列プログラムと逐次プログラムとの対応を容易に取ることができる。これにより、作業者はデバッグ作業を効率良く短時間で行うことができる。
【0032】
また、別の面では、この発明のデバッグ方法は、並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ方法であって、
上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を記憶手段に記憶させ、
上記デバッグ情報に基づいて、変換手段によって上記並列プログラムと逐次プログラムとの間で対応する情報同士を相互に変換することを特徴とする。
【0033】
この発明のデバッグ方法では、デバッグ対象となった並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を記憶手段に記憶させておく。そして、上記デバッグ情報に基づいて、変換手段によって上記並列プログラムと逐次プログラムとの間で対応する情報同士を相互に変換する。したがって、デバッグを行う作業者は、上記並列プログラムと逐次プログラムとの間で対応する情報同士を自身で相互に変換する必要がない。したがって、作業者はデバッグ作業を効率良く短時間で行うことができる。
【0034】
また、別の面では、この発明のデバッグ方法は、並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ方法であって、
逐次化手段によって並列プログラムを逐次プログラムに変換するとともに、上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を生成し、
上記デバッグ情報を記憶手段に記憶させ、
上記デバッグ情報に基づいて、変換手段によって上記並列プログラムと逐次プログラムとの間で対応する情報同士を相互に変換することを特徴とする。
【0035】
この発明のデバッグ方法では、逐次化手段によって並列プログラムを逐次プログラムに変換する。それとともに、上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を生成する。そして、上記デバッグ情報を記憶手段に記憶させる。上記デバッグ情報に基づいて、変換手段によって上記並列プログラムと逐次プログラムとの間で対応する情報同士を相互に変換する。したがって、デバッグを行う作業者は、上記並列プログラムと逐次プログラムとの間で対応する情報同士を自身で相互に変換する必要がない。したがって、作業者はデバッグ作業を効率良く短時間で行うことができる。
【0036】
この発明の記録媒体は、上述のいずれか一つのデバッグ方法を実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【0037】
この発明の記録媒体に記録されたプログラムをコンピュータ読み取りして実行すれば、上述のデバッグ方法を実現することができる。したがって、作業者はデバッグ作業を効率良く短時間で行うことができる。
【0038】
【発明の実施の形態】
以下、この発明を図示の実施の形態により詳細に説明する。
【0039】
図3は、本発明の一実施形態のデバッグ装置の構成を示している。
【0040】
このデバッグ装置は、図中の並列プログラム31を逐次プログラム34に変換してデバッグを行うために、逐次化手段としての逐次化部32と、記憶手段としてのデータベース35と、逐次プログラムをデバッグするツールとしてのデバッガ36と、変換手段としてのデバッガ・インタフェース37とを備えている。
【0041】
逐次化部32は、逐次化処理を行って並列プログラム31を逐次プログラム34に変換する。なお、逐次化処理としては、公知の方法を用いることができる。
【0042】
逐次化部32の内部にはデバッグ情報生成部33が含まれている。デバッグ情報生成部33は、逐次化処理と同時に、並列プログラム31と逐次プログラム34との対応関係を表すデバッグ情報を生成する。このデバッグ情報はデータベース35に格納される。
【0043】
デバッガ36は、作業者が入力したコマンドをデバッガ・インタフェース37を介して受け取り、受け取ったコマンドに応じて逐次プログラム34をデバッグする。
【0044】
デバッガ・インタフェース37は、デバッグ作業者38からコマンドを受け取り、データベース35を参照して、必要に応じて変換したコマンドをデバッガ36に対して発行する。また、デバッガ36からの出力を受け取り、データベース35を参照して、必要に応じて変換した出力をデバッグ作業者38に向けて出力する。
【0045】
なお、このデバッグ装置は、上述の構成要素以外に、デバッグ対象となったプログラム表示し得る表示装置や、デバッグ作業の出力を作業者に提供し得る出力装置を備えている。
【0046】
次に、上記の様に構成されたデバッグ装置によってデバッグを行う処理を説明する。
【0047】
i) まず、並列プログラム31として図4に示すような内容を持つものが、逐次化部32に入力される。
【0048】
ここで、図4中の左欄に示す行番号(10,11,…,29)45は、説明のために付加したものであり、並列プログラム31には含まれない。
【0049】
この並列プログラム31は、C言語を拡張した文法をもっており、キーワード“par”の後の中括弧{}で囲まれた範囲内に、並列に実行する処理が記述されている。この例では、点線で囲まれた部分の処理41、42は並列に実行される処理である。これらの処理41、42は、互いに独立した処理であるため、互いに同じ名前の変数iや変数kなどを含んでいても構わない。理解の容易のために、処理41に含まれた変数iに符号43、処理42に含まれた変数iに符号44を付している。
【0050】
ii) 上記並列プログラム31を逐次化部32がC言語を用いて逐次化して、逐次プログラム34として図5乃至図6に示すような内容を持つものが出力される。
【0051】
なお、図5は前半部分、図6は後半部分に相当する。図5、図6中の左欄に示す行番号(100,101,…,155)55は、説明のために付加したものであり、逐次プログラム34には含まれない。
【0052】
この逐次プログラム34は、点線で囲まれた部分の処理51、52が、図4中の処理41、42にそれぞれ対応しており、逐次動作するようになっている。この逐次プログラム34での変数i_0(符号53で示す)、変数i_1’(符号54で示す)は、それぞれ並列プログラム31中の処理41での変数i(符号43で示す)、処理42での変数i (符号44で示す)に対応している。このように、処理41、42に含まれた同じ変数名の後ろにそれぞれ_0、_1というようなスコープ番号を付して、それらを区別している。この理由は、逐次プログラム(の一つの処理ブロック内)では、同じ変数名は同じ実体を表すものとして扱われ、同じ変数名であって実体が異なるものが存在することは許されないからである。
【0053】
この逐次プログラム34に含まれた処理51、処理52は、図5中の点線で囲まれた部分以外の処理にしたがって、疑似的に並列に実行される。
【0054】
iii) 逐次化部32が並列プログラム31を逐次プログラム34へ変換すると同時に、逐次化部32内部のデバッグ情報生成部33が、並列プログラム31と逐次プログラム34との対応関係を表すデバッグ情報を生成する。生成されたデバッグ情報はデータベース35に格納される。
【0055】
この例では、デバッグ情報は、図7に示す行番号対応情報61と、図8に示す変数名対応情報62と、図9に示すスコープ情報63とを含んでいる。
【0056】
図7に示す行番号対応情報61は、並列プログラム31で或る処理を行う行番号(右欄65に並べて示す)と、逐次プログラム34でその処理と同じ処理を行う行番号(左欄64に並べて示す)との対応関係を表している。例えば、並列プログラム(“prog_par.c”)の15行目は、逐次プログラム(“prog_seq.c”)の117行目に対応することを示す。この行番号対応情報61は、逐次化部32が並列プログラム31内の行を逐次プログラム34の行に変換する際に、デバッグ情報生成部33が、元の行の並列プログラム31内での行番号と変換先の逐次プログラム34内での行番号とを関連付けてデータベース35に登録することにより、生成される。
【0057】
図8に示す変数名対応情報62は、並列プログラム31内での或るデータを保持する変数名(右欄67に並ベて示す)と、逐次プログラム34内でのそのデータと同じデータを保持する変数名(左欄66に並べて示す)との対応関係を表している。例えば、並列プログラム31での変数iは、逐次プログラム34での変数i_0と変数i_1に対応することを示す。また、並列プログラム31での変数kは、逐次プログラム34での変数k_0と変数k_1に対応することを示す。この変数名対応情報62は、逐次化部32が並列プログラム31での変数名を逐次プログラム34での変数名に変換する際に、デバッグ情報生成部33が、並列プログラム31での変数名と逐次プログラム34での変数名とを関連付けてデータベース35に登録することにより、生成される。
【0058】
図9に示すスコープ情報63は、並列プログラム31内での変数の有効範囲(始行と終行との二つの行番号で指定される。左欄68に並べて示す)とスコープ番号(右欄69に並べて示す)との対応関係を表している。スコープ番号は、並列プログラム31での変数の有効範囲をそれぞれ区別するために、逐次化処理に際して導入される番号である。例えば、並列プログラム(“prog_par.c”)の13行目から18行目までの範囲は、スコープ番号0に対応することを示す。また、並列プログラム(“prog_par.c”)の21行目から26行目までの範囲は、スコープ番号1に対応することを示す。このスコープ情報63は、逐次化部32が入力の並列プログラム31の構造を解析する際に、デバッグ情報生成部33が、並列プログラム31内の変数の有効範囲(二つの行番号)とその範囲に対応したスコープ番号とを関連付けてデータベース35に登録することによって、生成される。
【0059】
iv) 上述のようなデバッグ情報がデータベース35に格納された後、作業者がデバッガ・インタフェース37を介してデバッガ36を動作させて、デバッグを行う。
【0060】
図10は、デバッグ作業者がコマンドを発行したときの処理の流れを示している。
【0061】
まず、作業者38は、デバッガ・インタフェース37に、デバッグを行うためのコマンドを発行する。
【0062】
デバッガ・インタフェース37は、データベース35内の行番号対応情報61(図7に示す)を参照して、そのコマンドに並列プログラム31での行番号が含まれているか否かを調べる(ステップS1)。
【0063】
そのコマンドに並列プログラム31での行番号が含まれている場合はステップS2へ進む一方、含まれていない場合はステップS3へ進む。
【0064】
ステップS2では、データベース35内の行番号対応情報61を参照した結果に基づいて、並列プログラム31での行番号を逐次プログラム34での対応する行番号に変換する。そして、ステップS3へ進む。
【0065】
ステップS3では、データベース35内の変数名対応情報62(図8に示す)を参照して、そのコマンドに並列プログラム31での変数名が含まれているか否かを調べる。
【0066】
そのコマンドに並列プログラム31での変数名が含まれている場合はステップS4へ進む一方、含まれていない場合はステップS9へ進む。
【0067】
ステップS4では、データベース35内の変数名対応情報62を参照した結果に基づいて、並列プログラム31での変数名が逐次プログラム34での複数の変数名に対応しているか否かを調べる。
【0068】
並列プログラム31での変数名が逐次プログラム34での複数の変数名に対応している場合はステップS5−S7へ進む一方、複数の変数名に対応していない場合、つまり1つの変数名のみに対応している場合はステップS8へ進む。
【0069】
ステップS5−S7では、並列プログラム31での変数名が逐次プログラム34での複数の変数名に対応している場合であるから、複数の変数名をそれぞれ区別するためにスコープ番号を利用する。具体的には、まずステップS5では、現在デバッグを行っているプログラム上の位置(これを「デバッグ位置」と呼ぶ。)を調べる。続いて、ステップS6では、データベース35内のスコープ情報63(図9に示す)を参照して、ステップS5で取得した現在のデバッグ位置を含む範囲に対応するスコープ番号を得る。続いて、ステップS7では、ステップS6で得たスコープ番号を利用して、並列プログラム31での変数名を逐次プログラム34での対応する変数名に変換する。例えば、ステップS6で得たスコープ番号が0であれば、並列プログラム31での変数iは逐次プログラム34での変数i_0に変換される。また、ステップS6で得たスコープ番号が1であれば、並列プログラム31での変数iは逐次プログラム34での変数i_1に変換される。この後、ステップS9へ進む。
【0070】
ステップS8では、並列プログラム31での変数名が逐次プログラム34での1つの変数名のみに対応している場合であるから、スコープ番号を用いる必要はない。そこで、単に、データベース35内の変数名対応情報62を参照した結果に基づいて、並列プログラム31での変数名を逐次プログラム34での対応する変数名に変換する。そして、ステップ9へ進む。
【0071】
ステップS9では、上述のステップS1−S8の処理を経て変換されたコマンドをデバッガ36に対して発行する。ただし、コマンドが行番号と変数名とのいずれも含まない場合(ステップS1,S3でいずれもNOの場合)は、コマンドは変換されずにそのまま発行される。
【0072】
図11は、デバッガ36からの出力に対する処理の流れを示している。
【0073】
デバッガ36からの出力を受けると、まず、デバッガ・インタフェース37は、データベース35内の行番号対応情報61(図7に示す)を参照して、その出力に逐次プログラム34での行番号が含まれているか否かを調べる(ステップS11)。
【0074】
その出力に逐次プログラム34での行番号が含まれている場合はステップS12へ進む一方、含まれていない場合はステップS13へ進む。
【0075】
ステップS12では、データベース35内の行番号対応情報61を参照した結果に基づいて、逐次プログラム34での行番号を並列プログラム31での対応する行番号に変換する。そして、ステップS13へ進む。
【0076】
ステップS13では、データベース35内の変数名対応情報62(図8に示す)を参照して、その出力に逐次プログラム34での変数名が含まれているか否かを調べる。
【0077】
その出力に逐次プログラム34での変数名が含まれている場合はステップS14へ進む一方、含まれていない場合はステップS15へ進む。
【0078】
ステップS14では、データベース35内の変数名対応情報62を参照した結果に基づいて、逐次プログラム34での変数名を並列プログラム31での対応する変数名に変換する。そして、ステップ15へ進む。
【0079】
ステップS15では、上述のステップS11−S14の処理を経て変換された出力を作業者に対して提供する。ただし、出力が行番号と変数名とのいずれも含まない場合(ステップS11,S13でいずれもNOの場合)は、出力は変換されずにそのまま提供される。
【0080】
上述のようにしてデバッグを行うようにした場合、作業者は、並列プログラム31と逐次プログラム34との間で対応する行番号同士、変数名同士を自身で相互に変換する必要がない。
【0081】
さらに、表示装置で並列プログラム31での情報を表示する一方、その情報に対応した逐次プログラム34での情報を隠すようにした場合、作業者はデバッガ・インターフェース37を介してあたかも並列プログラム31に対して直接デバッグを行っているかのような感覚でデバッグ作業を行うことができる。例えば、作業者は元の並列プログラム31内の行番号や変数名を使って不具合箇所を特定することができる。そして、元の並列プログラム31内の行番号や変数名を使ってその不具合を修正して解消することができる。
【0082】
したがって、作業者はデバッグ作業を効率良く短時間で行うことができる。
【0083】
なお、このデバッグ装置は、逐次プログラムを実行可能な一般的な電子計算機上で、上述のデバッグを行う処理を実行するためのプログラム(ソフトウェア)を用いて構成され得る。そのプログラムは、電子計算機が備える外部記憶装置(固定記憶装置)に記憶されていても良い。また、記録媒体(コンパクトディスク等)に書き込まれたそのようなプログラムを、読み取り可能なドライブで読み取るようになっていても良い。
【0084】
【発明の効果】
以上より明らかなように、この発明のデバッグ装置およびデバッグ方法によれば、作業者がデバッグ作業を効率良く行うことができる。
【0085】
また、この発明の記録媒体によれば、そのようなデバッグ方法を実現させることができる。
【図面の簡単な説明】
【図1】並列プログラムを逐次プログラムに変換しでデバッグを行う従来の方法を説明する図である。
【図2】元の並列プログラムではなく逐次プログラムを修正し、修正後の逐次プログラムを並列プログラムに変換する従来の方法を説明する図である。
【図3】本発明の一実施形態のデバッグ装置の構成を示す図である。
【図4】並列プログラムの例を示す図である。
【図5】図4の並列プログラムを変換して得られた逐次プログラム(前半部分)を示す図である。
【図6】図4の並列プログラムを変換して得られた逐次プログラム(後半部分)を示す図である。
【図7】データベースに格納されたデバッグ情報としての行番号対応情報を例示する図である。
【図8】データベースに格納されたデバッグ情報としての変数名対応情報を例示する図である。
【図9】データベースに格納されたデバッグ情報としてのスコープ情報例示する図である。
【図10】デバッグを行う処理(コマンド発行時)のフローを示す図である。
【図11】デバッグを行う処理(結果出力時)のフローを示す図である。
【符号の説明】
31 並列プログラム
32 逐次化部
33 デバッグ情報生成部
34 逐次プログラム
35 データベース
36 デバッガ
37 デバッガ・インタフェース
61 行番号対応情報
62 変数名対応情報
63 スコープ情報
【発明の属する技術分野】
この発明は、並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ装置およびデバッグ方法に関する。また、そのようなデバッグ方法を実現させるためのプログラムを記録した記録媒体に関する。
【0002】
なお、並列プログラミング言語により記述されたプログラムを並列プログラムと呼ぶ。
【0003】
また、逐次処理を記述するためのプログラミング言語を逐次プログラミング言語、それにより記述されたプログラムを逐次プログラムと呼ぶ。
【0004】
また、デバッグとはプログラムの不具合を特定して修正することを意味する。
【0005】
【従来の技術】
一般に、並列にいくつかの動作を同時に行う処理を記述する場合、並列プログラミング言語が用いられる。例えば、大規模集積回路(LSI)の設計においては、その内部の動作は基本的に並列動作であるため、プログラミング言語としては、逐次処理を記述するプログラミング言語ではなく、並列プログラミング言語が用いられる。この並列プログラミング言語により設計されたLSIの動作を検証するためには、本来、そのLSIの動作が記述された並列プログラムを計算機上で動作させるのが望ましい。
【0006】
しかし、LSIの設計者が設計のために使用している計算機は、逐次プログラムを実行するものであることが多い。そのような逐次プログラムを実行する計算機を使って、並列プログラムを直接実行することはできない。
【0007】
そこで、図1に示すように、並列プログラム1を逐次化装置2によって自動的に逐次プログラム4に変換し、得られた逐次プログラム4をその計算機上で実行する方法が広く行われている。逐次プログラム4を実行した結果、元の並列プログラム1にバグ(不具合)があることが分かった場合、設計者は逐次プログラム4をデバッガ6上で動作させて不具合個所を特定し、その後、元の並列プログラム1の対応する個所を修正する。
【0008】
【発明が解決しようとする課題】
ところで、並列プログラム1を逐次化装置2によって自動的に逐次プログラム4に変換する際に、並列プログラム1での一つの行が、逐次プログラム4では複数の行からなる処理に書換えられる場合がある。また、変数名についても、並列プログラム1での或る変数名が、逐次プログラム4では別の変数名に書き換えられる場合がある。
【0009】
しかし、上述の方法では、並列プログラム1から逐次プログラム4への変換時には、並列プログラム1での或る行が逐次プログラム4ではどの行に書換えられたかや、並列プログラム1での或る変数名が逐次プログラム4ではどの変数名に書換えられたかの情報が残らない。
【0010】
そのため、デバッグを行う作業者は、並列プログラム1での行と逐次プログラム4での行との対応を自身で取りながら作業を行わなければならない。また、並列プログラムでの変数名と逐次プログラムでの変数名との対応も自身で取りながら作業を行わなければならない。このため、並列プログラムを逐次プログラムに変換してデバッグを行う作業は、非常に効率が悪くなり、時間がかかるという問題がある。
【0011】
また、図2に示すように、並列プログラム1を一旦逐次プログラム4に変換し、逐次プログラム4に不具合があった場合は、元の並列プログラム1ではなく逐次プログラム4を修正し、修正後の逐次プログラムを並列化装置9によって並列プログラム10に変換する方法も知られている(例えば、特許文献1参照。)。
【0012】
しかし、この方法によっても、作業者は、並列プログラム1におけるのとは異なる行や変数名を含む逐次プログラム4をデバッグしなければならない。このためデバッグ作業の効率が悪くなる。また、この方法によれば、逐次プログラム4をデバッグした後に並列プログラム10に変換するため、得られた並列プログラム10が、元の並列プログラム1の作成者が意図しない構造に変更されてしまう可能性がある。そのため、プログラムの分り易さが低下し、後で、並列プログラム10を使用または変更しようとする際の作業効率が下がる。
【0013】
【特許文献1】
特開平8−16429号公報
【0014】
そこで、この発明の課題は、並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ装置であって、作業者がデバッグ作業を効率良く行うことができるものを提供することにある。
【0015】
また、この発明の課題は、並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ方法であって、作業者がデバッグ作業を効率良く行うことができるものを提供することにある。
【0016】
また、この発明の課題は、そのようなデバッグ方法を実現させるためのプログラムを記録した記録媒体を提供することにある。
【0017】
【課題を解決するための手段】
上記課題を解決するため、この発明のデバッグ装置は、並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ装置であって、
並列プログラムを逐次プログラムに変換するとともに、上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を生成する逐次化手段と、
上記デバッグ情報を記憶する記憶手段とを備えたことを特徴とする。
【0018】
この発明のデバッグ装置では、逐次化手段は、並列プログラムを逐次プログラムに変換する。それとともに、上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を生成する。そして、記憶手段が上記デバッグ情報を記憶する。したがって、デバッグを行う作業者は、上記記憶手段の記憶内容、つまり上記デバッグ情報に基づいて上記並列プログラムと逐次プログラムとの対応を容易に取ることができる。これにより、作業者はデバッグ作業を効率良く短時間で行うことができる。
【0019】
また、別の面では、この発明のデバッグ装置は、並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ装置であって、
上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を記憶する記憶手段と、
上記デバッグ情報に基づいて、上記並列プログラムと逐次プログラムとの間で対応する情報同士を相互に変換する変換手段を備えたことを特徴とする。
【0020】
この発明のデバッグ装置では、記憶手段は、デバッグ対象となった並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を記憶している。変換手段は、上記デバッグ情報に基づいて、上記並列プログラムと逐次プログラムとの間で対応する情報同士を相互に変換する。したがって、デバッグを行う作業者は、上記並列プログラムと逐次プログラムとの間で対応する情報同士を自身で相互に変換する必要がない。したがって、作業者はデバッグ作業を効率良く短時間で行うことができる。
【0021】
また、別の面では、この発明のデバッグ装置は、並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ装置であって、
並列プログラムを逐次プログラムに変換するとともに、上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を生成する逐次化手段と、
上記デバッグ情報を記憶する記憶手段と、
上記デバッグ情報に基づいて、上記並列プログラムと逐次プログラムとの間で対応する情報同士を相互に変換する変換手段を備えたことを特徴とする。
【0022】
この発明のデバッグ装置では、逐次化手段は、並列プログラムを逐次プログラムに変換する。それとともに、上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を生成する。そして、記憶手段が上記デバッグ情報を記憶する。変換手段は、上記デバッグ情報に基づいて、上記並列プログラムと逐次プログラムとの間で対応する情報同士を変換する。したがって、デバッグを行う作業者は、上記並列プログラムと逐次プログラムとの間で対応する情報同士を自身で相互に変換する必要がない。したがって、作業者はデバッグ作業を効率良く短時間で行うことができる。
【0023】
上記並列プログラムでの情報を表示する一方、その情報に対応した上記逐次プログラムでの情報を隠すのが望ましい。そのようにした場合、作業者は上記変換手段を介してあたかも上記並列プログラムに対して直接デバッグを行っているかのような感覚でデバッグ作業を行うことができる。例えば、作業者は元の並列プログラム内の行番号や変数名を使って不具合箇所を特定することができる。そして、元の並列プログラム内の行番号や変数名を使ってその不具合を修正して解消することができる。
【0024】
一実施形態のデバッグ装置は、上記デバッグ情報は上記並列プログラムと逐次プログラムとの間の行番号の対応を表すことを特徴とする。
【0025】
この一実施形態のデバッグ装置では、上記デバッグ情報は上記並列プログラムと逐次プログラムとの間の行番号の対応を表す。したがって、デバッグを行う作業者は、上記デバッグ情報に基づいて上記並列プログラムと逐次プログラムとの間で行番号の対応を容易に取ることができる。これにより、作業者はデバッグ作業を効率良く短時間で行うことができる。特に、変換手段が上記デバッグ情報に基づいて上記並列プログラムと逐次プログラムとの間で対応する行番号同士を相互に変換する場合は、作業者はデバッグ作業をさらに効率良く短時間で行うことができる。
【0026】
一実施形態のデバッグ装置は、上記デバッグ情報は上記並列プログラムと逐次プログラムとの間の変数名の対応を表すことを特徴とする。
【0027】
この一実施形態のデバッグ装置では、上記デバッグ情報は上記並列プログラムと逐次プログラムとの間の変数名の対応を表す。したがって、デバッグを行う作業者は、上記デバッグ情報に基づいて上記並列プログラムと逐次プログラムとの間で変数名の対応を容易に取ることができる。これにより、作業者はデバッグ作業を効率良く短時間で行うことができる。特に、変換手段が上記デバッグ情報に基づいて上記並列プログラムと逐次プログラムとの間で対応する変数名同士を相互に変換する場合は、作業者はデバッグ作業をさらに効率良く短時間で行うことができる。
【0028】
一実施形態のデバッグ装置は、上記デバッグ情報は上記並列プログラムと逐次プログラムとの間の行番号の対応と変数名の対応とを表すことを特徴とする。
【0029】
この一実施形態のデバッグ装置では、上記デバッグ情報は上記並列プログラムと逐次プログラムとの間の行番号の対応と変数名の対応とを表す。したがって、デバッグを行う作業者は、上記デバッグ情報に基づいて上記並列プログラムと逐次プログラムとの間で行番号の対応と変数名の対応とを容易に取ることができる。これにより、作業者はデバッグ作業を効率良く短時間で行うことができる。特に、変換手段が上記デバッグ情報に基づいて上記並列プログラムと逐次プログラムとの間で対応する行番号同士、変数名同士を相互に変換する場合は、作業者はデバッグ作業をさらに効率良く短時間で行うことができる。
【0030】
この発明のデバッグ方法は、並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ方法であって、
逐次化手段によって並列プログラムを逐次プログラムに変換するとともに、上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を生成し、
上記デバッグ情報を記憶手段に記憶させることを特徴とする。
【0031】
この発明のデバッグ方法では、逐次化手段によって並列プログラムを逐次プログラムに変換する。それとともに、上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を生成する。そして、上記デバッグ情報を記憶手段に記憶させる。したがって、デバッグを行う作業者は、上記記憶手段の記憶内容、つまり上記デバッグ情報に基づいて上記並列プログラムと逐次プログラムとの対応を容易に取ることができる。これにより、作業者はデバッグ作業を効率良く短時間で行うことができる。
【0032】
また、別の面では、この発明のデバッグ方法は、並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ方法であって、
上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を記憶手段に記憶させ、
上記デバッグ情報に基づいて、変換手段によって上記並列プログラムと逐次プログラムとの間で対応する情報同士を相互に変換することを特徴とする。
【0033】
この発明のデバッグ方法では、デバッグ対象となった並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を記憶手段に記憶させておく。そして、上記デバッグ情報に基づいて、変換手段によって上記並列プログラムと逐次プログラムとの間で対応する情報同士を相互に変換する。したがって、デバッグを行う作業者は、上記並列プログラムと逐次プログラムとの間で対応する情報同士を自身で相互に変換する必要がない。したがって、作業者はデバッグ作業を効率良く短時間で行うことができる。
【0034】
また、別の面では、この発明のデバッグ方法は、並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ方法であって、
逐次化手段によって並列プログラムを逐次プログラムに変換するとともに、上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を生成し、
上記デバッグ情報を記憶手段に記憶させ、
上記デバッグ情報に基づいて、変換手段によって上記並列プログラムと逐次プログラムとの間で対応する情報同士を相互に変換することを特徴とする。
【0035】
この発明のデバッグ方法では、逐次化手段によって並列プログラムを逐次プログラムに変換する。それとともに、上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を生成する。そして、上記デバッグ情報を記憶手段に記憶させる。上記デバッグ情報に基づいて、変換手段によって上記並列プログラムと逐次プログラムとの間で対応する情報同士を相互に変換する。したがって、デバッグを行う作業者は、上記並列プログラムと逐次プログラムとの間で対応する情報同士を自身で相互に変換する必要がない。したがって、作業者はデバッグ作業を効率良く短時間で行うことができる。
【0036】
この発明の記録媒体は、上述のいずれか一つのデバッグ方法を実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【0037】
この発明の記録媒体に記録されたプログラムをコンピュータ読み取りして実行すれば、上述のデバッグ方法を実現することができる。したがって、作業者はデバッグ作業を効率良く短時間で行うことができる。
【0038】
【発明の実施の形態】
以下、この発明を図示の実施の形態により詳細に説明する。
【0039】
図3は、本発明の一実施形態のデバッグ装置の構成を示している。
【0040】
このデバッグ装置は、図中の並列プログラム31を逐次プログラム34に変換してデバッグを行うために、逐次化手段としての逐次化部32と、記憶手段としてのデータベース35と、逐次プログラムをデバッグするツールとしてのデバッガ36と、変換手段としてのデバッガ・インタフェース37とを備えている。
【0041】
逐次化部32は、逐次化処理を行って並列プログラム31を逐次プログラム34に変換する。なお、逐次化処理としては、公知の方法を用いることができる。
【0042】
逐次化部32の内部にはデバッグ情報生成部33が含まれている。デバッグ情報生成部33は、逐次化処理と同時に、並列プログラム31と逐次プログラム34との対応関係を表すデバッグ情報を生成する。このデバッグ情報はデータベース35に格納される。
【0043】
デバッガ36は、作業者が入力したコマンドをデバッガ・インタフェース37を介して受け取り、受け取ったコマンドに応じて逐次プログラム34をデバッグする。
【0044】
デバッガ・インタフェース37は、デバッグ作業者38からコマンドを受け取り、データベース35を参照して、必要に応じて変換したコマンドをデバッガ36に対して発行する。また、デバッガ36からの出力を受け取り、データベース35を参照して、必要に応じて変換した出力をデバッグ作業者38に向けて出力する。
【0045】
なお、このデバッグ装置は、上述の構成要素以外に、デバッグ対象となったプログラム表示し得る表示装置や、デバッグ作業の出力を作業者に提供し得る出力装置を備えている。
【0046】
次に、上記の様に構成されたデバッグ装置によってデバッグを行う処理を説明する。
【0047】
i) まず、並列プログラム31として図4に示すような内容を持つものが、逐次化部32に入力される。
【0048】
ここで、図4中の左欄に示す行番号(10,11,…,29)45は、説明のために付加したものであり、並列プログラム31には含まれない。
【0049】
この並列プログラム31は、C言語を拡張した文法をもっており、キーワード“par”の後の中括弧{}で囲まれた範囲内に、並列に実行する処理が記述されている。この例では、点線で囲まれた部分の処理41、42は並列に実行される処理である。これらの処理41、42は、互いに独立した処理であるため、互いに同じ名前の変数iや変数kなどを含んでいても構わない。理解の容易のために、処理41に含まれた変数iに符号43、処理42に含まれた変数iに符号44を付している。
【0050】
ii) 上記並列プログラム31を逐次化部32がC言語を用いて逐次化して、逐次プログラム34として図5乃至図6に示すような内容を持つものが出力される。
【0051】
なお、図5は前半部分、図6は後半部分に相当する。図5、図6中の左欄に示す行番号(100,101,…,155)55は、説明のために付加したものであり、逐次プログラム34には含まれない。
【0052】
この逐次プログラム34は、点線で囲まれた部分の処理51、52が、図4中の処理41、42にそれぞれ対応しており、逐次動作するようになっている。この逐次プログラム34での変数i_0(符号53で示す)、変数i_1’(符号54で示す)は、それぞれ並列プログラム31中の処理41での変数i(符号43で示す)、処理42での変数i (符号44で示す)に対応している。このように、処理41、42に含まれた同じ変数名の後ろにそれぞれ_0、_1というようなスコープ番号を付して、それらを区別している。この理由は、逐次プログラム(の一つの処理ブロック内)では、同じ変数名は同じ実体を表すものとして扱われ、同じ変数名であって実体が異なるものが存在することは許されないからである。
【0053】
この逐次プログラム34に含まれた処理51、処理52は、図5中の点線で囲まれた部分以外の処理にしたがって、疑似的に並列に実行される。
【0054】
iii) 逐次化部32が並列プログラム31を逐次プログラム34へ変換すると同時に、逐次化部32内部のデバッグ情報生成部33が、並列プログラム31と逐次プログラム34との対応関係を表すデバッグ情報を生成する。生成されたデバッグ情報はデータベース35に格納される。
【0055】
この例では、デバッグ情報は、図7に示す行番号対応情報61と、図8に示す変数名対応情報62と、図9に示すスコープ情報63とを含んでいる。
【0056】
図7に示す行番号対応情報61は、並列プログラム31で或る処理を行う行番号(右欄65に並べて示す)と、逐次プログラム34でその処理と同じ処理を行う行番号(左欄64に並べて示す)との対応関係を表している。例えば、並列プログラム(“prog_par.c”)の15行目は、逐次プログラム(“prog_seq.c”)の117行目に対応することを示す。この行番号対応情報61は、逐次化部32が並列プログラム31内の行を逐次プログラム34の行に変換する際に、デバッグ情報生成部33が、元の行の並列プログラム31内での行番号と変換先の逐次プログラム34内での行番号とを関連付けてデータベース35に登録することにより、生成される。
【0057】
図8に示す変数名対応情報62は、並列プログラム31内での或るデータを保持する変数名(右欄67に並ベて示す)と、逐次プログラム34内でのそのデータと同じデータを保持する変数名(左欄66に並べて示す)との対応関係を表している。例えば、並列プログラム31での変数iは、逐次プログラム34での変数i_0と変数i_1に対応することを示す。また、並列プログラム31での変数kは、逐次プログラム34での変数k_0と変数k_1に対応することを示す。この変数名対応情報62は、逐次化部32が並列プログラム31での変数名を逐次プログラム34での変数名に変換する際に、デバッグ情報生成部33が、並列プログラム31での変数名と逐次プログラム34での変数名とを関連付けてデータベース35に登録することにより、生成される。
【0058】
図9に示すスコープ情報63は、並列プログラム31内での変数の有効範囲(始行と終行との二つの行番号で指定される。左欄68に並べて示す)とスコープ番号(右欄69に並べて示す)との対応関係を表している。スコープ番号は、並列プログラム31での変数の有効範囲をそれぞれ区別するために、逐次化処理に際して導入される番号である。例えば、並列プログラム(“prog_par.c”)の13行目から18行目までの範囲は、スコープ番号0に対応することを示す。また、並列プログラム(“prog_par.c”)の21行目から26行目までの範囲は、スコープ番号1に対応することを示す。このスコープ情報63は、逐次化部32が入力の並列プログラム31の構造を解析する際に、デバッグ情報生成部33が、並列プログラム31内の変数の有効範囲(二つの行番号)とその範囲に対応したスコープ番号とを関連付けてデータベース35に登録することによって、生成される。
【0059】
iv) 上述のようなデバッグ情報がデータベース35に格納された後、作業者がデバッガ・インタフェース37を介してデバッガ36を動作させて、デバッグを行う。
【0060】
図10は、デバッグ作業者がコマンドを発行したときの処理の流れを示している。
【0061】
まず、作業者38は、デバッガ・インタフェース37に、デバッグを行うためのコマンドを発行する。
【0062】
デバッガ・インタフェース37は、データベース35内の行番号対応情報61(図7に示す)を参照して、そのコマンドに並列プログラム31での行番号が含まれているか否かを調べる(ステップS1)。
【0063】
そのコマンドに並列プログラム31での行番号が含まれている場合はステップS2へ進む一方、含まれていない場合はステップS3へ進む。
【0064】
ステップS2では、データベース35内の行番号対応情報61を参照した結果に基づいて、並列プログラム31での行番号を逐次プログラム34での対応する行番号に変換する。そして、ステップS3へ進む。
【0065】
ステップS3では、データベース35内の変数名対応情報62(図8に示す)を参照して、そのコマンドに並列プログラム31での変数名が含まれているか否かを調べる。
【0066】
そのコマンドに並列プログラム31での変数名が含まれている場合はステップS4へ進む一方、含まれていない場合はステップS9へ進む。
【0067】
ステップS4では、データベース35内の変数名対応情報62を参照した結果に基づいて、並列プログラム31での変数名が逐次プログラム34での複数の変数名に対応しているか否かを調べる。
【0068】
並列プログラム31での変数名が逐次プログラム34での複数の変数名に対応している場合はステップS5−S7へ進む一方、複数の変数名に対応していない場合、つまり1つの変数名のみに対応している場合はステップS8へ進む。
【0069】
ステップS5−S7では、並列プログラム31での変数名が逐次プログラム34での複数の変数名に対応している場合であるから、複数の変数名をそれぞれ区別するためにスコープ番号を利用する。具体的には、まずステップS5では、現在デバッグを行っているプログラム上の位置(これを「デバッグ位置」と呼ぶ。)を調べる。続いて、ステップS6では、データベース35内のスコープ情報63(図9に示す)を参照して、ステップS5で取得した現在のデバッグ位置を含む範囲に対応するスコープ番号を得る。続いて、ステップS7では、ステップS6で得たスコープ番号を利用して、並列プログラム31での変数名を逐次プログラム34での対応する変数名に変換する。例えば、ステップS6で得たスコープ番号が0であれば、並列プログラム31での変数iは逐次プログラム34での変数i_0に変換される。また、ステップS6で得たスコープ番号が1であれば、並列プログラム31での変数iは逐次プログラム34での変数i_1に変換される。この後、ステップS9へ進む。
【0070】
ステップS8では、並列プログラム31での変数名が逐次プログラム34での1つの変数名のみに対応している場合であるから、スコープ番号を用いる必要はない。そこで、単に、データベース35内の変数名対応情報62を参照した結果に基づいて、並列プログラム31での変数名を逐次プログラム34での対応する変数名に変換する。そして、ステップ9へ進む。
【0071】
ステップS9では、上述のステップS1−S8の処理を経て変換されたコマンドをデバッガ36に対して発行する。ただし、コマンドが行番号と変数名とのいずれも含まない場合(ステップS1,S3でいずれもNOの場合)は、コマンドは変換されずにそのまま発行される。
【0072】
図11は、デバッガ36からの出力に対する処理の流れを示している。
【0073】
デバッガ36からの出力を受けると、まず、デバッガ・インタフェース37は、データベース35内の行番号対応情報61(図7に示す)を参照して、その出力に逐次プログラム34での行番号が含まれているか否かを調べる(ステップS11)。
【0074】
その出力に逐次プログラム34での行番号が含まれている場合はステップS12へ進む一方、含まれていない場合はステップS13へ進む。
【0075】
ステップS12では、データベース35内の行番号対応情報61を参照した結果に基づいて、逐次プログラム34での行番号を並列プログラム31での対応する行番号に変換する。そして、ステップS13へ進む。
【0076】
ステップS13では、データベース35内の変数名対応情報62(図8に示す)を参照して、その出力に逐次プログラム34での変数名が含まれているか否かを調べる。
【0077】
その出力に逐次プログラム34での変数名が含まれている場合はステップS14へ進む一方、含まれていない場合はステップS15へ進む。
【0078】
ステップS14では、データベース35内の変数名対応情報62を参照した結果に基づいて、逐次プログラム34での変数名を並列プログラム31での対応する変数名に変換する。そして、ステップ15へ進む。
【0079】
ステップS15では、上述のステップS11−S14の処理を経て変換された出力を作業者に対して提供する。ただし、出力が行番号と変数名とのいずれも含まない場合(ステップS11,S13でいずれもNOの場合)は、出力は変換されずにそのまま提供される。
【0080】
上述のようにしてデバッグを行うようにした場合、作業者は、並列プログラム31と逐次プログラム34との間で対応する行番号同士、変数名同士を自身で相互に変換する必要がない。
【0081】
さらに、表示装置で並列プログラム31での情報を表示する一方、その情報に対応した逐次プログラム34での情報を隠すようにした場合、作業者はデバッガ・インターフェース37を介してあたかも並列プログラム31に対して直接デバッグを行っているかのような感覚でデバッグ作業を行うことができる。例えば、作業者は元の並列プログラム31内の行番号や変数名を使って不具合箇所を特定することができる。そして、元の並列プログラム31内の行番号や変数名を使ってその不具合を修正して解消することができる。
【0082】
したがって、作業者はデバッグ作業を効率良く短時間で行うことができる。
【0083】
なお、このデバッグ装置は、逐次プログラムを実行可能な一般的な電子計算機上で、上述のデバッグを行う処理を実行するためのプログラム(ソフトウェア)を用いて構成され得る。そのプログラムは、電子計算機が備える外部記憶装置(固定記憶装置)に記憶されていても良い。また、記録媒体(コンパクトディスク等)に書き込まれたそのようなプログラムを、読み取り可能なドライブで読み取るようになっていても良い。
【0084】
【発明の効果】
以上より明らかなように、この発明のデバッグ装置およびデバッグ方法によれば、作業者がデバッグ作業を効率良く行うことができる。
【0085】
また、この発明の記録媒体によれば、そのようなデバッグ方法を実現させることができる。
【図面の簡単な説明】
【図1】並列プログラムを逐次プログラムに変換しでデバッグを行う従来の方法を説明する図である。
【図2】元の並列プログラムではなく逐次プログラムを修正し、修正後の逐次プログラムを並列プログラムに変換する従来の方法を説明する図である。
【図3】本発明の一実施形態のデバッグ装置の構成を示す図である。
【図4】並列プログラムの例を示す図である。
【図5】図4の並列プログラムを変換して得られた逐次プログラム(前半部分)を示す図である。
【図6】図4の並列プログラムを変換して得られた逐次プログラム(後半部分)を示す図である。
【図7】データベースに格納されたデバッグ情報としての行番号対応情報を例示する図である。
【図8】データベースに格納されたデバッグ情報としての変数名対応情報を例示する図である。
【図9】データベースに格納されたデバッグ情報としてのスコープ情報例示する図である。
【図10】デバッグを行う処理(コマンド発行時)のフローを示す図である。
【図11】デバッグを行う処理(結果出力時)のフローを示す図である。
【符号の説明】
31 並列プログラム
32 逐次化部
33 デバッグ情報生成部
34 逐次プログラム
35 データベース
36 デバッガ
37 デバッガ・インタフェース
61 行番号対応情報
62 変数名対応情報
63 スコープ情報
Claims (10)
- 並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ装置であって、
並列プログラムを逐次プログラムに変換するとともに、上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を生成する逐次化手段と、
上記デバッグ情報を記憶する記憶手段とを備えたことを特徴とするデバッグ装置。 - 並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ装置であって、
上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を記憶する記憶手段と、
上記デバッグ情報に基づいて、上記並列プログラムと逐次プログラムとの間で対応する情報同士を相互に変換する変換手段を備えたことを特徴とするデバッグ装置。 - 並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ装置であって、
並列プログラムを逐次プログラムに変換するとともに、上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を生成する逐次化手段と、
上記デバッグ情報を記憶する記憶手段と、
上記デバッグ情報に基づいて、上記並列プログラムと逐次プログラムとの間で対応する情報同士を相互に変換する変換手段を備えたことを特徴とするデバッグ装置。 - 請求項1乃至3のいずれか一つに記載のデバッグ装置において、
上記デバッグ情報は上記並列プログラムと逐次プログラムとの間の行番号の対応を表すことを特徴とするデバッグ装置。 - 請求項1乃至3のいずれか一つに記載のデバッグ装置において、
上記デバッグ情報は上記並列プログラムと逐次プログラムとの間の変数名の対応を表すことを特徴とするデバッグ装置。 - 請求項1乃至3のいずれか一つに記載のデバッグ装置において、
上記デバッグ情報は上記並列プログラムと逐次プログラムとの間の行番号の対応と変数名の対応とを表すことを特徴とするデバッグ装置。 - 並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ方法であって、
逐次化手段によって並列プログラムを逐次プログラムに変換するとともに、上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を生成し、
上記デバッグ情報を記憶手段に記憶させることを特徴とするデバッグ方法。 - 並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ方法であって、
上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を記憶手段に記憶させ、
上記デバッグ情報に基づいて、変換手段によって上記並列プログラムと逐次プログラムとの間で対応する情報同士を相互に変換することを特徴とするデバッグ方法。 - 並列プログラムを逐次プログラムに変換してデバッグを行うのに用いられるデバッグ方法であって、
逐次化手段によって並列プログラムを逐次プログラムに変換するとともに、上記並列プログラムと逐次プログラムとの対応関係を表すデバッグ情報を生成し、
上記デバッグ情報を記憶手段に記憶させ、
上記デバッグ情報に基づいて、変換手段によって上記並列プログラムと逐次プログラムとの間で対応する情報同士を相互に変換することを特徴とするデバッグ方法。 - 請求項7乃至9のいずれか一つに記載のデバッグ方法を実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002356975A JP2004192139A (ja) | 2002-12-09 | 2002-12-09 | デバッグ装置、デバッグ方法および記録媒体 |
EP03257737A EP1429252A3 (en) | 2002-12-09 | 2003-12-09 | Debug device, debug method and computer readable storage medium |
US10/730,380 US7178064B2 (en) | 2002-12-09 | 2003-12-09 | Debug device, debug method and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002356975A JP2004192139A (ja) | 2002-12-09 | 2002-12-09 | デバッグ装置、デバッグ方法および記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004192139A true JP2004192139A (ja) | 2004-07-08 |
Family
ID=32322062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002356975A Pending JP2004192139A (ja) | 2002-12-09 | 2002-12-09 | デバッグ装置、デバッグ方法および記録媒体 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7178064B2 (ja) |
EP (1) | EP1429252A3 (ja) |
JP (1) | JP2004192139A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007141173A (ja) * | 2005-11-22 | 2007-06-07 | Matsushita Electric Ind Co Ltd | コンパイルシステム、デバッグシステムおよびプログラム開発システム |
CN111857732A (zh) * | 2020-07-31 | 2020-10-30 | 中国科学技术大学 | 一种基于标记的串行程序并行化方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110145661A1 (en) * | 2009-12-14 | 2011-06-16 | International Business Machines Corporation | Selectively displaying source code defect information within a source code editor |
US8584103B2 (en) * | 2010-06-17 | 2013-11-12 | International Business Machines Corporation | Reducing parallelism of computer source code |
CN113096269B (zh) * | 2021-04-28 | 2022-10-28 | 中国第一汽车股份有限公司 | 一种信息采集方法、装置、电子设备以及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5048018A (en) * | 1989-06-29 | 1991-09-10 | International Business Machines Corporation | Debugging parallel programs by serialization |
US6151701A (en) * | 1997-09-30 | 2000-11-21 | Ahpah Software, Inc. | Method for reconstructing debugging information for a decompiled executable file |
JP4050339B2 (ja) | 1994-04-28 | 2008-02-20 | 株式会社東芝 | 並行プログラム作成支援装置及び並行プログラム作成方法並びに並行プログラム実行装置 |
US5799142A (en) * | 1994-09-12 | 1998-08-25 | Nec Corporation | Debugging method and debugging system for multi-task programs |
US5687375A (en) * | 1994-10-14 | 1997-11-11 | International Business Machines Corporation | Debugging of High Performance Fortran programs with backup breakpoints |
US6286130B1 (en) | 1997-08-05 | 2001-09-04 | Intel Corporation | Software implemented method for automatically validating the correctness of parallel computer programs |
-
2002
- 2002-12-09 JP JP2002356975A patent/JP2004192139A/ja active Pending
-
2003
- 2003-12-09 US US10/730,380 patent/US7178064B2/en active Active
- 2003-12-09 EP EP03257737A patent/EP1429252A3/en not_active Withdrawn
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007141173A (ja) * | 2005-11-22 | 2007-06-07 | Matsushita Electric Ind Co Ltd | コンパイルシステム、デバッグシステムおよびプログラム開発システム |
CN111857732A (zh) * | 2020-07-31 | 2020-10-30 | 中国科学技术大学 | 一种基于标记的串行程序并行化方法 |
CN111857732B (zh) * | 2020-07-31 | 2021-10-22 | 中国科学技术大学 | 一种基于标记的串行程序并行化方法 |
Also Published As
Publication number | Publication date |
---|---|
US7178064B2 (en) | 2007-02-13 |
EP1429252A2 (en) | 2004-06-16 |
EP1429252A3 (en) | 2005-08-31 |
US20040153803A1 (en) | 2004-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPS6195458A (ja) | 図式プログラム・テスト方法 | |
US6532573B1 (en) | LSI verification method, LSI verification apparatus, and recording medium | |
JP2004192139A (ja) | デバッグ装置、デバッグ方法および記録媒体 | |
JP4774237B2 (ja) | プログラム開発支援装置、プログラム動作比較方法および半導体集積回路製造方法 | |
JPH10187461A (ja) | 言語処理方式 | |
JP2004070561A (ja) | デバッグ装置 | |
JPH11154093A (ja) | プログラムコンパイラ及びコンパイラ用プログラムを記録した記録媒体 | |
JP2008269529A (ja) | デバッグ支援装置 | |
JP2005174045A (ja) | ソースプログラム変換装置、ソースプログラム変換方法、ソースプログラム変換プログラム、および、プログラム記録媒体 | |
JP2785606B2 (ja) | パイプライン処理方式コンピュータ用プログラムのデバッガ | |
JP2004102742A (ja) | プログラムテストデバッグ装置 | |
JP3077627B2 (ja) | デバッグ方法およびデバッグプログラムを記録する記録媒体 | |
JPH05134854A (ja) | ソフトウエア開発支援装置 | |
JPH0324639A (ja) | プログラム理解支援方法 | |
JP2004145670A (ja) | テストベンチ生成方法、テストベンチ生成装置、及びコンピュータプログラム | |
JPH05108372A (ja) | コンパイラ最適化処理内容の出力方式 | |
JPH04209029A (ja) | 並列処理プログラム翻訳処理装置 | |
JP3063297B2 (ja) | 言語処理プログラム作成装置 | |
JPS6365542A (ja) | デバツグ方式 | |
JP2013120491A (ja) | ソースコード変換方法及びソースコード変換プログラム | |
JPS63640A (ja) | デ−タフロ−の部分ユニツト実行制御方式 | |
JPH0434624A (ja) | パリティデータ初期条件設定装置 | |
JPH0659937A (ja) | ロードモジュール単体テスト支援装置 | |
JPS59231649A (ja) | コンパイルリスト出力処理方式 | |
JPH05342052A (ja) | デバッグ方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050615 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080207 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080930 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090217 |