JPH03225532A - デバッガの変数トレースのためのコンパイラのコード生成方式 - Google Patents

デバッガの変数トレースのためのコンパイラのコード生成方式

Info

Publication number
JPH03225532A
JPH03225532A JP2019223A JP1922390A JPH03225532A JP H03225532 A JPH03225532 A JP H03225532A JP 2019223 A JP2019223 A JP 2019223A JP 1922390 A JP1922390 A JP 1922390A JP H03225532 A JPH03225532 A JP H03225532A
Authority
JP
Japan
Prior art keywords
variable
debugger
flag
value
memory
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
JP2019223A
Other languages
English (en)
Inventor
Maaku Fuerudoman
フェルドマン・マーク
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 JP2019223A priority Critical patent/JPH03225532A/ja
Publication of JPH03225532A publication Critical patent/JPH03225532A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

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

Description

【発明の詳細な説明】 〔概    要〕 特別にハードウェアを変更することなく簡単に変数の変
化をトレースするためのコンパイラのコード生成方式に
関し、 特別なハードウェアを使わず、デバッガで変数のトレー
スを簡単に行う方式を提供することを目的とし、 ソースプログラムをオブジェクトコードに変換するコン
パイラにおいて、デバッガが変数のトレースを行うかど
うかのフラグを各変数に付随して挿入するフラグ生成手
段と、前記フラグを変数毎に格納する格納手段と、デバ
ッグのトレースハンドラにおいて、前記各変数に対応す
る前記フラグがセットされている場合には、その変数を
変更する前にその変数の前の値と新しい値とを検査する
検査手段とを有し、前記検査手段によって検査した後に
、プログラムコードに戻し、その後に変数の値をメモリ
上で変更するように構成する。
〔産業上の利用分野〕
本発明は特別にハードウェアを変更することなく簡単に
変数の変化をトレースするためのコンパイラのコード生
成方式に関する。
新しいデバッグシステムを供給するためには、実行の進
行方向に対して、変数のトレース動作が出来ることが重
要となる。また、実行の履歴を選択的にサーチする方式
や、データの入れ換え、あるいは部分的なプログラムの
実行を行うことなども重要となる。このような新しいデ
バッグシステムを構築する場合、もともとのオペレーテ
ィングシステムを大きく変更したり、コストがかかった
りするようでは意味がない。また、最近のシステム、特
にワークステーションではマルチウィンドウやメニュー
を駆動しやすいグラフィカルインターフェースが供給さ
れており、デバッガもこのようなインターフェースに整
合する形のものであるべきである。そして、適当なブレ
イクポイントを設けることによって実行のフローを変更
することが出来、適当なプログラムの領域をトレースす
ることが出来ることが重要となる。
〔従来の技術及び発明が解決しようとする課題〕従来、
変数をトレースする場合には、デバッガのための多種多
様な高水準言語命令文を源資コードに入れるようなコン
パイラが必要であった。
従って、従来方式ではコンパイラが複雑になるという欠
点を有していた。
本発明は特別なハードウェアを使わず、デバッガで変数
のトレースを簡単に行う方式を提供することを目的とす
る。
〔課題を解決するための手段〕
本発明は、ソースプログラムをオブジェクトコードに変
換するコンパイラを前提とする。
まず、デバッガが変数のトレースを行うかどうかのフラ
グを各変数に付随して挿入するフラグ生成手段を有する
次に、フラグを変数毎に格納する格納手段を有する。
更に、デバッグのトレースハンドラにおいて、前記各変
数に対応する前記フラグがセットされている場合には、
その変数を変更する前にその変数の前の値と新しい値と
を検査する検査手段とを有する。
〔作    用〕
コンパイラ、デバッガの為に目的コードにフックという
フラグをいれる。このフックは1個の変数に対して1ワ
ードの余分のメモリを必要とする。
デバッガは変数のトレースを行う時に、この余分メモリ
をフラグとして扱う。トレースを行う場合は、lフラグ
をセットし、行わない場合はOフラグをセットする。
各変数は、メモリに書かれる前に、それに付随したフラ
グが検査される。1フラグであれば、値を書かずにその
変数を検査するために、デバッガ処理が実行され、デバ
ッガから戻ってきてから値が書かれる。0フラグであれ
ば、普通と同じように値が書かれる。
〔実  施  例〕
第1図は、本発明の原理概念図である。
全体はユーザが作成したソースプログラムをコンパイル
されたプログラムにおいて使用される変数のメモリ空間
を示したものである。
第1図において、x、 y、  z等の各変数が、メモ
リのデータ領域に格納されている場合、本発明ではコン
パイラがデバッグの為に目的コード上にトレースするか
否かのフラグを挿入する。このフラグをフックと言い、
そのフックは1個の変数に対して1ワードの余分なメモ
リを必要とする。例えば、Xのフックが0である場合に
は、Xは非トレース変数であることを意味する。同様に
変数YのフックもOであるとするならば、変数Yも非ト
レース変数となる。また、変数Zのフックは1であると
するならば、変数Zはデバッガがトレースベき変数であ
ることを意味する。以下同様である。
第2図は本発明のコンパイラとデバッガの概念図であり
、従来方法との比較を示しである。
第2図において、1は変数のメモリ割り付はルーチンで
ある。従来方式では、プログラム上で使われる各変数の
大きさによるメモリ量をただ割り付けるだけであり、割
り付けられたメモリ空間は、変数のみとなる。ところが
、本発明では、各変数の大きさによるメモリ空間のみな
らず、デバッグ時のトレースすべきかどうかのフラグも
余分メモリとして割り付けるため、割り付けたメモリ空
間は変数用のものに加えてデバッグ用のフラグを格納す
る領域を必要とする。しかしながら、各フラグは1個の
変数に対して1ワードの余分メモリを必要とするだけで
ある。
第2図の2に、変数の値をメモリに書(ライト操作のル
ーチンである。従来方式では、変数の値をただメモリに
書くだけであった。ところが、本発明では変数のトレー
スフラグがセフ)されている場合には、デバッガのトレ
ースフ1ンドラに処理ルーチンが移り、デバッガのトレ
ースハンドラから戻ってきた時点で初めてトレースの変
数の値を書くようにしている。
第3図はデバッガの変更を示すもので、3はデバッガで
トレース出来、変数の登録方式を示すルーチンでる。
本発明では、トレースすべき変数を登録する場合には、
まずその変数のトレースフラグを“1”にセットし、そ
の次に、変数の名前や番地と関係がある情報をトレース
テーブルに保存する。トレーステーブルの各領域は各変
数毎に名前や番地或いはその変数に関する属性が保存さ
れる。
第3図の4は、本発明のデバッガのトレースハンドラの
処理ルーチンである。
第2図の2において、変数のトレースフラグがセットさ
れている場合に、アを介してデバッガのトレースハンド
ラに処理が移ると、まずトレーステーブル上から指定さ
れた変数、すなわちトレースされた変数の名前が現在の
値を引き出し、それをデイスプレィ上に表示する。これ
はまだ、変数の新しい値ではなく、変更前の古い値であ
る。
次に、そのトレースした変数の新しい値を表示する。そ
して、イのルートを介してデバッガハンドラの処理から
、プログラムコードに基づいて、メモリ上に新しい変数
の値を各動作に移行する。このように、本発明では各変
数はメモリに書かれる前に、それに付随したフラグが検
査される。1フラグであれば値を書かずにその変数を検
査するためにデバッガ処理が実行され、デバッガから戻
ってきてから値が書かれる。0フラグであれば、普通と
同じように値が書かれる。
本発明では、各変数のトレースするかどうかのフラグを
メモリ上に付加′するだけであるので、オペレーション
システムの異なる機械でも、デバッガの変数トレースの
ためのコンパイラのコード生成(フラグ生成)を簡単に
行うことができ、すなわちデバッガが変数のトレースを
行うかどうかのフラグをコンパイラがコード生成時に簡
単に付加することができる。
〔発明の効果〕
本本発明によれば、プログラムは遅くなるが、いかなる
機械でも簡単に変数をトレースすることが出来るように
なる。
【図面の簡単な説明】
第1図は、本発明に係るユーザプログラム用メモリのブ
ロック図、 第2図は、コンパイラの変更を示すブロック図、第3図
は、デバッガの変更を示すプロ・ツク図である。 1・・・変数のメモリ割り付はルーチン、2・・・変数
の値をメモリに書くライト操作のルーチン、 変数の登録方式を示すルーチン、 デバッガのトレースハンドラの処理 ルーチン、 Z・・・変数。 Y。 X。

Claims (1)

  1. 【特許請求の範囲】 ソースプログラムをオブジェクトコードに変換するコン
    パイラにおいて、 デバッガが変数のトレースを行うかどうかのフラグを各
    変数に付随して挿入するフラグ生成手段と、 前記フラグを変数毎に格納する格納手段と、デバッグの
    トレースハンドラにおいて、前記各変数に対応する前記
    フラグがセットされている場合には、その変数を変更す
    る前にその変数の前の値と新しい値とを検査する検査手
    段とを有し、前記検査手段によって検査した後に、プロ
    グラムコードに戻し、その後に変数の値をメモリ上で変
    更することを特徴とするデバッガの変数トレースのため
    のコンパイラのコード生成方式。
JP2019223A 1990-01-31 1990-01-31 デバッガの変数トレースのためのコンパイラのコード生成方式 Pending JPH03225532A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019223A JPH03225532A (ja) 1990-01-31 1990-01-31 デバッガの変数トレースのためのコンパイラのコード生成方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019223A JPH03225532A (ja) 1990-01-31 1990-01-31 デバッガの変数トレースのためのコンパイラのコード生成方式

Publications (1)

Publication Number Publication Date
JPH03225532A true JPH03225532A (ja) 1991-10-04

Family

ID=11993372

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019223A Pending JPH03225532A (ja) 1990-01-31 1990-01-31 デバッガの変数トレースのためのコンパイラのコード生成方式

Country Status (1)

Country Link
JP (1) JPH03225532A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08314765A (ja) * 1995-05-15 1996-11-29 Nec Corp デバッグ情報収集方式
JP2011216056A (ja) * 2010-04-02 2011-10-27 Mitsubishi Electric Corp プログラマブルコントローラ及びその周辺装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08314765A (ja) * 1995-05-15 1996-11-29 Nec Corp デバッグ情報収集方式
JP2011216056A (ja) * 2010-04-02 2011-10-27 Mitsubishi Electric Corp プログラマブルコントローラ及びその周辺装置

Similar Documents

Publication Publication Date Title
CN101446918B (zh) 一种实现用户态调试器调试单个函数的方法及系统
US5170465A (en) Incremental-scanning compiler for source-code development system
US6550056B1 (en) Source level debugger for debugging source programs
US5038348A (en) Apparatus for debugging a data flow program
US7150006B2 (en) Techniques for managed code debugging
US7530056B1 (en) Method and system for detecting runtime defects in a program by comparing correct and incorrect runs
US20080127113A1 (en) Method and system for implementing watchpoints
US8370807B2 (en) Debugging for runtime type systems
US10209984B2 (en) Identifying a defect density
US7836435B2 (en) Checking for memory access collisions in a multi-processor architecture
JPH03188535A (ja) プログラム・エラー検出方法
EP0406028A2 (en) Incremental compiler for source code development system
US20160232047A1 (en) Detecting uninitialized memory references
US20020129336A1 (en) Automatic symbol table selection in a multi-cell environment
JPH03225532A (ja) デバッガの変数トレースのためのコンパイラのコード生成方式
US20180267882A1 (en) Enabling breakpoints on entire data structures
US20160232074A1 (en) Detecting uninitialized memory references
JP3745968B2 (ja) 試験システム及び試験方法及び試験プログラム及び試験プログラムを記録した計算機で読み取り可能な記録媒体
JP2002014847A (ja) プログラム検査装置、プログラム検査方法及び検査を行うためのプログラムを格納した記録媒体
JPS60262251A (ja) マイクロプロセツサ開発支援装置
JPH0231244A (ja) プログラム検査履歴管理方式
JPH05108404A (ja) デバツガシステム
JPS6170644A (ja) プログラムデバク方式
JP2910548B2 (ja) データチェック装置
CN117149485A (zh) 基于应用异常的软件工具包地址定位方法及系统