JPH0318940A - プログラムデバッグ方式 - Google Patents

プログラムデバッグ方式

Info

Publication number
JPH0318940A
JPH0318940A JP1152737A JP15273789A JPH0318940A JP H0318940 A JPH0318940 A JP H0318940A JP 1152737 A JP1152737 A JP 1152737A JP 15273789 A JP15273789 A JP 15273789A JP H0318940 A JPH0318940 A JP H0318940A
Authority
JP
Japan
Prior art keywords
source
debugging
information
compiler
sequence number
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
JP1152737A
Other languages
English (en)
Inventor
Hiroyuki Suzuki
啓之 鈴木
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP1152737A priority Critical patent/JPH0318940A/ja
Publication of JPH0318940A publication Critical patent/JPH0318940A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 (産業上の利用分野〕 本発明はソフトウェア開発において、出荷オブジェクト
と等しいオブジェクトで、ソースリスト上での情報に基
づいてデバッグするプログラムデバッグ方式に関する。
〔従来の技術〕
一般にソフトウェア開発は高水準言語により行われる。
従来、このようなソフトウェア開発に伴なうプログラム
デバッグを効率よく行う方式としては、例えば特開昭6
3−178341号公報に記載のように、ソフトウェア
割込みを発生するルーチンをソースリストに挿入する方
式、あるいは、特開昭63−184846号公報に記載
のように、シンボリックデバッグのための記号表ファイ
ルを入力又は同等の情報をコンパイラリストから得る方
式などがある。
〔発明が解決しようとする課題〕
上記従来技術は、コンパイラによって最適化されたオブ
ジェクトと等しいオブジェクトでデバッグするという点
について配慮されておらず、デバッグ用にデバッグルー
チンをオブジェクトに挿入する方式では、ソースコード
の増加に伴い、オブジェクトも増加し、出荷オブジェク
トとは異なるオブジェクトでのデバッグとなってしまい
、また、シンボリックデパックのための記号衣ファイル
を用いる方式では、コンパイラの最適化によりシンボル
情報のオブジェクトアドレス情報が不正となり、最適化
が実施された出荷オブジェクトと等しいオブジェクトで
デバッグできない問題がある。
本発明の目的は、出荷オブジェクトと等しいオブジェク
トでデバッグ可能とするプログラムデバッグ方式を提供
することにある。
〔課題を解決するための手段〕
上記目的を達成するために、本発明では、ソフトウェア
割込みを発生するコードを、出荷オブジェクトと等しい
オブジェクトにオブジェクト実行時に挿入する。
ここで、当該ソフトウェア割込み発生コードを埋め込む
ソースリストに対応したオブジェクト位置情報を得るた
め、言語プロセサが、オブジェクトと共に、ソースシー
ケンス番号とオブジェクトアドレス対応情報を出力する
ようにする。また、ソースリストに対応した名標のオブ
ジェクト位置を得るため、言語プロセサがソース名標と
オブジェクトアドレス対応情報を出力するようにする。
さらに、コンパイラの最適化により、ソースとオブジェ
クトとの対応が変わるため、上記ソースシーケンス番号
とオブジェクトアドレス対応情報、及びソース名標とア
ドレス対応情報を補正するコンパイラ最適化情報を言語
プロセサが出力するようにする。
〔作 用〕
デバッガは、出荷オブジェクトと等しいオブジェクト、
すなわち、コンパイラやアセンブラなどの言語プロセサ
により翻訳されたオブジェクトに、デバッギング時にソ
ースシーケンス番号とオブジェクトアドレスとの対応情
報に基づき、ソースリスト上のシーケンス番号等の位置
情報に対応するオブジェクト位置にソフトウェア割込み
を発生するコードを埋め込み、当該埋め込みコード位置
のオブジェクトは退避しておく、これによって、ソース
リスト上の文番号やソースシーケンス番号等の位置情報
での一時停止を可能とする。
また、停止位置での変数値の表示、設定は、ソース名標
とオブジェクトアドレス対応情報に基づき、ソース名標
に対応するオブジェクト上での変数アドレスを得ること
により可能となる。
さらに、コンパイラ又はプリコンパイラ等の最適化によ
りソース上で示された制御の一部が削除、移動されたと
いう情報、主記憶上に変数の値が反映されていないとい
う情報等をコンパイラ最適化情報から得ることにより、
最適化後のオブジェクトでのデバッグを可能とする。
〔実施例〕
以下、本発明の一実施例について図面により説明する。
第1図は本発明のプログラムデバッグ方式の一実施例の
構成図を示す、ソーステキスト1は、コンパイラ2又は
アセンブラ3又はプリコンパイラ4及びアセンブラ5な
どの言語プロセサによってコンパイル、アセンブルされ
、オブジェクト6及びコンパイラ/アラングラ出力情報
7を出力する。
デバッガ9はオブジェクト6の中のデバッグ対象オブジ
ェクト8をローディングし、コンパイラ/アセンブラ出
力情報7に基づき、ソフトウェア割込みコードをデバッ
グ対象オブジェクト8に埋め込むことによりデバッグ作
業を開始する。また、ユーザが文番号やソースシーケン
ス番号等で指定した一時停止位置すなわち中断点でソフ
トウェア割込みが生じた時、デバッガ9はコンパイラ/
アセンブラ出力情報7に基づいて、ソースリスト上での
名標を指定することによる変数値の設定、表示機能をユ
ーザに提供する。ユーザはデバッグ作業の終了時、オブ
ジェクト6を出荷する。
第2図はコンパイラ/アセンブラ出力情報7の一例を示
す、コンパイラ/アセンブラ出力情報7は、ソースシー
ケンス番号とオブジェクトアドレス対応情報71、ソー
ス名標とオブジェクトアドレス対応情報72.コンパイ
ラ最適化情報73から構成される。ソースシーケンス番
号とオブジェクトアドレス対応情報71は、ソーステキ
スト文番号711とソースプログラムシーケンス番号で
あるソースシーケンス番号712とオブジェクトアドレ
ス713との対応情報である6ソ一ス名標とオブジェク
トアドレス対応情報72は、ソース名標721と名標属
性722とオブジェクトアドレス723との対応情報で
ある。コンパイラ最適化情報73は、最適化ソースシー
ケンス番号731と最適化名標732と値格納レジスタ
733との対応情報である。ここで、値格納レジスタは
CPUの汎用レジスタを示している。
第3図はデバッガ9でのデバッキング処理フローの一例
を示したものである。
ステップ900: デバッグ対象オブジェクト8をオブジェクト6よりロー
ディングする。
ステップ901: ユーザはデバッガ9に対し、ソースシーケンス番号で中
断点を指定する。この時、ユーザは文番号で中断点を指
定しても良い。
ステップ902; デバッガ9は、ユーザが指定したソースシーケンス番号
と言語プロセサから出力されるコンパイラ/アセンブラ
出力情報におけるオブジェクトアドレス対応情報71の
ソースシーケンス番号712とオブジェクトアドレス7
13との対応により、中断点のオブジェクトアドレスを
求め。この時、文番号が指定されていれば、ソーステキ
スト文番号711とオブジェクトアドレス713との対
応により、同様に中断点のオブジェクトアドレスを求め
る。
ステップ903: デバッグ対象オブジェクト8中のステップ902で求め
たオブジェクトアドレスにソフトウェア割込み発生コー
ドを埋め込む。
ステップ904: デバッグ対象オブジェクト8を実行する。
ステップ905: デバッグ対象オブジェクト8のプログラム実行が終了す
る場合、デバッギング処理を終了する。
ステップ906: ステップ905でプログラム実行が終了しない場合、す
なわちソフトウェア割込みが発生した場合はステップ9
07に移る。
ステップ907: デバッガ9はデバッグ対象プログラム8の実行を中断し
、中断位置をデイスプレィに表示する。
ステップ908: ユーザはデバッガ9に対し、ソース名標により変数値の
表示、設定を指定する。
ステップ909: 最適化によって、実際の変数値が汎用レジスタ上にあり
、ソース名標で示された領域には実際の値が反映されて
いないということが起こる。ソース名標が最適化されて
いないソース名標である場合はステップ910に、ソー
ス名標が最適化されている場合はステップ911に進む
、最適化の有無は、コンパイラ最適化情報73における
最適化ソースシーケンス番号731に対する最適化名標
732の有無で判定する。すなわち、第2図の例におい
ては、中断点がシーケンス番号00001000である
場合、ソース名標VAR1及びVAR3は最適化されて
おり、VAR2は最適化されていないと判定する。また
、中断点がシーケンス番号00001200である場合
、ソース名標■ARI及びVAR3は最適化されておら
ず、VAR2は最適化されていると判定する。
ステップ910: ソース名標とオブジェクトアドレス対応情報72のソー
ス名標721とオブジェクトアドレス対応情報723と
から指定されたソース名標のオブジェクトアドレスを求
める。
ステップ911: コンパイラ最適化情報73の最適化名標732と値格納
レジスタ733との対応により、ユーザの指定した名標
情報が格納されている汎用レジスタを知る。
ステップ912: ステップ910で求めたオブジェクトアドレス、又はス
テップ911で求めた汎用レジスタについて、名標属性
722に従った内容の表示、設定を行う。
ステップ913: ユーザの判断により、ソース名標の新たな表示・設定を
続けるか、デバッグ対象プログラムを再実行するかを判
定する。
ステップ914ニ ステップ907〜ステツプ913の一連の中断点の処理
が終了した場合、デバッグ9はデバッグ対象プログラム
のオブジェクトを再実行する。
次に、第2図に示すコンパイラ/アセンブラ出力情報に
基づいて具体的処理例を説明する。
ステップ901でユーザがソースシーケンス番号000
01000に中断点を指定した場合、デバッガ9は、デ
バッグ対象オブジェクトの相対オブジェクトアドレスO
AOにソフトウェア割込み発生コードを埋め込む、また
、文番号12に中断点を指定した場合、相対オブジェク
トアドレス0BOにラフ1−ウエフ割込み発生コードを
埋め込む。
その後、ステップ906でのソフトウェア割込みが相対
オブジェクトアドレスOAOで発生した場合、デバッガ
9はソーステキスト番号10、ソースシーケンス番号0
000100での中断であると判定し、中断点位置をデ
イスプレィに表示する。
中断点がソースシーケンス番号00001000であり
、ステップ908において、ユーザがソース名標VAR
1の表示を指定した場合、デバッガ9では最適化されて
いると判定し、汎用レジスタR1の内容を名標属性FI
XEDで表示する。
また、中断点がソースシーケンス番号ooooi000
であり、ステップ908において、ユーザがソース名標
VAR2の表示を指定した場合、デバッガ9では最適化
されていないと判定し、デバッグ対象オブジェクト8の
相対オブジェクトアドレス79Fの内容を名標属性BI
Nで表示する。
本実施例によれば、最適化されたオブジェクトを用いた
デバッギングにおいても、中断点を文番号又はシーケン
ス番号で指定でき、ソース名標で変数を指定することに
より、中断点におけるソーステキスト上での変数の論理
的値をソースプログラムで宣言した属性によって表示す
ることができる。
〔発明の効果〕
以上の説明から明らかな如く、本発明によれば、次のよ
うな効果がある。
(1)出荷オブジェクトでデバッグできるため、デバッ
グ完了後に出荷用オブジェクト生成のための再コンパイ
ル作業を省くことができ、作業効率の向上が図れる。
(2)出荷オブジェクトと等しいオブジェクトサイズで
デバッグできるため、汎用レジスタをペースレジスタと
する方式のコンピュータ用プログラムにおいても、デバ
ッグのためにオブジェクトサイズが増加し、新たなペー
スレジスタが必要となることを防げる。これによって、
汎用レジスタの用途をあらかじめすべて決めている大規
模O8、大規模データベースシステム、大規模通信シス
テム等用のプログラムデバッグ方式にも適用できる。
(3)出荷オブジェクトと等しいオブジェクトでデバッ
グするため、オブジェクトの相違による出荷後の稼動時
における動作とデバッグ時の動作の違いがなくなり、デ
バッグによるプログラムの信頼性確認の精度が向上する
【図面の簡単な説明】
第1図は本発明のプログラムデバッグ方式の一実施例を
示すシステム構成図、第2図は第1図で使用されるコン
パイラ/アセンブラ出力情報の一例を示す図、第3図は
本発明によるデバッギング処理フローの一例を示す図で
ある。 1・・・ソーステキスト、  2・・・コンパイラ、3
・・・アセンブラ、 4・・・プリコンパイラ、5・・
・アセンブラ、 6・・・オブジェクト、7・・・コン
パイラ/アセンブラ出力情報、8・・・デバッグ対象オ
ブジェクト、 9・・・デバッガ、 71・・・ソースシーケンス番号とオブジェクト対応情
報、 72・・・ソース名標とオブジェクトアドレス対応情報
、 73・・・コンパイラ最適化情報。 第1 図 第3図

Claims (1)

    【特許請求の範囲】
  1. (1)言語プロセサとデバッガを備え、高水準言語で記
    述されたソースプログラムを言語プロセサで翻訳した時
    に出力されるソースリストを基に、デバッガにより該翻
    訳された当該プログラムをデバッグする方式において、 前記言語プロセサは、翻訳されたオブジェクト及び少な
    くともソースシーケンス番号とオブジェクトアドレス対
    応情報、ソース名標とオブジェクトアドレス対応情報、
    コンパイラ最適化情報からなるコンパイラ/アセンブラ
    出力情報を出力し、 前記デバッガは、前記翻訳されたオブジェクト中のデバ
    ッグ対象オブジェクトを実行して、前記コンパイラ/ア
    センブラ出力情報に基づき、ソースリスト上の位置情報
    での一時停止及び停止位置での変数値の表示、設定をし
    、デバッグすることを特徴とするプログラムデバッグ方
    式。
JP1152737A 1989-06-15 1989-06-15 プログラムデバッグ方式 Pending JPH0318940A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP1152737A JPH0318940A (ja) 1989-06-15 1989-06-15 プログラムデバッグ方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1152737A JPH0318940A (ja) 1989-06-15 1989-06-15 プログラムデバッグ方式

Publications (1)

Publication Number Publication Date
JPH0318940A true JPH0318940A (ja) 1991-01-28

Family

ID=15547059

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1152737A Pending JPH0318940A (ja) 1989-06-15 1989-06-15 プログラムデバッグ方式

Country Status (1)

Country Link
JP (1) JPH0318940A (ja)

Similar Documents

Publication Publication Date Title
US8266608B2 (en) Post-compile instrumentation of object code for generating execution trace data
US9152531B2 (en) Post-compile instrumentation of object code for generating execution trace data
EP0307075B1 (en) Method and apparatus for measuring program execution
US6067641A (en) Demand-based generation of symbolic information
US7478366B2 (en) Debugger and method for debugging computer programs across multiple programming languages
US20080127113A1 (en) Method and system for implementing watchpoints
US7178135B2 (en) Scope-based breakpoint selection and operation
US8448152B2 (en) High-level language, architecture-independent probe program compiler
US20030097613A1 (en) Software debugger, system-level debugger, debugging method, and debugging program
US6330691B1 (en) Use of dynamic translation to provide breakpoints in non-writeable object code
JPH03188535A (ja) プログラム・エラー検出方法
US7257805B2 (en) Restoring debugging breakpoints subsequent to program code modifications
JPH0766342B2 (ja) プログラムテスト装置
JPH0318940A (ja) プログラムデバッグ方式
JP2007004516A (ja) 組込みシステムのプログラムデバッグ方法
JP2672968B2 (ja) デバッグ用ソースリスト出力処理方式
JP2006350676A (ja) 組込みシステムのプログラムデバッグ方法
JPS61180342A (ja) 高級言語のステツプ実行方式
JPH05108404A (ja) デバツガシステム
JP2659366B2 (ja) デバッグ方法及びその装置
JPS63178341A (ja) プログラムデバツグ方式
KR0175469B1 (ko) 칠프로그램 변수의 가시성 제어방법
JPH0465729A (ja) シンボリック・デバッガ
Bielak ADA (*) vs. Modula-2: a view from the trenches
JPH04358232A (ja) 情報処理装置の機能試験方法