JPH07271631A - デバッガ - Google Patents

デバッガ

Info

Publication number
JPH07271631A
JPH07271631A JP6062985A JP6298594A JPH07271631A JP H07271631 A JPH07271631 A JP H07271631A JP 6062985 A JP6062985 A JP 6062985A JP 6298594 A JP6298594 A JP 6298594A JP H07271631 A JPH07271631 A JP H07271631A
Authority
JP
Japan
Prior art keywords
execution
programs
program
parallel
result
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.)
Withdrawn
Application number
JP6062985A
Other languages
English (en)
Inventor
Shin Hashimoto
伸 橋本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP6062985A priority Critical patent/JPH07271631A/ja
Publication of JPH07271631A publication Critical patent/JPH07271631A/ja
Withdrawn legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 本発明は、デバッガに関し、並列実行、逐次
実行、マシンが異なる、スカラ実行、ベクトル実行、オ
ブションが異なるなどの場合に、ソースプログラムに所
定パターンを埋め込んで翻訳し、実行時に結果出力、他
の実行時の結果と動的に比較して出力し、一度の再翻訳
で多数の場所の動的なチェックを実現し、特に巨大配列
の動的比較結果の出力を可能にすることを目的とする。 【構成】 ソースプログラムに所定パターンを埋め込で
翻訳してデバッグオブジェクトを生成するコンパイラ組
み込み部と、生成されたデバッグオブジェクトをリンク
して実行プログラムを生成するリンカと、生成された2
種の実行プログラムがそれぞれ別個に実行して埋め込ま
れた所定パターンにより実行結果をそれぞれ出力、ある
いは一方の実行プログラムの埋め込まれた所定パターン
により出力された実行結果を、他方の実行プログラムが
取り込んで実行結果とを動的に比較して比較結果を出力
するように構成する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、プログラムのデバッグ
を行うデバッガに関するものである。
【0002】
【従来の技術】巨大科学技術計算プログラムなどの開発
時に結果異常や異常終了が起こった場合、その原因を突
き止めることは一般に難しい。
【0003】例えばベクトル計算機において、同じ内容
をそれぞれに適したように作成してコンパイルしたプロ
グラムをベクトル実行した場合の結果とスカラ実行した
場合の結果が異なる場合、その原因を突き止めることは
極めて難しい。
【0004】特に、最近出現しつつある並列計算機にお
いて、並列実行と逐次実行の結果が異なる場合、デバッ
グが困難であって非常に重要である。これは、例えば既
に開発を完了して結果の確認の行われている逐次プログ
ラムを、並列計算機に移植することが多いが、この場合
に逐次プログラムで逐次実行したときの結果と、移植し
た並列プログラムで並列実行したときの結果とが異なる
場合、デバッグすることが非常に困難である。
【0005】従来は、上述した場合に、ソースプログラ
ムを変更してWRITE文を挿入してある箇所の値を取
り出し、実行後にこれを取り出して正しい値と比較など
してデバッグを行うようにしていた。
【0006】また、対話型デバッガを使用してある特定
の場所の値を確認してデバッグを行うようにしていた。
【0007】
【発明が解決しようとする課題】上述した従来のWRI
TE文を挿入して値を確認したり、あるいは対話型デバ
ッガを用いて値を確認したりしてデバッグを行っていた
ため、下記のような問題があった。
【0008】(1) 巨大な配列を出力した場合、結果
の照合に手間がかかる。 (2) 新しいWRITE文を入れる毎に再コンパイル
が必要となり、デバッグ効率が悪い。
【0009】(3) 浮動小数点の場合、WRITE文
の出力を比較すると、2進法と10進法の変換が必要と
なり、結果の照合を間違うことが起こり易い。 (4) 手作業で行うため、誤りが発生し易い。
【0010】このため、これら手作業で行うのではなく
て、ソースプログラムに所定パターンを埋め込んで1度
の再翻訳により、実行途中結果および動的な比較結果を
出力し、デバッグ時のエラー情報を自動収集することが
望まれている。
【0011】本発明は、これらの問題を解決するため、
並列実行、逐次実行、マシンが異なる、スカラ実行、ベ
クトル実行、オブションが異なるなどの場合に、ソース
プログラムに所定パターンを埋め込んで再翻訳し、実行
時に結果を出力したり、更に他の実行時の結果と動的に
比較してエラー情報を出力したりし、一度の再翻訳で多
数の場所の動的なチェックを実現し、特に巨大配列の動
的比較結果の出力を可能にすることを目的としている。
【0012】
【課題を解決するための手段】図1、図11および図1
3を参照して課題を解決するための手段を説明する。図
1、図11および図13において、ソースプログラム1
1は、デバッグ対象のプログラムである。
【0013】コンパイラ組み込み部14は、ソースプロ
グラムに所定パターンを埋め込んで並列デバッグオブジ
ェクト16に翻訳するものである。コンパイラ組み込み
部24は、ソースプログラムに所定パターンを埋め込ん
で逐次デバッグオブジェクト26に翻訳するものであ
る。
【0014】並列デバッグオブジェクト16は、並列実
行可能なデバッグオブジェクトである。逐次デバッグオ
ブジェクト26は、逐次実行のデバッグオブジェクトで
ある。
【0015】リンカ17は、並列デバッグオブジェクト
16および並列デバッグライブラリをリンクし、並列実
行可能形式の並列デバッグ実行プログラム19を生成す
るものである。
【0016】リンカ27は、逐次デバッグオブジェクト
26および逐次デバッグライブラリをリンクし、逐次実
行可能形式の逐次デバッグ実行プログラム29を生成す
るものである。
【0017】比較情報ファイル20は、逐次デバッグ実
行プログラム29の実行途中結果を出力するファイルで
ある。比較結果21は、並列デバッグ実行プログラム1
9が実行時に比較情報ファイル20から取り込んだ逐次
実行時の実行途中結果と、当該並列実行時の実行途中結
果とを比較し、その比較結果を出力したものである。
【0018】
【作用】本発明は、図1に示すように、コンパイラ組み
込み部14がソースプログラム11に所定パターンを埋
め込で翻訳して並列デバッグオブジェクト16を生成
し、コンパイラ組み込み部24がソースプログラム11
に所定パターンを埋め込で翻訳して逐次デバッグオブジ
ェクト26を生成し、リンカ17が並列デバッグオブジ
ェクト16および並列デバッグライブラリをリンクして
並列デバッグ実行プログラム19を生成し、リンカ27
が逐次デバッグオブジェクト26および逐次デバッグラ
イブラリをリンクして逐次デバッグ実行プログラム29
を生成し、逐次デバッグ実行プログラム29を実行して
埋め込んだ所定パターンにより実行途中結果を出力し、
並列デバッグ実行プログラム19を実行して埋め込んだ
所定パターンにより実行途中結果を出力したり、あるい
は、逐次実行の実行途中結果を取り込んで並列実行の実
行途中結果とを動的に比較して比較結果を出力したりす
るようにしている。
【0019】また、図13に示すように、コンパイラ組
み込み部14がソースプログラム11に所定パターンを
埋め込で翻訳して並列デバッグオブジェクト16を生成
し、コンパイラ組み込み部24がソースプログラム11
に所定パターンを埋め込で翻訳して逐次デバッグオブジ
ェクト26を生成し、リンカ37が並列デバッグオブジ
ェクト16、逐次デバッグライブラリ26およびデバッ
グライブラリ18をリンクしてデバッグ実行プログラム
38を生成し、デバッグ実行プログラム38を実行して
埋め込んだ所定パターンにより実行途中結果を出力した
り、あるいは、逐次実行の実行途中結果と並列実行の実
行途中結果とを動的に比較して比較結果を出力したりす
るようにしている。
【0020】また、図11に示すように、コマンド解析
部56が2つの実行プログラムのコマンドを解析し、解
析されたコマンドが指定されたコマンドと一致したとき
に、デバッグ制御部43、44が2つの実行プログラム
の実行途中結果をそれぞれ取り出して比較し、比較結果
を出力するようにしている。
【0021】これらの際に、2つのソースプログラムと
して2つの並列実行の異なるソースプログラム、あるい
は2つの実行プログラムとして2つの並列実行の異なる
実行プログラムとするようにしている。
【0022】また、2つのソースプログラムとして並列
実行および逐次実行のソースプログラム、あるいは2つ
の実行プログラムとして並列実行および逐次実行の実行
プログラムとするようにしている。
【0023】また、2つのソースプログラムとして2つ
の逐次実行の異なるソースプログラム、あるいは2つの
実行プログラムとして2つの逐次実行の異なる実行プロ
グラムとするようにしている。
【0024】また、2つのソースプログラムとして2の
異なるプロセッサのソースプログラム、あるいは2つの
実行プログラムとして2つの異なるプロセッサの実行プ
ログラムとするようにしている。
【0025】また、2つのソースプログラムとしてスカ
ラ実行およびベクトル実行のソースプログラム、あるい
は2つの実行プログラムとしてスカラ実行およびベクト
ル実行の実行プログラムとするようにしている。
【0026】また、2つのソースプログラムとして翻訳
オプションの異なる2つのソースプログラム、あるいは
2つの実行プログラムとして翻訳オプションの異なる2
つの実行プログラムとするようにしている。
【0027】従って、並列実行、逐次実行、マシンが異
なる、スカラ実行、ベクトル実行、オブションが異なる
などの場合に、ソースプログラム11に所定パターンを
埋め込んで再翻訳し、実行時に結果を出力したり、更に
他の実行時の結果と動的に比較してエラー情報を出力し
たりすることにより、一度の再翻訳で多数の場所の動的
なチェックを実現し、特に巨大配列の動的比較結果を出
力することが可能となる。
【0028】
【実施例】
(1) まず、図2から図10を用いて、図1の構成の
もとで並列実行の実行プログラムおよび逐次実行の実行
プログラムの翻訳および実行時の動作を詳細に説明す
る。
【0029】図2は、本発明の1実施例構成図を示す。
これは、図1の構成のうちの並列デバッグ用のコパイラ
組み込み部14の動作を説明したフローチャートであ
る。図2において、S1は、ソースプログラムの読み込
みを行う。これは、後述する図3のソースプログラム1
1を取り込む。
【0030】S2は、パターン1を埋め込む。これは、
図4に示すように、ソースプログラムのの宣言文に続
いてパターン1を埋め込む。このパターン1は、例えば
ライブラリ関数を呼び出したときの戻り値が整数値とな
るように宣言したものである(戻り値が浮動小数点であ
ると、比較時などにコード変換が必要となる場合があっ
て間違う可能性があるので、予め整数値となるように宣
言したものである)。
【0031】S3は、並列実行される繰り返し文または
ブロックか判別する。これは、S1で読み込んだソース
プログラムの先頭から順次検索し、並列実行される繰り
返し文またはブロックが出現したか判別する。YESの
場合には、S4からS6によってパターン3、4、2を
埋め込み、S7に進む。一方、NOの場合には、S7に
進む。
【0032】S4は、並列実行される繰り返し文または
ブロックと判明したので、その直前にパターン3(入れ
子の深さを+1するパターン)を埋め込む(図4のパタ
ーン3参照)。
【0033】S5は、その直後にパターン4(図5参
照、実行途中結果を出力・比較などするパターン)を埋
め込む(図4のパターン4参照)。S6は、宣言部にパ
ターン2を埋め込む(例えば図4の(A)のパターン2
を埋め込む)。
【0034】S7は、非同期転送待ちか判別する。これ
は、例えば図3のソースプログラムのの非同期転送待
ちか判別する。YESの場合には、S8およびS9を行
う。一方、NOの場合には、終了する(END)。
【0035】S8は、その直後にパターン5を埋め込
む。これは、例えば図4のの非同期転送待ちの直後に
パターン5(図6の通過回数を+1などするパターン
5)を埋め込む)。
【0036】S9は、宣言部にパターン2を埋め込む。
これは、例えば図4の宣言部に(B)を埋め込む。以上
によって、図1の並列デバッグ用のコンパイラ組み込み
部14がソースプグラム11(図3)に並列実行される
繰り返し文またはブロックが出現したときにS4からS
6によって直前にパターン3、直後にパターン4、宣言
部にパターン2を埋め込み、非同期転送待ちが出現した
ときにS8とS9によって直後にパターン5および宣言
部にパターン2を埋め込む。そして、翻訳して並列デバ
ッグオブジェクト16として、図4に示すようなイメー
ジの並列デバッグオブジェクト16を生成する。
【0037】図3は、本発明のデバッグ対象のソースプ
ログラム例を示す。ここで、からは、ソースプログ
ラムをブロックに分けたものであって、後述する図4の
からにそれぞれ対応する。
【0038】図4は、本発明の並列デバッグオブジェク
ト例(概念)を示す。これは、図3のソースプログラム
例を、図2のフローチャートに従って、宣言部にパター
ン1、並列実行される繰り返し文またはブロックが出現
したときにその直前にパターン3、直後にパターン4お
よび宣言部にパターン2を埋め込み、非同期転送待ちが
出現したときに直後にパターン5と宣言部にパターン2
を埋め込んだものである。
【0039】図5は、本発明のパターン4の実行時の動
作フローチャートを示す。このパターン4は、図2のS
5で並列実行される繰り返し文またはブロックの直後に
埋め込んたものであって、翻訳した並列デバッグオブジ
ェクト16を並列デバッグライブラリとリンクして並列
実行プログラム19とし、これを実行したときのパター
ン4の動作である。
【0040】S11は、深さを1減らす。S12は、通
過回数を1増やす。S13は、深さが0か判別する。Y
ESの場合には、S14に進む。NOの場合には、終了
する。
【0041】S14は、まだ変数があるか判別する。Y
ESの場合には、S15に進む。NOの場合には、終了
する。S15は、そのファイル、行、通過回数、変数の
組は、比較対象として指定されているか判別する。YE
Sの場合には、S16に進む。NOの場合には、指定さ
れていないので、S14に戻り次に進む。
【0042】S16は、S15のYESで指定されてい
ると判明したので、その指定は出力か比較のいずれか判
別する。出力の場合には、S17に進む。一方、比較の
場合には、S21に進む。
【0043】S17は、S16で出力と判明したので、
要素か代表値かのいずれが指定されたかを判別する。要
素の場合には、S18で全要素を比較情報ファイル20
に出力する。一方、代表値の場合には、S19で全要素
の代表値を取り、S20で比較情報ファイル20に出力
する。
【0044】次に、S21は、S16で比較と判明した
ので、比較が要素か代表値がのいずれが指定されたかを
判別する。要素と判明した場合には、S22からS26
で要素比較を行う。一方、代表値と判明した場合には、
S27からS31で代表値比較を行う。
【0045】S22は、S21で要素と判明したので、
要素を転送してくる。これは、後述する逐次デバッグ実
行プログラム29の実行時に比較情報ファイル20に出
力された要素を転送してくる。
【0046】S23は、要素が終わりか判別する。YE
Sの場合には、S14に戻る。NOの場合には、S24
に進む。S24は、ファイルから1個読む。
【0047】S25は、要素とS24で読んだ要素の値
(逐次デバッグ実行プログラム29の実行時の対応する
要素の値)とを比較して一致か判別する。YESの場合
には、並列デバッグ実行プログラム19の実行時の要素
の値と、逐次デバッグ実行プログラム29の実行時の要
素の値(比較情報ファイル20から取り出した値)とが
一致して両者が等しかったので正常とする。一方、NO
の場合には、両者が等しくなく、エラーと判明したの
で、S26で配列名と添字を出力する(並列デバッグ実
行プログラム19の実行時にエラーとなった配列名と添
字を出力する)。
【0048】以上のS22からS26によって、並列デ
バッグ実行プログラム19の実行時の要素の値と、逐次
デバッグ実行プログラム29の実行時の要素の値を比較
情報ファイル20から取り出して比較し、一致したとき
に正常、不一致のときにエラーとして並列デバッグ実行
プログラム19の実行時の配列名と添字を比較結果21
として出力する。これにより、エラーとなった配列名と
添字のみが比較結果21として自動的に得られ、従来の
人手で比較したりなどの手間が不要となる。
【0049】次に、S27は、S21で代表値と判明し
たので、各要素を転送してくる。これは、局所メモリあ
るいはグローバルメモリなどのメモリ上にある各要素を
転送してくることを意味する。
【0050】S28は、全要素の代表値をとる。S29
は、ファイルから1個読む。S30は、代表値と読んだ
値を比較して一致か判別する。YESの場合には、並列
デバッグ実行プログラム19の実行時の全要素の代表値
と、逐次デバッグ実行プログラム29の実行時の全要素
の代表値(比較情報ファイル20から取り出した全要素
の代表値)とが一致して両者が等しかったので正常とす
る。一方、NOの場合には、両者が等しくなく、エラー
と判明したので、S31で配列名を出力する(並列デバ
ッグ実行プログラム19の実行時にエラーとなった配列
名を出力する)。
【0051】以上のS27からS31によって、並列デ
バッグ実行プログラム19の実行時の要素の代表値と、
逐次デバッグ実行プログラム29の実行時の要素の代表
値を比較情報ファイル20から取り出して比較し、一致
したときに正常、不一致のときにエラーとして並列デバ
ッグ実行プログラム19の実行時の配列名を比較結果2
1として出力する。これにより、エラーとなった配列名
のみが比較結果21として自動的に得られ、従来の人手
で比較したりなどの手間が不要となる。
【0052】従って、S11からS31によって、並列
実行される繰り返し文またはブロックであって指定され
たファイル、行、通過回数、変数の組の場合に、並列デ
バッグ実行プログラム19の実行時の全要素や代表値を
出力したり、あるいは要素や代表値と、逐次デバッグ実
行プログラム29の実行時の全要素や代表値を比較情報
ファイル20から取り出して比較し、不一致のときにエ
ラーとして並列デバッグ実行プログラム19の実行時の
配列名や添字を比較結果21として出力することが可能
となる。
【0053】図6は、本発明のパターン5の実行時の動
作フローチャートを示す。これは、図2のS8で、非同
期転送待ちの直後に埋め込んだパターン5の、並列デバ
ッグ実行プログラム19を実行したときの動作である。
【0054】図6において、S41は、通過回数を1増
やす。S42は、深さが0か判別する。YESの場合に
は、図5の(A)へ行く。そして、(A)以降のS14
からS31によって、既述したと同様に、そのファイ
ル、行、通過回数、変数の組が比較対象として指定され
ていた場合、 ・出力と指定されていたとき、指定された要素あるいは
代表値を比較情報ファイル20に出力する。
【0055】・比較と指定されていたとき、指定された
要素あるいは代表値を、逐次デバッグ実行プログラム2
9の実行途中結果の要素あるいは代表値と比較し、一致
しないときにそのときの配列名や添字を比較結果21と
して出力する。
【0056】次に、図7から図10を用いて、逐次デバ
ッグオブジェクトの場合ついて詳細に説明する。ここ
で、図7、図8、図9および図10は、並列デバッグ・
オブジェクトの場合の図2、図4、図5、図6にそれぞ
れ対応している。図3のソースプログラム11は共用す
る。
【0057】図7は、本発明の動作説明フローチャート
(逐次、コンパイル組み込み部)を示す。ここで、S5
1からS59は、図2のS1からS9に対応する。この
うち異なるのは、S55のときにパターン4’、S58
のときにパターン5’をそれぞれ埋め込むことであり、
他はほぼ同一であるので、説明を省略する。
【0058】図8は、本発明の逐次デバッグオブジェク
ト例(概念)を示す。これは、図4に対応したものであ
って、パターン4’とパターン5’が異なり、他は同一
であるので、説明を省略する。
【0059】図9は、本発明のパターン4’の実行時の
動作フローチャートを示す。ここで、S61からS81
は、図5のS11からS31にそれぞれ対応するが、S
65のNO、S68の続き、S70の続き、S73のN
O、S80のNOの場合に、BのS62に戻る点が異な
るのみで他は同一である。これは、逐次デバッグ実行プ
ログラム29の実行時であるので、S62で通過回数を
1増やしたものである。
【0060】図10は、本発明のパターン5’の実行時
の動作フローチャートを示す。これは、並列の場合の図
6と同一であって、図9のBのS62に戻る点のみが異
なる。他は同じであるので、説明を省略する。
【0061】(2) 次に、図11および図12を用い
て、対話的にデバッグする場合の動作を詳細に説明す
る。図11は、本発明の他の実施例構成図を示す。
【0062】図11において、デバッガ41は、対話的
にデバッグするツールであって、ユーザ入出力管理部4
2、デバッグ制御部(対話型デバッガ制御1)43、デ
バッグ制御部(対話型デバッガ制御2)44、コマンド
解析部45、および中間データ比較部46から構成され
るものである。
【0063】ユーザ入出力管理部42は、端末51の画
面上でユーザからの入力を取り込んだり、結果などを画
面上に表示したりし、ユーザと会話的に各種入出力を行
うものである。
【0064】デバッガ制御部(対話型デバッガ制御1)
43は、対話型デバッガ1(例えば既存のsdbやdb
xなどの対話型デバッガ)を制御するものである。デバ
ッガ制御部(対話型デバッガ制御2)44は、対話型デ
バッガ2(例えば既存のsdbやdbxなどの対話型デ
バッガ)を制御するものである。
【0065】コマンド解析部45は、被デバッグ実行プ
ログラム1および被デバッグ実行プログラム2の2つの
実行プログラムのコマンドを解析し、指定されたコマン
ドと一致するか否かを判別したりなどするものである
(図12参照)。
【0066】中間データ比較部46は、被デバッグ実行
プログラム1および被デバッグ実行プログラム2の2つ
の実行プログラムの指定されたコマンドの中間の実行途
中結果を比較し、一致するか否かを判別するものであ
る。
【0067】対話型デバッガ1は、被デバッグ実行プロ
グラム1と対話しつつデバッグを行うものであって、指
定したコマンドのときに実行を一時的に停止させたり、
中間結果を取り出したりなどするものである。
【0068】対話型デバッガ2は、被デバッグ実行プロ
グラム2と対話しつつデバッグを行うものであって、指
定したコマンドのときに実行を一時的に停止させたり、
中間結果を取り出したりなどするものである。
【0069】次に、図12にフローチャートに示す順序
に従い、図11の構成の動作を詳細に説明する。図12
において、S91は、コマンドの読み込みを行う。これ
は、図11の被デバッグ実行プログラム1、2のコマン
ドの読み込みを行う。
【0070】S92は、指定されたコマンドは終了か判
別する。YESの場合には、終了する(END)。NO
の場合には、S93に進む。S93は、指定されたコマ
ンドが比較か判別する。YESの場合には、S96に進
む。一方、NOの場合には、S94で対話型デバッガ1
でコマンドを実行し、S95で対話型デバッガ2でコマ
ンドを実行し、S91に戻る。
【0071】S96は、S93のYESで指定されたコ
マンドが比較と判明したので、会話型デバッガ1でデー
タを取る。S97は、S93のYESで指定されたコマ
ンドが比較と判明したので、会話型デバッガ2でデータ
を取る。
【0072】S98は、両方のデータが一致するか判別
する。これは、対話型デバッガ1で被デバッグ実行プロ
グラム1のコマンド実行した結果のデータと、対話型デ
バッガ2で被デバッグ実行プログラム2のコマンド実行
した結果のデータとが一致するか判別する。YESの場
合には、実行途中結果が正常と判明したので、S91に
戻る。一方、NOの場合には、実行途中結果が一致しな
く異常と判明したので、S99で一致しないデータをユ
ーザに表示する。これは、ユーザが会話的に指定したコ
マンドの実行途中結果が被デバッグ実行プログラム1と
被デバッグ実行プログラム2とではその実行途中結果が
異なったので、その異なった内容(配列名や添字、エラ
ーの値)などを端末51の画面上に表示してユーザに知
らせる。ユーザは画面上からエラーとなった内容を見
て、被デバッグ実行プログラム1、2のいずれの場所に
エラーがあったかを認識し、そのエラー部分を修正など
する。
【0073】以上のように、被デバッグ実行プログラム
1、2の2つの実行プログラムを会話的に指定したコマ
ンドの実行途中結果が不一致のときにその内容を表示さ
せてデバッグすることにより、並列実行、逐次実行、マ
シンが異なる、スカラ実行、ベクトル実行、オブション
が異なるなどの場合にも容易に2つの実行プログラムの
実行途中結果を比較し、デバッグすることが可能とな
る。
【0074】(3) 次に、図13から図23を用い
て、図13の構成のもとで並列実行の実行プログラムお
よび逐次実行の実行プログラムを1つのデバッグ実行プ
ログラム38に翻訳および実行時の動作を詳細に説明す
る。
【0075】図13は、本発明の他の実施例構成図を示
す。これは、リンカが並列デバッグオブジェクト16、
逐次デバッグオブジェクト26およびデバッグライブラ
リ18をリンクして1つのデバッグ実行プログラム38
を生成するときの構成である。ここで、制御コマンド1
2、並列デバッグ用コンパイラ13、解析情報15、並
列デバッグオブジェクト16、逐次デバッグ用コンパイ
ラ23、逐次デバッグオブジェクト26は、図1の構成
と同一であるので、説明を省略する。
【0076】図13において、リンカ37は、並列デバ
ッグオブジェクト16、逐次デバッグオブジェクト2
6、およびデバッグライブラリ18をリンクし、デバッ
グ実行プログラム38を生成するものである。
【0077】デバッグ実行プログラム38は、並列実行
デバッグオブジェクト16、逐次実行デバッグオブジェ
クト26などをリンクしたものであって、並列実行可能
な部分と逐次実行可能な部分との両者を持つものであ
る。
【0078】比較結果39は、デバッグ実行プログラム
19中の並列デバッグ実行プログラムと、逐次デバッグ
実行プログラムとの実行途中結果を比較し、その比較結
果を出力したものである。以下動作を詳細に説明する。
【0079】図14は、本発明の他の動作説明フローチ
ャート(並列、コンパイラ組み込み部)を示す。ここ
で、S101からS109は、図2のS1からS9と同
一であるので、説明を省略する。
【0080】図14において、S110は、宣言手続き
名を変更する。これは、例えば図15のソースプログラ
ムの第1行目の宣言手続き名を図16の第1行の(イ)
に示すように、 .p を追加し subroutine sub.p(a,b,c,n) と変更する。
【0081】S111は、またコモンブロックがあるか
判別する。YESの場合、例えば図15の第5行目の common /commonl/p,q のコモンブロックがある場合、S112でコモンブロッ
ク名を変更、例えば図16の(ロ)に示すように、 .p を付加して common/commonl.p/p,q と変更する。一方、S111のNOの場合には、S11
3に進む。
【0082】S113は、まだ手続き呼出し名があるか
判別する。YESの場合、例えば図15の第16行目の call sub2(c,n) の手続き呼出し名がある場合、S114で手続き呼出し
名を変更、例えば図16の(ハ)に示すように、 .p を付加して call sub2.p(c,n) と変更する。一方、S113のNOの場合には、終了す
る。
【0083】以上のS101からS114によって、図
15のソースプログラムに既述したパターン1からパタ
ーン5を埋め込むと共に、宣言手続き名、コモンブロッ
ク名、手続き呼出し名を変更することが可能となる。
【0084】図15は、本発明のデバッグ対象のソース
プログラム例を示す。ここで、’から’は、後述す
る図16および図21の同一番号にそれぞれ対応する。
図16は、本発明の他の並列デバッグ・オブジェクト例
(概念)を示す。これは、図15のソースプログラムに
ついて、図14のフローチャートに従ってパターン1か
らパターン5を埋め込むと共に、宣言手続き名、コモン
ドブロック名、呼出し手続名の(イ)、(ロ)、(ハ)
について変更した後の並列デバッグ・オブジェクト例の
概念である。
【0085】図17は、本発明のプログラム全体の実行
時の動作フローチャートを示す。これは、図13のリン
カ37によってリンクした後のデバッグ実行プログラム
38の実行時の全体の動作である。
【0086】図17において、S121は、自分自身と
同じプログラムを起動する。S122は、自分は親プロ
グラムか判別する。YESの場合には、S123で並列
プログラムの主プログラムを実行する。NOの場合に
は、逐次プログラムの主プログラムを実行する。
【0087】図18は、本発明のパターン4の実行時の
動作フローチャートを示す。これは、図14のS105
で並列実行される繰り返し文またはブロックの直後に埋
め込んだパターン4の実行時の動作である。図18にお
いて、S131は、深さを1減らす。
【0088】S132は、通過回数を1増やす。S13
3は、深さが0か判別する。YESの場合には、S13
4に進む。NOの場合には、終了する。
【0089】S134は、まだ変数があるか判別する。
YESの場合には、S135に進む。NOの場合には、
終了する。S135は、そのファイル、行、通過回数、
変数の組は、比較対象として指定されているか判別す
る。YESの場合には、S136に進む。NOの場合に
は、指定されていないので、S134に戻り次に進む。
【0090】S136は、その変数の要素がまだあるか
判別する。YESの場合には、S137に進む。一方、
NOの場合には、その要素がなくなったので、次の変数
に進み、S134を繰り返す。
【0091】S137は、その要素を並列実行している
プロセッサから転送してくる。S138は、その要素を
逐次実行しているプロセッサから転送してくる。S13
9は、S137の並列実行の要素の値と、S138の逐
次実行の要素の値とを比較して一致か判別する。YES
の場合には、一致して両者の要素の値が等しかったの
で、次の要素に進み、S136に戻る。一方、NOの場
合には、両者の要素の値が一致しなくエラーと判明した
ので、S140でその要素の配列名と添字を出力し、次
の要素に進み、S136に戻る。
【0092】以上によって、1つにリンクされた並列実
行の要素の値と逐次実行した要素の値とが一致しないと
きに配列名と添字を出力する。これにより、エラーとな
った配列名と添字のみが比較結果21として自動的に得
られることとなる。
【0093】図19は、本発明のパターン5の実行時の
動作フローチャートを示す。これは、図14のS108
で、非同期転送待ちの直後に埋め込んだパターン5の、
デバッグ実行プログラム38の並列実行部分を実行した
ときの動作である。
【0094】図19において、S141は、通過回数を
1増やす。S142は、深さが0か判別する。YESの
場合には、図18の(A)へ行く。そして、(A)以降
のS134からS140によって、既述したと同様に、
そのファイル、行、通過回数、変数の組が比較対象とし
て指定されていた場合、並列実行の変数の要素の値と、
逐次実行の変数の要素の値とを比較して一致しないとき
に配列名と添字を出力する。
【0095】次に、図20から図23を用いて、デバッ
グ実行プログラム38の逐次実行の場合ついて詳細に説
明する。図15のソースプログラム11は共用する。図
20は、本発明の動作説明フローチャート(逐次、コン
パイル組み込み部)を示す。ここで、S151からS1
64は、図14のS101からS114に対応する。こ
のうち異なるのは、S155のときにパターン4’、S
158のときにパターン5’をそれぞれ埋め込むことで
あり、他はほぼ同一であるので、説明を省略する。
【0096】図21は、本発明の他の逐次デバッグ・オ
ブジェクト例(概念)を示す。これは、図15のソース
プログラムについて、図20のフローチャートに従って
パターン1、パターン2、パターン3、パターン4’、
パターン5’を埋め込むと共に、宣言手続き名、コモン
ドブロック名、呼出し手続名の(イ)、(ロ)、(ハ)
について変更した後の並列デバッグオブジェクト例の概
念である。
【0097】図22は、本発明のパターン4’の実行時
の動作フローチャートを示す。これは、図20のS15
5で逐次実行される繰り返し文またはブロックの直後に
埋め込んだパターン4の実行時の動作である。
【0098】図22において、S171は、深さを1減
らす。S172は、通過回数を1増やす。S173は、
深さが0か判別する。YESの場合には、S174に進
む。NOの場合には、終了する。
【0099】S174は、まだ変数があるか判別する。
YESの場合には、S175に進む。NOの場合には、
終了する。S175は、そのファイル、行、通過回数、
変数の組は、比較対象として指定されているか判別す
る。YESの場合には、S172に進む。NOの場合に
は、指定されていないので、S174に戻り次に進む。
【0100】S176は、その変数の要素がまだあるか
判別する。YESの場合には、S177でその要素を並
列実行しているプロセッサに転送する。そして、S17
2を繰り返す。
【0101】以上によって、1つにリンクされた逐次実
行した変数の要素の値を並列実行しているプロセッサに
転送する。図23は、本発明のパターン5’の実行時の
動作フローチャートを示す。これは、図20のS158
で、非同期転送待ちの直後に埋め込んだパターン5’の
デバッグ実行プログラム38の逐次実行部分を実行した
ときの動作である。
【0102】図23において、S181は、通過回数を
1増やす。S182は、深さが0か判別する。YESの
場合には、図22の(B)へ行く。そして、(B)以降
のS172からS177によって、既述したと同様に、
そのファイル、行、通過回数、変数の組が比較対象とし
て指定されていた場合、逐次実行の変数の要素の値を並
列実行のプロセッサに転送する。
【0103】
【発明の効果】以上説明したように、本発明によれば、
並列実行、逐次実行、マシンが異なる、スカラ実行、ベ
クトル実行、オブションが異なるなどの場合に、ソース
プログラムに所定パターンを埋め込んで再翻訳し、実行
時に結果を出力したり、更に他の実行時の結果と動的に
比較してエラー情報を出力したりする構成を採用してい
るため、一度の再翻訳で多数の場所の動的なチェックを
実現し、特に巨大配列の動的比較結果を出力することが
できる。これらにより、下記のことができるようになっ
た。
【0104】(1) ソースプログラム11の繰り返し
文やブロック、非同期転送待ちの部分に所定パターンを
埋め込んで翻訳した並列デバッグ実行プログラム19と
逐次デバッグ実行プログラム29とを別個にリンクして
実行し、逐次実行のときの実行途中結果と、並列実行時
の実行途中結果とを出力したり、比較して一致しない配
列名や添字を出力することにより、動的にエラーの生じ
た配列名や添字を自動的に得ることができる。
【0105】(2) ソースプログラム11の繰り返し
文やブロック、非同期転送待ちの部分に所定パターンを
埋め込んで翻訳した並列デバッグ実行プログラム19と
逐次デバッグ実行プログラム29とを一緒にリンクした
デバッグ実行プログラム38を実行し、逐次実行のとき
の実行途中結果と、並列実行時の実行途中結果とを出力
したり、比較して一致しない配列名や添字を出力するこ
とにより、動的にエラーの生じた配列名や添字を自動的
に得ることができる。
【0106】(3) 並列実行、逐次実行、マシンが異
なる、翻訳オプションが異なるなどの2つのデバッグ実
行プログラムを実行して両者の実行途中結果を比較して
一致しないときの実行途中結果(配列名や添字など)を
自動的に得ることができる。
【0107】(4) 並列実行、逐次実行、マシンが異
なる、翻訳オプションが異なるなどの2つのデバッグ実
行プログラムと会話的にコマンド指定してそのときの実
行途中結果を比較して一致しないときに一致しないデー
タを表示してユーザに知らせることが可能となった。
【図面の簡単な説明】
【図1】本発明の1実施例構成図である。
【図2】本発明の動作説明フローチャート(並列、コン
パイル組み込み部)である。
【図3】本発明のデバッグ対象のソースプログラム例で
ある。
【図4】本発明の並列デバッグオブジェクト例(概念)
である。
【図5】本発明のパターン4の実行時の動作フローチャ
ートである。
【図6】本発明のパターン5の実行時の動作フローチャ
ートである。
【図7】本発明の動作説明フローチャート(逐次、コン
パイル組み込み部)である。
【図8】本発明の逐次デバッグオブジェクト例(概念)
である。
【図9】本発明のパターン4’の実行時の動作フローチ
ャートである。
【図10】本発明のパターン5’の実行時の動作フロー
チャートである。
【図11】本発明の他の実施例構成図である。
【図12】本発明の他の動作フローチャートである。
【図13】本発明の他の実施例構成図である。
【図14】本発明の他の動作説明フローチャート(並
列、コンパイル組み込み部)である。
【図15】本発明のデバッグ対象のソースプログラム例
である。
【図16】本発明の他の並列デバッグオブジェクト例
(概念)である。
【図17】本発明のプログラム全体の実行時の動作フロ
ーチャートである。
【図18】本発明のパターン4の実行時の動作フローチ
ャートである。
【図19】本発明のパターン5の実行時の動作フローチ
ャートである。。
【図20】本発明の他の動作説明フローチャート(逐
次、コンパイル組み込み部)である。
【図21】本発明の他の逐次デバッグオブジェクト例
(概念)である。
【図22】本発明のパターン4’の実行時の動作フロー
チャートである。
【図23】本発明のパターン5’の実行時の動作フロー
チャートである。
【符号の説明】
11:ソースプログラム 12:制御コマンド 13:並列デバッグ用コンパイラ 14、24:コンパイラ組み込み部 16:並列デバッグオブジェクト 17、27、37:リンカ 18:デバッグライブラリ(並列、逐次) 19:並列デバッグ実行プログラム 20:比較情報ファイル 21:比較結果 23:逐次デバッグ用コンパイラ 26:逐次デバッグオブジェクト 29:逐次デバッグ実行プログラム 38:デバッグ実行プログラム 39:比較結果 41:デバッガ 42:ユーザ入出力管理部 43、44:デバッグ制御部 45:コマンド解析部 46:中間データ比較部

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】プログラムのデバッグを行うデバッガにお
    いて、 ソースプログラムに所定パターンを埋め込で翻訳してデ
    バッグオブジェクトを生成するコンパイラ組み込み部
    と、 この生成されたデバッグオブジェクトをリンクして実行
    プログラムを生成するリンカと、 生成された2種の実行プログラムがそれぞれ別個に実行
    して上記埋め込まれた所定パターンにより実行途中結果
    をそれぞれ出力、あるいは一方の実行プログラムの上記
    埋め込まれた所定パターンにより出力された実行途中結
    果を、他方の実行プログラムが取り込んで実行途中結果
    とを動的に比較して比較結果を出力することを特徴とす
    るデバッガ。
  2. 【請求項2】プログラムのデバッグを行うデバッガにお
    いて、 ソースプログラムに所定パターンを埋め込で翻訳してデ
    バッグオブジェクトを生成するコンパイラ組み込み部
    と、 これら生成された2種のデバッグオブジェクトをリンク
    して1つの実行プログラムを生成するリンカと、 生成された1つの実行プログラムが実行して上記埋め込
    まれた所定パターンにより実行途中結果をそれぞれ出
    力、あるいは一方の実行プログラムの上記埋め込まれた
    所定パターンによる実行途中結果と、他方の実行プログ
    ラムの実行途中結果とを内部で動的に比較して比較結果
    を出力することを特徴とするデバッガ。
  3. 【請求項3】プログラムのデバッグを行うデバッガにお
    いて、 2つの実行プログラムのコマンドを解析するコマンド解
    析部と、 解析されたコマンドが指定されたコマンドと一致したと
    きに、2つの実行プログラムの実行途中結果をそれぞれ
    取り出して比較し、比較結果を出力するデバッガ制御部
    とを備えたことを特徴とするデバッガ。
  4. 【請求項4】上記2つのソースプログラムとして2つの
    並列実行の異なるソースプログラム、あるいは2つの実
    行プログラムとして2つの並列実行の異なる実行プログ
    ラムとしたことを特徴とする請求項1から請求項3に記
    載のデバッガ。
  5. 【請求項5】上記2つのソースプログラムとして並列実
    行および逐次実行のソースプログラム、あるいは2つの
    実行プログラムとして並列実行および逐次実行の実行プ
    ログラムとしたことを特徴とする請求項1から請求項3
    に記載のデバッガ。
  6. 【請求項6】上記2つのソースプログラムとして2つの
    逐次実行の異なるソースプログラム、あるいは2つの実
    行プログラムとして2つの逐次実行の異なる実行プログ
    ラムとしたことを特徴とする請求項1から請求項3に記
    載のデバッガ。
  7. 【請求項7】上記2つのソースプログラムとして2の異
    なるプロセッサのソースプログラム、あるいは2つの実
    行プログラムとして2つの異なるプロセッサの実行プロ
    グラムとしたことを特徴とする請求項1から請求項3に
    記載のデバッガ。
  8. 【請求項8】上記2つのソースプログラムとしてスカラ
    実行およびベクトル実行のソースプログラム、あるいは
    2つの実行プログラムとしてスカラ実行およびベクトル
    実行の実行プログラムとしたことを特徴とする請求項1
    から請求項3に記載のデバッガ。
  9. 【請求項9】上記2つのソースプログラムとして翻訳オ
    プションの異なる2つのソースプログラム、あるいは2
    つの実行プログラムとして翻訳オプションの異なる2つ
    の実行プログラムとしたことを特徴とする請求項1から
    請求項3に記載のデバッガ。
JP6062985A 1994-03-31 1994-03-31 デバッガ Withdrawn JPH07271631A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6062985A JPH07271631A (ja) 1994-03-31 1994-03-31 デバッガ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6062985A JPH07271631A (ja) 1994-03-31 1994-03-31 デバッガ

Publications (1)

Publication Number Publication Date
JPH07271631A true JPH07271631A (ja) 1995-10-20

Family

ID=13216173

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6062985A Withdrawn JPH07271631A (ja) 1994-03-31 1994-03-31 デバッガ

Country Status (1)

Country Link
JP (1) JPH07271631A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003526135A (ja) * 1998-11-16 2003-09-02 インシグニア・ソリューションズ・ピーエルシー コンピュータ・システム、コンピュータ読取り可能な記憶媒体および同媒体を動作させる方法、およびコンピュータ・システムを動作させる方法
KR100655275B1 (ko) * 1999-08-25 2006-12-08 삼성전자주식회사 조건 분기 명령어의 컴파일 방법
JP2011134033A (ja) * 2009-12-24 2011-07-07 Mitsubishi Electric Corp デバッグ支援方法
WO2013008326A1 (ja) * 2011-07-13 2013-01-17 富士通株式会社 ソフトウェア検証方法、およびソフトウェア検証システム
JPWO2013008326A1 (ja) * 2011-07-13 2015-02-23 富士通株式会社 ソフトウェア検証方法、およびソフトウェア検証システム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003526135A (ja) * 1998-11-16 2003-09-02 インシグニア・ソリューションズ・ピーエルシー コンピュータ・システム、コンピュータ読取り可能な記憶媒体および同媒体を動作させる方法、およびコンピュータ・システムを動作させる方法
KR100655275B1 (ko) * 1999-08-25 2006-12-08 삼성전자주식회사 조건 분기 명령어의 컴파일 방법
JP2011134033A (ja) * 2009-12-24 2011-07-07 Mitsubishi Electric Corp デバッグ支援方法
WO2013008326A1 (ja) * 2011-07-13 2013-01-17 富士通株式会社 ソフトウェア検証方法、およびソフトウェア検証システム
JPWO2013008326A1 (ja) * 2011-07-13 2015-02-23 富士通株式会社 ソフトウェア検証方法、およびソフトウェア検証システム

Similar Documents

Publication Publication Date Title
US6769115B1 (en) Adaptive interface for a software development environment
US6671874B1 (en) Universal verification and validation system and method of computer-aided software quality assurance and testing
US6038378A (en) Method and apparatus for testing implementations of software specifications
US5870590A (en) Method and apparatus for generating an extended finite state machine architecture for a software specification
US5317743A (en) System for compiling iterated loops based on the possibility of parallel execution
US7934205B2 (en) Restructuring computer programs
US4773007A (en) Complier code optimization method for a source program having a first and second array definition and use statements in a loop
JPH05257709A (ja) 並列化判別方法およびそれを用いた並列化支援方法
US20230004368A1 (en) Multi-chip compatible compiling method and device
US7080360B2 (en) Breakpoint safety net
JP4346316B2 (ja) 複数の意味レベルによるアスペクト指向プログラミングのための方法
EP0428560A4 (en) Machine process for translating programs in binary machine language into another binary machine language
JPH07271631A (ja) デバッガ
US6086622A (en) Method and apparatus for converting an architecture of a program and method, and apparatus for debugging a program by using them
KR100309674B1 (ko) 실시간데이터베이스관리시스템의트랜잭션전처리방법
Boyland et al. Attributed transformational code generation for dynamic compilers
JPH01177165A (ja) 配列の定義/引用関係検査方式
JP2882876B2 (ja) プログラム試験方法
Hu State abstraction in SDL
JPH02190935A (ja) 構文解析ルールの組込機能を持つプログラムのコンパイル方式
Kimble An alternative source code analysis
JPH10312312A (ja) 仕様によって動作が変わるc言語の計算機プログラム検査処理方法およびプログラム記憶媒体
Green Modelling a data acquisition system
JPH05120025A (ja) ソースプログラムのインライン展開方法
JPH04219834A (ja) プログラム検査方法およびプログラム生成方法

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20010605