JP2607975B2 - デバック方式 - Google Patents

デバック方式

Info

Publication number
JP2607975B2
JP2607975B2 JP2300300A JP30030090A JP2607975B2 JP 2607975 B2 JP2607975 B2 JP 2607975B2 JP 2300300 A JP2300300 A JP 2300300A JP 30030090 A JP30030090 A JP 30030090A JP 2607975 B2 JP2607975 B2 JP 2607975B2
Authority
JP
Japan
Prior art keywords
line
statement
attribute information
patch
information
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.)
Expired - Lifetime
Application number
JP2300300A
Other languages
English (en)
Other versions
JPH04171543A (ja
Inventor
昭範 野口
敦子 栗原
Original Assignee
日立電子エンジニアリング株式会社
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 日立電子エンジニアリング株式会社 filed Critical 日立電子エンジニアリング株式会社
Priority to JP2300300A priority Critical patent/JP2607975B2/ja
Publication of JPH04171543A publication Critical patent/JPH04171543A/ja
Application granted granted Critical
Publication of JP2607975B2 publication Critical patent/JP2607975B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Description

【発明の詳細な説明】 [産業上の利用分野] この発明は、デバック方式に関し、詳しくは、ソース
プログラム(原始プログラム)のレベルでパッチ(言語
の一部分の修正)ができ、それをオブジェクトプログラ
ム(コンピュータが実行可能な状態の実行用プログラ
ム、すわゆる機械語のプログラム)に持ち込むことがで
きるデバック方式に関する。
[従来の技術] 従来、パルカル準拠のプログラムやC言語準拠のプロ
グラム等の高級言語を用いてプログラムを作成した場合
にそのパッチを高級言語で行い、高級言語からオブジェ
クトプログラムを持ち込む機能はなく、通常、パッチ機
能は、機械語レベルのオブジェクトプログラムに対して
設けられていて、これを直接修正する機能として用いら
れている。
[解決しようとする課題] しかし、機械語レベルのオブジェクトプログラムをパ
ッチ機能で修正するとなると、機械語の命令構造を理解
しなければならず、一般のプログラム作成者にとっては
扱い難い。
一般的には、パスカルやC言語準拠のプログラムのよ
うな高級言語を使用してプログラムを作成した場合にス
クリーンエディタ機能を利用してステートメントの修正
は可能である。しかし、スクリーンエディタの修正は、
ソースプログラムの1行に複数のステートメントがある
場合には、その行番号対応となり、1つのステートメン
トが複数の行に亙る場合には、そのステートメント対応
となる。そして、複数の行に1つのステートメントが亙
り、かつ、その行に複数のステートメントがある場合に
はそのようなステートメント全体になる。
このような関係からステートメント修正によるスクリ
ーンエディタの実際の内部修正処理は、多くのステート
メントについて行わなければならず、場合によっては、
ある単位のファイル全体に及ぶこともある。しかも、プ
ログラム開発は、設計→制作(編集)→デバック→制作
(編集)→デバックとデバック→制作(編集)の繰り返
しであるので、高級言語ではソースプログラムの修正と
翻訳とを繰り返さなければならず、スクリーンエディタ
機能を利用してもデバックに手間がかかる。
この発明は、このような従来技術の問題点を解決する
ものであって、パスカル準拠のプログラム等の高級言語
のソースプログラムレベルでのパッチが容易にできるよ
うなデバック方式を提供することを目的とする。
[課題を解決するための手段] このような目的を達成するこの発明のデバック方式の
特徴は、スクリーンエディタ部と、パッチ修正部と、ソ
ースプログラムからオブジェクトプログラムを生成する
言語翻訳処理部とを備えていて、スクリーンエディタ部
又は言語翻訳処理部がソースプログラムの各行に対応し
て行属性情報を付加したスクリーンエディト対象となる
ステートメントのリストファイルをソースプログラムか
ら生成し、言語翻訳処理部がこのリストファイルからオ
ブジェクトプログラムのファイルを生成するものであ
り、行属性情報には実行文の先頭か、継続文か等のその
行の先頭ステートメントについての行属性を識別する識
別情報とソースプログラムの行番号情報とその行のステ
ートメントの修正を管理するためのパッチ枝番号情報と
が設けられ、スクリーンエディタ部が行属性情報に従っ
て表示画面上で指定された修正対象のステートメントを
検索し、この修正対象のステートメントについて表示画
面の入力に応じた修正を行い、パッチ修正部がスクリー
ンエディタ部により修正されたステートメントをリスト
ファイルの後ろの空きの行に追加してその行の行属性情
報を修正前の行属性情報に対応させてかつその枝番をパ
ッチ枝番号情報に加えた行属性情報を発生させて記憶
し、言語翻訳処理部が行属性情報とパッチ枝番号情報と
に応じて同じ行番号の行属性情報についてはパッチ枝番
号順に順次言語翻訳して修正されたステートメントに応
じて修正されたオブジェクトプログラムのファイルを生
成するものである。
[作用] このように、ソースプログラムから生成したスクリー
ンエディト対象となるリストファイルのプログラムの各
行に対応してリスト先頭部に行属性情報を配置したリス
トを生成し、各行属性情報にパッチ枝番号情報を記憶で
きるようにすることで、言語翻訳の際に同じ行番号につ
いてはパッチ枝番順にコンパイルすることがきるので、
ステートメント対応に修正分をパッチ枝番号を採ってリ
ストファイルに記憶することによりソースプログラムに
おけるパッチをステートメント対応にすることができ
る。
[実施例] 以下、この発明の一実施例について図面を参照して詳
細に説明する。
第1図(a)は、この発明のデバック方式を適用した
デバックシステムのリストファイルの情報形態の説明図
であり、第1図(b)は、その各行の先頭に配置される
行属性情報のフォーマットの説明図、第2図は、そのデ
バックシステムの全体的な説明図、第3図は、そのディ
スプレイのステートメントの表示状態とリストファイル
の行属性情報との関係の説明図である。
第2図において、1は、ソースプログラムファイル
(以下ソースファイル)であり、キーボードからの行指
定に応じてコンピュータ2の内部に設けられた言語翻訳
処理部3(又はスクリーンエディタ部8)により抽出さ
れた所定の行分のソースプログラムのステートメントに
ついて行属性情報10(第1図(b)参照)を各行に有す
るリストファイル4が生成され、それが例えばコンピュ
ータ2の内部メモリにロードされる。この内容に応じて
ディスプレイ7に転送された各ステートメント6がソー
スプログラムの行番号対応にディスプレイ7の画面上7a
に第3図に示すような形態で順次表示される。
コンピュータ2には、言語翻訳処理部3のほかにスク
リーンエディタ部8とパッチ修正部9とが設けられてい
て、このうちカーソル7b(第3図参照)が位置するステ
ートメントについてそれが訂正された場合にスクリーン
エディタ部8とパッチ修正部9に従ってその修正内容を
リストファイル4に記憶する。そして、この修正さそれ
た内容に応じてオブジェクトプログラムファイル(以下
オブジェクトファイル)5が生成される。なお、このと
き同時にソースファイル1も修正に応じて更新される。
この場合、編集対象として表示されるリストファイル
4は、カーソル7bのスクロール処理あるいは表示領域指
定処理に応じてソースファイル1からそのプログラムに
おける対象の行番号のものが順次抽出されてリストファ
イル4が生成されていく。また、修正の必要のない行番
号のステートメントについては、リストファイル4によ
ることなく、キーボード(図示せず)等からの指示によ
り、言語翻訳処理部3によって直接ソースファイル1か
らオブジェクトファイル5が生成されていく。
ここで、リストファイル4は、第1図(a)に示され
るように、ソースファイル1のプログラムの各行をそれ
ぞれ1行に対応させてそのステートメントを記憶し、そ
の各行に対応して各行の先頭に10文字分の行属性情報10
が設けられている。これは、同図(b)に示されるよう
なフォーマットとなっている。
スクリーンエディタ部8は、行属性情報10を参照して
これに従って実行文の先頭と各ステートメントの終わり
の位置を抽出し、修正対象ステートメントを抽出する。
そして、画面入力に応じた修正ステートメントを生成す
る。
パッチ修正部9は、修正された後のステートメントに
ついてそれをリストファイル4の後ろの空き行の部分に
記憶する。そして、この記憶するアドレスの行の行属性
情報10のパッチ枝番情報15(第1図(b)参照)にパッ
チ枝番号を書込み、それ以外は前と同じ行属性情報を生
成する。さらに、修正前のステートメントがあった元の
行のステートメントの位置には、言語翻訳処理部3に対
して修正ステートメントの記憶位置にジャンプすること
ができる情報を書込む。これによりソースプログラムの
ステートメントを機械語コードに変換する場合に修正さ
れたステートメントが記憶されたアドレスに移ることが
できる。そして、修正されたステートメントが記憶され
ている行の最後の情報の後ろには、言語翻訳処理部3が
ジャンプ元へとリターンして次のステートメントのコン
パイルができるような情報が記憶される。
このようにしてパッチのときには、その行にある行属
性情報10のパッチ枝番情報15に枝番号を記憶する行属性
情報10を発生させ、それ以外の行属性情報10の情報はジ
ャンプ前の行番号のものと同じものとしてその行に修正
されたステートメントを記憶し、修正されたステートメ
ントをリストファイル4に追加していく。
なお、言語翻訳部3にジャンプやリターンの特別な処
理命令の制御機能が付加できない場合には、単に、リス
トファイル4について行番号順及び同じ行番号の場合に
はパッチ枝番号順にソートをかけてからコンパイルすれ
ばよい。さらに、ソートをかけない場合には、修正され
た元の行属性情報10のパッチ枝番号情報15の位置に枝番
号がある旨のコードを挿入してリストファイル4の後部
に設けられた修正ステートメント領域を検索するように
してもよい。ただし、以上の処理場合に、1行に複数の
ステートメントがあるれば、パッチされたステートメン
トの後のステートメントは、修正されたステートメント
が記憶された行に移されて記憶される。したがって、こ
の修正されたステートメントより後のステートメントが
修正対象となり修正されたときには枝番号はさらに更新
されて修正され、次に更新されたパッチ枝番号を持つ行
属性情報10が生成されてそれとともに修正ステートメン
トがリストファイル4に追加記憶されていく。
第1図(b)に示す行属性情報10は、ここでは、10文
字(20バイト)分であって、最初の1バイトが行識別子
11であり、リストファイル4の各行の先頭位置にあっ
て、第3図に示すように、各ステートメント(実行文)
6の先頭であか、続きであるか、コメント文6aであか、
などを示すコードが挿入される。これによりこれ以降10
文字分がその行に表示されたステートメントについての
行属性情報10であることを示す。
この行識別子11は、各行の先頭におけるステートメン
トの解釈の状態に基づいて言語翻訳部3(又はスクリー
ンエディタ部8)が編集対象となるリストファイル4の
先頭から順次ステートメントの作成規約に従って発生さ
せて行属性情報10の先頭に記憶していく。
例えば、パスカルでは、ファイルの先頭をまずみて、
それがコメント文か否かを「(*」であるか否かで判定
し、そうでなければ実行文の先頭の識別子のコードを発
生して行識別子として行識別子11に記憶する。以下、
「CR」キー対応のコード毎にその手前に「;」や
「*)」があるか否かを検出し、さらに次の行の先頭が
「(*」であるか否かを検出して、次の行の実行文が継
続しているか否かを各行の先頭について判定していく。
これによりコメント文の先頭か実行文の先頭か、あるい
は継続文かが分かり、それに応じた行識別子を発生させ
てそれぞれに応じて行属性情報の行識別子11の位置に記
憶していく。
次の欄は、インサートファイル番号情報12であり、イ
ンサート命令の出現順にインサートされたステートメン
トが増加するごとにそのインサートされるステートメン
トの行の行属性情報10においてそのインサートファイル
番号情報12の番号が更新されていく。なお、元の行のイ
ンサート命令には、インサートされるステートメントの
ジャンプ先が記憶される。
その次の欄は、ソースファイル1に実際に付加されて
いるプログラムについての行番号13であり、4バイトの
情報として設けられていて言語翻訳処理部3によりデコ
ードされる。次は、マクロ展開情報14であり、マクロ展
開のときには、マクロ展開される各ステートメントに対
してその行の行属性情報10のマクロ展開14にマクロ展開
のための情報が記憶される。また、プログラムの行番号
の1行に複数のステートメントがあるときに、そのステ
ートメントを1つ1つの文として認識するための番号と
して先頭ステートメントのソースプログラム上における
文番号が記憶される。なお、この欄は、2バイト設けら
れていて言語翻訳処理部3によりデコードされる。そし
て、最後の欄には、パッチ枝番情報15が2バイト設けら
れている。
パッチ枝番情報15は、この発明において特に追加され
た欄であり、パッチ追加される修正ステートメントに対
して付加する番号情報であって、言語翻訳処理部3の内
部に設けられたパッチ修正部9により修正が加えられる
ごとに各行対応で枝番が更新されて採られ、ここにその
枝番号が記憶される。この枝番に従って言語翻訳処理部
3が順次修正文を抽出して修正されたステートメントに
対して同じ行番号の命令として処理し、機械語コードを
生成してオブジェクトファイル5に加えていく。
なお、ステートメントの削除やソースプログラムの行
番号の命令文全体の削除については、単に、その部分の
削除処理をするのでリストファイル4上における対応す
る部分を削除するだけで対応でき、コンパイル上におけ
る挿入の場合のパッチのような問題はない。また、以上
のようなフォーマットでは、ソースプログラムにおける
実行文の先頭についての行番号は、行番号13により示さ
れていてパッチの処理とは無関係であるので、パッチに
よるソースプログラムの行番号のずれは生じない。した
がって、ソースプログラム全体に対する影響はない。
次に、パスカル準拠のプログラムという高級言語で記
述されたソースプログラムについて第3図に従ってステ
ートメントのパッチについて説明する。なお、カーソル
7bが第3図に示すステートメント6の位置にあるとす
る。そして、このステートメント6に対してパッチが行
われるとする。
スクリーンエディタ部8は、このときカーソル7bの位
置からリストファイル4の各行の行属性情報10を参照す
る。これにより、このときの命令文全体の実行の先頭位
置は、1つ手前の行の先頭位置Aにあることが行識別子
11をデコードすることで分かるので、Aの位置から実行
文の終わりを示す「;」をリストファイル4上で探す。
これにより複数の行に亙るステートメントの終わりのD
の位置が分かる。Dの位置と現在カーソル7bがある位置
とを比較すると、Dまでのステートメントには含まれて
いないことが分かる。その次のBの位置からステートメ
ントの終了位置を「;」により検索する。ここで、Cの
位置が分かる。このCの位置と現在カーソル7bがある位
置とを比較するとこのステートメント6の中にカーソル
7bがあることが分かる。したがって、BからCまでの間
にあるステートメントが修正されることになる。
そこで、スクリーンエディタ部8は、このBからCま
でのステートメント6について抽出して、これに対して
入力された修正文を置き換えていく。こうして修正され
たステートメントが出来上がると、次に、パッチ修正部
9により、抽出されたステートメントの位置にジャンプ
情報が書込まれる。そのジャンプ先に修正したステート
メントが書込まれ、その行属性情報10のパッチ番号情報
15の欄に枝番1が採られ、リターン情報が加えられる。
このときの修正ステートメントがリストファイル4の1
行ではなく、次の行にまたがるときには、この行属性情
報10と次の行属性情報10の行識別子が、例えば、実行文
の続きの識別情報とされて後はパッチ枝番も同じで同じ
内容の行属性情報10となる。
以上説明してきたが、この例では、パスカル準拠のプ
ログラムの場合を説明しているが、他の高級言語につい
ても同様であることはもちろんである。
[発明の効果] 以上の説明から理解できるように、この発明にあって
は、ソースプログラムから生成したスクリーンエディト
対象となるリストファイルのプログラムの各行に対応し
てリスト先頭部に行属性情報を配置したリストを生成
し、各行属性情報にパッチ枝番号情報を記憶できるよう
にすることで、言語翻訳の際に同じ行番号についてはパ
ッチ枝番順にコンパイルすることがきるので、ステート
メント対応に修正分をパッチ枝番号を採ってリストファ
イルに記憶することによりソースプログラムにおけるパ
ッチをステートメント対応にすることができる。
その結果、複数行に亙るステートメントについては、
ソースプログラムの実行番地の先頭からステートメント
を修正することをしなくても済み、また、1行の複数の
ステートメントがある場合にもステートメント対応で修
正処理ができる。したがって、修正の内部処理が速くな
り、プログラム作成者への応答が早くできる。
【図面の簡単な説明】
第1図(a)は、この発明のデバック方式を適用したデ
バックシステムのリストファイルの情報形態の説明図、
第1図(b)は、その各行の先頭に配置される行属性情
報フォーマットの説明図、第2図は、そのデバックシス
テムの全体的な説明図、第3図は、そのディスプレイの
ステートメントの表示状態とリストファイルの行属性情
報との関係の説明図である。 1……ソースファイル、2……コンピュータ、3……言
語翻訳処理部、4……リストファイル、6……ステート
メント、7……ディスプレイ、7a……画面、7b……カー
ソル、8……スクリーンエディタ機能部、9……パッチ
修正部、10……行属性情報、11……行識別子、12……オ
ンサートファイル番号情報、13……行番号、14……マク
ロ展開情報、15……パッチ枝番情報。

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】スクリーンエディタ部と、パッチ修正部
    と、ソースプログラムからオブジェクトプログラムを生
    成する言語翻訳処理部とを備え、前記スクリーンエディ
    タ部又は前記言語翻訳処理部は前記ソースプログラムの
    各行に対応して行属性情報を付加したスクリーンエディ
    ト対象となるステートメントのリストファイルをソース
    プログラムから生成し、前記言語翻訳処理部はこのリス
    トファイルからオブジェクトプログラムのファイルを生
    成するものであり、前記行属性情報には実行文の先頭
    か、継続文か等のその行の先頭ステートメントについて
    の行属性を識別する識別情報と前記ソースプログラムの
    行番号情報とその行のステートメントの修正を管理する
    ためのパッチ枝番号情報とが設けられ、前記スクリーン
    エディタ部が前記行属性情報に従って表示画面上で指定
    された修正対象のステートメントを検索し、この修正対
    象のステートメントについて前記表示画面の入力に応じ
    た修正を行い、パッチ修正部は、前記スクリーンエディ
    タ部により修正されたステートメントを前記リストファ
    イルの後ろの空きの行に追加してその行の前記行属性情
    報を修正前の前記行属性情報に対応させてかつその枝番
    を前記パッチ枝番号情報に加えた行属性情報を発生させ
    て記憶し、前記言語翻訳処理部は、前記行属性情報と前
    記パッチ枝番号情報とに応じて同じ行番号の前記行属性
    情報についてはパッチ枝番号順に順次言語翻訳して前記
    修正されたステートメントに応じて修正された前記オブ
    ジェクトプログラムのファイルを生成することを特徴と
    するデバック方式。
JP2300300A 1990-11-06 1990-11-06 デバック方式 Expired - Lifetime JP2607975B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2300300A JP2607975B2 (ja) 1990-11-06 1990-11-06 デバック方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2300300A JP2607975B2 (ja) 1990-11-06 1990-11-06 デバック方式

Publications (2)

Publication Number Publication Date
JPH04171543A JPH04171543A (ja) 1992-06-18
JP2607975B2 true JP2607975B2 (ja) 1997-05-07

Family

ID=17883126

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2300300A Expired - Lifetime JP2607975B2 (ja) 1990-11-06 1990-11-06 デバック方式

Country Status (1)

Country Link
JP (1) JP2607975B2 (ja)

Also Published As

Publication number Publication date
JPH04171543A (ja) 1992-06-18

Similar Documents

Publication Publication Date Title
US5313387A (en) Re-execution of edit-compile-run cycles for changed lines of source code, with storage of associated data in buffers
US5182806A (en) Incremental compiler for source-code development system
JP4448881B2 (ja) コンピュータプログラムを発生する方法及びシステム
US5325531A (en) Compiler using clean lines table with entries indicating unchanged text lines for incrementally compiling only changed source text lines
US5201050A (en) Line-skip compiler for source-code development system
JPS61282935A (ja) プログラムにおける属性割当て検査方法及び装置
JP5147240B2 (ja) リバーシブルなデザイン・ツリーの変換のための方法とシステム
US5805893A (en) Assembly language program converter
US5301327A (en) Virtual memory management for source-code development system
Rosen A compiler-building system developed by Brooker and Morris: including a comprehensive discussion of the major features of the system
AU638999B2 (en) Incremental compiler for source-code development system
JP2607975B2 (ja) デバック方式
Mittelbach et al. The docstrip program
JP2607976B2 (ja) デバック方式
Barnard et al. Hierarchic syntax error repair for LR grammars
JP2000207246A (ja) デバッグ支援装置及び方法並びにデバッグ支援用ソフトウェアを記録した記録媒体
JPH05173844A (ja) コーディングミス修正方式
CN116756196B (zh) 一种快速编辑Makefile文件的方法和插件
JP2000207226A (ja) コ―ド最適化装置、言語処理装置及びコ―ド最適化方法
JPS61147336A (ja) ロ−ドモジユ−ルの世代管理方式
Harmer et al. Transformations to Restructure and Re–engineer COBOL Programs
JP2827724B2 (ja) プログラムデバッグ処理方法
JP2000132405A (ja) インライン展開処理装置及び方法
JP2003050706A (ja) プログラム開発支援方法および装置
JPH0358225A (ja) ファイル編集方式