JPH05224987A - パイプライン処理方式コンピュータ用プログラムのデバッガ - Google Patents

パイプライン処理方式コンピュータ用プログラムのデバッガ

Info

Publication number
JPH05224987A
JPH05224987A JP4254444A JP25444492A JPH05224987A JP H05224987 A JPH05224987 A JP H05224987A JP 4254444 A JP4254444 A JP 4254444A JP 25444492 A JP25444492 A JP 25444492A JP H05224987 A JPH05224987 A JP H05224987A
Authority
JP
Japan
Prior art keywords
machine language
address
source
memory address
language 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.)
Granted
Application number
JP4254444A
Other languages
English (en)
Other versions
JP2785606B2 (ja
Inventor
Hirohiko Ono
洋彦 小野
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP4254444A priority Critical patent/JP2785606B2/ja
Publication of JPH05224987A publication Critical patent/JPH05224987A/ja
Application granted granted Critical
Publication of JP2785606B2 publication Critical patent/JP2785606B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 パイプライン制御方式を採用したコンピュー
タ用のオブジェクト最適化後のプログラムについてソー
スレベルにおけるデバッグを行う。 【構成】 最適化手段23は、機械語命令のパイプライ
ン実行順序を実行待ち時間が最小になるように変更す
る。行番号・アドレス範囲情報テーブル出力手段24
は、この結果により、ソース行ごとに、ソース行番号と
当該ソース行に対する機械語命令語のメモリアドレス範
囲とを表示した行番号・アドレス範囲情報テーブル4を
出力する。ソースレベルステップ実行手段53は機械語
命令実行後の停止アドレスが上述のメモリ範囲内にある
か否かをチェックしながら機械語命令を実行し、否のと
き当該ソース行のデバッグ終了と判断する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はシンボリック・ステップ
・デバッガ、特にパイプライン処理方式を採用したコン
ピュータ用のソースプログラムを行単位にデバッグする
デバッガに関する。
【0002】
【従来の技術】プログラムに誤りがあると正しくない結
果や回復できない状態に陥ることになる。たとえば、数
を0で割るとか、存在しないメモリ番地を参照したり、
そこに書き込もうとしたりする場合である。こうした原
因となるプログラムの誤りをバグといい、バグを除去す
る作業をデバッグという。
【0003】完全なデバッグは、プログラムがプログラ
ム開発者の意図どおりに作成されていることを確かめる
検証をしなければ終了しない。しかし、完全なプログラ
ムを書くのは極めて難しく、また机上デバッグには膨大
な工数を要する。
【0004】そこで、そのプログラムを実行してエラー
の原因を探り、プログラムが実際に使われる範囲で正し
く作動するようにプログラムを手直しするという対症療
法的なデバッグを採用するのが通例である。このような
デバッグを効率的にできるようにするシステムがデバッ
ガであり、特に記号的なソースプログラムのレベルでデ
バッグを行うデバッガをシンボリック・デバッガと称す
る。
【0005】デバッガには、プログラムの実行過程をバ
ッチ的に記録するトレーサと、プログラムを1ステップ
ずつ実行しながら、その実行状態を調べるステッパとが
あり、適時に使い分けられる。本発明はステッパ、すな
わちステップ・デバッガに関する。
【0006】ところで、パイプライン制御方式を採用し
たコンピュータにおいては、周知のように、ソースプロ
グラムの複数の行にそれぞれ対応する複数の機械語命令
の各々は、複数の所定の位相で連続して並列的に実行さ
れるが、ソースプログラムにより定まる機械語命令の並
び方によっては命令実行の待ち状態が発生することがあ
る。この待ち状態を回避するべく、異なるソース行対応
の機械語命令間でその並び方を予め変更してプログラム
実行時間を短縮する技法がオブジェクト最適化と称せら
れる。
【0007】オブジェクト最適化処理前のプログラム例
の一部を示す図5を参照すると、本プログラム例は、メ
モリアドレスaの内容とメモリアドレスbの内容を加算
してメモリアドレスcに格納するというソース行番号5
1が“1”のソース行52(以下ソース行1と記す)
と、メモリアドレスeの内容に即値“1”を加算してメ
モリアドレスdに格納するというソース行番号51が
“2”のソース行52(ソース行2)から成る。
【0008】ソース行1の演算代入文c=a+bは、図
の機械語命令番号の欄53に番号1,2および3で示さ
れるとおり、3つの機械語命令に翻訳される。機械語命
令番号“1”の第1の機械語命令(以下機械語命令1と
記す。“2”,“3”についても同じ。)は、メモリア
ドレスaの内容を読み出してレジスタ1に転送し、機械
語命令2はレジスタ1の内容にメモリアドレスbの内容
を加算してレジスタ1に保持し、機械語命令3はレジス
タ1の内容をメモリアドレスcに転送するものである。
【0009】同様に、ソース行2の演算代入文d=e+
1も3つの機械語命令に翻訳される。機械語命令4はメ
モリアドレスeの内容を読み出してレジスタ2に転送
し、機械語命令5はレジスタ2の内容に即値“1”を加
算してレジスタ2に保持し、機械語命令6はレジスタ2
の内容をメモリアドレスdに転送するものである。
【0010】いま、機械語命令の語長を2メモリアドレ
ス文のビット数と等しく選んであるので、機械語命令
1,2,3,…および6のメモリアドレスは欄54に図
示されるとおり、それぞれ0,2,4,…および10に
なる。
【0011】一方、パイプライン処理方式を採用したコ
ンピュータにおいては、機械語命令1,2,3,…は、
図6に示すとおり、互いにずれたタイミングで連続して
並列的に実行処理される。図6は4段パイプライン処理
の例を示し、機械語命令1,2,3,…の各々につい
て、1クロックサイクルごとに、機械語命令語の読み込
み、必要なメモリ内容の読み込み、命令の実行及び実行
結果の書き出しが順次連続して行われる。
【0012】図5のプログラムは、機械語命令の実行が
待ち状態に陥る一例を示し、機械語命令1によるレジス
タ1への「書き出し」終了後でなければ、機械語命令2
における「実行」ができない。従って、図5のプログラ
ム例においては、機械語命令2以下は1クロックサイク
ル分だけ遅延することになる。
【0013】この処理の遅れは、機械語命令の並び変え
を行うことにより回避することが可能である。図5のプ
ログラム例においては、機械語命令4は機械語命令1,
2及び3とは無関係な命令であるので、機械語命令1と
機械語命令2の間に移動すれば、機械語命令2が機械語
命令1の「実行」を待つ間に機械語命令4の「実行」を
することになり、命令実行性能の向上を図ることができ
る。図7は、図5のプログラム例に対するオブジェクト
最適処理後のプログラムを示す。
【0014】さて、従来のシンボリック・ステップ・デ
バッガは、デバッグ情報として、ソースプログラムのソ
ース行ごとに、その行番号と、このソース行の翻訳結果
である機械語命令列の先頭メモリアドレスとを格納した
行番号・アドレス情報テーブルを使用している。
【0015】図5のプログラム例に対する、このような
行番号・アドレス情報テーブル80を示す図8におい
て、シンボリック・ステップ・デバッガは、欄51に記
載のソース行番号1(ソース行1と表示、以下同じ)の
デバッグを行うとき、ソース行1の行番号“1”と先頭
メモリアドレス“0”、並びにソース行2の行番号
“2”と先頭メモリアドレス“6”を読み込む。そし
て、先ず機械語命令1を実行後に、停止メモリアドレス
は“2”となるが、この停止メモリアドレスはソース行
2の先頭メモリアドレス“6”より小さいので、次にメ
モリアドレス“2”の機械語命令が実行される。
【0016】以下、同様にして停止メモリアドレスが
“6”となる迄、機械語命令が実行される。停止メモリ
アドレスが“6”となれば、オブジェクト最適化がされ
ていない図5の場合ソース行1を完全に実行したことに
なるのに対して、オブジェクト最適化がされている図7
の場合は、ソース行1の機械語命令列のうち機械語命令
3の実行が未達である。すなわち、それだけ処理に遅れ
を生ずる。
【0017】
【発明が解決しようとする課題】上述した従来のシンボ
リック・ステップ・デバッガでは、デバッグ情報には先
頭メモリアドレスしか含んでいないため、ソース行の末
尾メモリアドレスは次のソース行の先頭メモリアドレス
と同一のメモリアドレスであるとの前提のもとに、ソー
ス行レベルでのステップ実行の終了を判断している。し
かしオブジェクト最適化がされたプログラムにおいて
は、機械語命令の実行順序が2つのソース行にわたるの
で、この前提は不実なものとなり、ソース行レベルでの
ステップ実行の終了を正しく判断することができないこ
とになる。このため、従来は、オブジェクト最適化を行
わないプログラムプログラムのソースレベルでのステッ
プ・デバッグと、オブジェクト最適化を行ったプログラ
ムのオブジェクトレベルでのステップ・デバッグとのい
ずれか、又は両方を行っていた。しかし、前者によると
運用時におけるのと異なるプログラムをデバッグするこ
とになり、また後者によるとデバッグ作業に多くの時間
がとられ、効率的デバッグ作業が行えないという問題点
がある。
【0018】本発明の目的はパイプライン制御方式を採
用したコンピュータ用の最適化処理後のプログラムのデ
バッグを可能にするシンボリック・ステップ・デバッガ
を提供することにある。
【0019】
【課題を解決するための手段】本発明のシンボリック・
ステップ・デバッガは、ソースプログラムの一行ごとに
ソース行番号とこのソース行の翻訳結果である機械語命
令列のメモリアドレス範囲を格納したテーブルを用意し
ておき、これをデバッグ情報として使用する。機械語命
令列は、指示に従ってオブジェクト最適化が実行された
結果のものであってもよい。ステップ・デバッグ実行時
には、当該ソース行と次のソース行に対するデバッグ情
報を読み込み1機械語命令を実行するごとに、次の機械
語命令アドレスが上述のメモリアドレス範囲内に留って
いるか否かをチェックしながら進行し、否となれば当該
ソース行のデバッグが終了する。
【0020】
【実施例】本発明の一実施例を示す図1を参照すると、
本実施例は、ソースファイル1から入力したソースプロ
グラムを解析する解析手段21,この解析結果を機械語
命令列情報に変換する翻訳手段22,機械語命令の移動
を伴うオブジェクト最適化を行う最適化手段23及び行
番号・アドレス範囲情報テーブル出力手段24を含む言
語処理部2と、言語処理部2が出力する機械語命令列フ
ァイル31を入力する機械語命令列ファイル入力手段4
1,行番号・アドレス範囲情報テーブル出力手段24か
らの行番号・アドレス範囲情報テーブル32の供給を受
ける行番号・アドレス範囲情報テーブル入力手段42及
び最適化された機械語命令列に対してソースレベルのス
テップ実行を行うソースレベルステップ実行手段43を
含むデバッグ処理部4とで構成される。
【0021】図2は行番号・アドレス範囲情報テーブル
32の一例を示す説明図であり、各エントリは欄32a
へのソース行番号1,2,3,…、欄32bへの先頭ア
ドレス0,2,12,…、および欄32cへの末尾アド
レス7,11,14,…から成る。図中における先頭ア
ドレスと末尾アドレス内容は図7に示したオブジェクト
最適化処理後の機械語命令に対応し、図8に示した行番
号・アドレス情報テーブル80とを比較すると、末尾ア
ドレス欄32cが追加されており、また先頭アドレス欄
32bの値も異なっていることがわかる。
【0022】次に、本実施例の動作を言語処理とデバッ
グ処理とに分け、それぞれ図3と図4のフローチャート
を参照して説明する。
【0023】先ず、言語処理部2の解釈手段21はソー
スプログラム1を読み込み、その解析を行う(ステップ
S1)。翻訳手段22はソースファイル1の情報を機械
語命令列に翻訳する(ステップS2)。最適化手段23
は、言語処理プログラムの使用者がオブジェクト最適化
処理指定をしたか否かの判定を行う(ステップS3)。
この指定は、具体的には例えばジョブ制御言語カードの
入力によって可能である。
【0024】ステップS3における判定の結果、オブジ
ェクト最適化処理指定が行われていると判明した場合に
は、最適化手段23は機械語命令を移動して最適化処理
を行う(ステップS4)。図5に示したプログラム例で
は、機械語命令2において、前述のとおり、機械語命令
の実行待ち状態が存在するので図7に示すように機械語
命令4を機械語命令1と機械語命令2の間に移動してい
る。
【0025】最適化処理を行うが否かに拘わらず、行番
号・アドレス範囲情報テーブル出力手段24は図2に示
した行番号・アドレス範囲情報テーブル32を出力する
(ステップS5)。最適化処理が行われなかった場合に
は、行番号・アドレス範囲情報テーブル32における先
頭アドレスの内容は行番号・アドレス情報テーブル80
(図8)における欄82の先頭アドレス内容と変わるこ
とがなく、末尾アドレスの内容は、欄81記載のソース
行番号に対する欄82の先頭アドレスの内容より1つ小
さい値となる。
【0026】一方、最適化処理が行われた場合には、図
2に示すように、ソース行1の翻訳結果である機械語命
令1,2及び3のメモリアドレス範囲は、機械語命令1
の先頭アドレスである0番地から機械語命令3の終了ア
ドレスである7番地までである。また、ソース行2の翻
訳結果である機械語命令4,5及び6のメモリアドレス
範囲は、機械語命令4の先頭アドレスである2番地から
機械語命令6の終了アドレスである11番地までであ
る。最後に、翻訳手段22は機械語命令列を機械語命令
列ファイル3に書き出す(ステップS6)。次に、デバ
ッグ処理部4の動作について説明する。
【0027】デバッグ処理プログラムの使用者が、ソー
スレベルのステップ実行指示を行うと、デバッグ処理部
4の機械語命令列ファイル入力手段41は機械語命令列
ファイル3、行番号・アドレス範囲情報テーブル入力手
段42は行番号・アドレス範囲情報テーブル32をそれ
ぞれメモリ(図示省略)に読み込む。この後、ソースレ
ベルステップ実行手段43は、図4のフローチャートに
示すように、以下の処理を行う。 (1)デバッグ対象の機械語命令列の現在の停止アドレ
スと、行番号・アドレス範囲情報テーブル32における
先頭アドレス32bを比較して同じ場合か又は次のソー
ス行の先頭アドレス32bより少ない場合は、そのソー
ス行の行番号を求める(ステプS11)。現在の停止ア
ドレスが0番地の場合、ソース行1の先頭アドレス0番
地と同じであるから求めるソース行番号は“1”とな
る。
【0028】(2)求めたソース行の先頭アドレスxと
末尾アドレスyを求める(ステップS12)。ソース行
1に対してはx=0,y=7である。
【0029】(3)1つの機械語命令を実行する(ステ
ップS13)。
【0030】(4)プログラムの停止アドレスが(2)
で求めた先頭アドレスxと末尾アドレスyの間に留まっ
ていれば(3)に戻り機械語命令のステップ実行を繰り
返す(ステップS14,S13)。停止アドレスが先頭
アドレスxと末尾アドレスyとで定まる範囲外になった
場合は、ソースレベルのステップ実行が終了したので、
当該ソース行についての機械語命令のステップ実行を終
了する(ステップS14)。図7に示したプログラム例
では、ソース行1の末尾アドレスは7番地であるので、
停止アドレスが8番地になるとソース行1のステップ実
行が終了することになる。
【0031】(5)ソースレベルのステップ実行が終了
すると、現在のプログラムの停止アドレスと、行番号・
アドレス範囲情報テーブル32の欄32bの先頭アドレ
スを比較し、同じ場合か又は次のソース行の先頭アドレ
スより少ない場合の欄32aのソース行番号を求める
(S15)。停止アドレスが8番地である場合、図2か
ら明らかなように、ソース行3の先頭アドレスである1
2番地以内であるため、求めるソース行番号は第2行と
なる。
【0032】(6)(5)で求めたソース行番号をデバ
ッグ実行者に対して通知するためコンソール等の表示装
置に停止ソース行番号を表示する(ステップS16)。
【0033】本実施例においては、ソース行の末尾アド
レスを図2に示したように絶対値で表わしているが、先
頭アドレスに対する相対値で表わすようにした実施例も
容易に実現できる。
【発明の効果】上述のとおり、本発明によると、パイプ
ライン制御方式のコンピュータにおいてオブジェクト最
適化処理を行なった場合においてもソース行に対する機
械語命令のメモリアドレス範囲を正確に表示する行番号
・アドレス範囲情報テーブルを使用するため、ソースレ
ベルのデバッグ実行が可能になる。
【図面の簡単な説明】
【図1】本発明の一実施例の要部を示すブロック構成図
である。
【図2】本発明のシンボリック・ステップ・デバッガに
おける行番号・アドレス範囲情報テーブル例を示す説明
図である。
【図3】本発明のシンボリック・ステップ・デバッガに
おける言語処理部の処理手順を示すフローチャートであ
る。
【図4】本発明のシンボリック・ステップ・デバッガに
おけるデバッグ処理部の処理手順を示すフローチャート
である。
【図5】最適化処理前のプログラム例の一部を示す説明
図である。
【図6】図1に示したプログラムのパイプライン処理例
を示す説明図である。
【図7】図1に示したプログラム例に最適化処理を施し
た後のプログラムを示す説明図である。
【図8】従来のシンボリック・ステップ・デバッガにお
ける行番号・アドレス情報テーブル例を示す説明図であ
る。
【符号の説明】
1 ソースファイル 2 言語処理部 21 解析手段 22 翻訳手段 23 最適化手段 24 行番号・アドレス範囲情報テーブル出力手段 31 機械語命令列ファイル 32 行番号・アドレス範囲情報テーブル 32a ソース行番号 32b 先頭アドレス 32c 末尾アドレス 4 デバッグ処理部 41 機械語命令列ファイル入力手段 42 行番号・アドレス範囲情報テーブル入力手段 43 ソースレベルステップ実行手段 51 ソース行番号 52 ソース行 53 機械語命令番号 54 メモリアドレス 55 機械語命令 80 行番号・アドレス情報テーブル 81 ソース行番号 82 先頭アドレス

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 パイプライン制御方式を採用したコンピ
    ュータ用のソースプログラムを行単位にデバッグするシ
    ンボリック・ステップ・デバッガにおいて、 前記ソースプログラムを構成する機械語命令の実行順序
    を実行待ち時間が最小になるように最適化する最適化手
    段と、 前記最適化の結果により、前記ソースプログラムのソー
    ス行ごとに、当該行番号及び当該ソース行に対する機械
    語命令後のメモリアドレス範囲を表示した行番号・アド
    レス範囲情報テーブルを作成する行番号・アドレス範囲
    情報テーブル出力手段と、 機械語命令実行の停止メモリアドレスが前記メモリアド
    レス範囲にあるか否かをチェックしながら前記機械語命
    令を実行し、前記否の場合に当該ソース行のデバッグ終
    了と判断するソースレベルステップ実行手段とを有する
    ことを特徴とするシンボリック・ステップ・デバッガ。
  2. 【請求項2】 前記メモリアドレス範囲を当該ソース行
    に対する機械語命令後の先頭メモリアドレスと末尾メモ
    リアドレスの絶対値とで表わしたことを特徴とする請求
    項1記載のシンボリック・ステップ・デバッガ。
  3. 【請求項3】 前記メモリアドレス範囲を当該ソース行
    に対する機械語命令後の先頭メモリアドレスと、該先頭
    メモリアドレスから末尾アドレスまでの差分情報とで表
    わしたことを特徴とする請求項1記載のシンボリック・
    ステップ・デバッガ。
JP4254444A 1991-10-11 1992-09-24 パイプライン処理方式コンピュータ用プログラムのデバッガ Expired - Lifetime JP2785606B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4254444A JP2785606B2 (ja) 1991-10-11 1992-09-24 パイプライン処理方式コンピュータ用プログラムのデバッガ

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP26394391 1991-10-11
JP3-263943 1991-10-11
JP4254444A JP2785606B2 (ja) 1991-10-11 1992-09-24 パイプライン処理方式コンピュータ用プログラムのデバッガ

Publications (2)

Publication Number Publication Date
JPH05224987A true JPH05224987A (ja) 1993-09-03
JP2785606B2 JP2785606B2 (ja) 1998-08-13

Family

ID=26541685

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4254444A Expired - Lifetime JP2785606B2 (ja) 1991-10-11 1992-09-24 パイプライン処理方式コンピュータ用プログラムのデバッガ

Country Status (1)

Country Link
JP (1) JP2785606B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08171499A (ja) * 1994-12-20 1996-07-02 Nec Software Ltd デバッグ装置
US6550056B1 (en) 1999-07-19 2003-04-15 Mitsubishi Denki Kabushiki Kaisha Source level debugger for debugging source programs

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08171499A (ja) * 1994-12-20 1996-07-02 Nec Software Ltd デバッグ装置
US6550056B1 (en) 1999-07-19 2003-04-15 Mitsubishi Denki Kabushiki Kaisha Source level debugger for debugging source programs

Also Published As

Publication number Publication date
JP2785606B2 (ja) 1998-08-13

Similar Documents

Publication Publication Date Title
JP2795244B2 (ja) プログラムデバッグシステム
US9342437B2 (en) Backward post-execution software debugger
US7653899B1 (en) Post-execution software debugger with performance display
EP0241946B1 (en) Information processing system
US8914777B2 (en) Forward post-execution software debugger
US8584097B2 (en) Post-execution software debugger with event display
US3659272A (en) Digital computer with a program-trace facility
US8015552B1 (en) Post-execution software debugger with coverage display
US20030177471A1 (en) System and method for graphically developing a program
JP2785606B2 (ja) パイプライン処理方式コンピュータ用プログラムのデバッガ
JP2004192139A (ja) デバッグ装置、デバッグ方法および記録媒体
JPH09237191A (ja) プログラミング支援装置、プログラミング支援方法、及びプログラミング支援プログラムを記録した媒体
JP3110391B2 (ja) プログラム再実行方法
JP2001290857A (ja) タイミングシミュレータ
JPH05108372A (ja) コンパイラ最適化処理内容の出力方式
JPH09160806A (ja) デバッグ支援方法および装置
JP2000305806A (ja) 不正メモリアクセスエラー検出方法及び不正メモリアクセスエラー検出装置
JPH05127945A (ja) プログラム実行状況解析方式
JP2003015907A (ja) デバッグ装置、デバッグプログラム、およびプログラム記録媒体
JPS59151247A (ja) 情報処理装置の試験装置
JP2001067245A (ja) シミュレーション方法及びシミュレーション装置
JPH04367902A (ja) プログラマブルコントローラ
JPS6361341A (ja) プログラムデバツグ装置
JPH064333A (ja) ブレークポイント設定装置
JPH06295241A (ja) プログラム性能評価方式

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19980428