JP3165105B2 - プログラムのトレーサ、コンパイラ及びリンカー - Google Patents

プログラムのトレーサ、コンパイラ及びリンカー

Info

Publication number
JP3165105B2
JP3165105B2 JP11691198A JP11691198A JP3165105B2 JP 3165105 B2 JP3165105 B2 JP 3165105B2 JP 11691198 A JP11691198 A JP 11691198A JP 11691198 A JP11691198 A JP 11691198A JP 3165105 B2 JP3165105 B2 JP 3165105B2
Authority
JP
Japan
Prior art keywords
program
address
storage unit
function
stored
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 - Fee Related
Application number
JP11691198A
Other languages
English (en)
Other versions
JPH11306045A (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 JP11691198A priority Critical patent/JP3165105B2/ja
Publication of JPH11306045A publication Critical patent/JPH11306045A/ja
Application granted granted Critical
Publication of JP3165105B2 publication Critical patent/JP3165105B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プログラムのアド
レス参照軌跡をトレースしてプログラムの動作を解析す
るプログラムのトレーサに関し、特に前記の参照アドレ
スを、プログラムの中で参照される関数ルーティンの入
口及び出口のアドレス情報に限定してトレースするプロ
グラムのトレーサ、及び、その参照アドレスを前記プロ
グラムのソースプログラムをコンパイルするときに、ト
レース・アドレス情報テーブルとして予め生成し、前記
プログラムに付加しておくようにしたコンパイラ及び前
記プログラムをロード・モジュールにリンクするリンカ
ーに関する。
【0002】
【従来の技術】従来のこの種のプログラムの動作を解析
するためのものとしては、例えば特開平3−10339
号公報にあるように、「関数情報を基にブレークポイン
ト管理テーブルを作成し」て、関数ステップ機能を実現
するインサーキットエミュレータでは、関数の「戻り番
地にブレークポイントをセット」するようにしてプログ
ラムのデバッグをするようにしたものや、特開昭59−
184955号公報にあるように、「リターン命令を検
出する手段」を設けて、リターン命令が実行された時点
でプログラムを一旦停止するようにしてプログラムをデ
バッグするようにしたもの、あるいは、特開平6−10
3109号公報にあるように、「サブルーチンからの戻
り先番地を」、「リターンアドレスレジスタ(RAH)
に取得し」、「命令ポインタ(IP)」の「戻り先番地
と比較回路で比較し」、「ブレークを発生する」ように
したデバッグ装置、また、特開平5−173834号公
報にあるように、「直前にプログラム・フェッチされた
アドレスの関数のアドレス領域がいま読み込まれたデー
タのアドレスと異なっているかを判定」して、「異なっ
ていればリターンと判断する」ようにした「関数コール
およびリターンの検出方式」などによるプログラムの動
作解析手段があった。
【0003】
【発明が解決しようとする課題】これらの従来のプログ
ラムの動作解析手段においては、いずれも、動作解析の
対象プログラムの実行を一旦停止するようにしていたの
で、プログラム全体の動作を解析するためには、相当の
回数だけプログラムの実行が一旦停止することになり、
リアルタイムでのプログラムの動作解析ができにくいと
いう欠点があった。また、従来のプログラムの動作解析
手段では、いずれも関数ルーティンの戻り先アドレスを
ブレークポイントとしているので、関数ルーティン中で
分岐条件により関数処理の内容が変わるような場合に
は、どの分岐条件の関数処理が実行されたのかを簡単に
判別することができないという欠点があった。さらに、
関数ルーティン中で同じ関数ルーティンを再帰的にコー
ルする様な場合には、トレース処理が煩雑になるという
欠点があった。
【0004】
【課題を解決するための手段】前記の課題を解決するた
め本発明のプログラムのトレーサ装置(以下、トレーサ
と略称する)は、プログラムのアドレス参照軌跡を第1
の記憶部に記録して前記プログラムの動作を解析する
きに、予め所要のアドレス情報を第2の記憶部に格納し
ておき、この第2の記憶部に格納したアドレスに限って
のみアドレス参照軌跡を前記第1の記憶部に記録するよ
うにしたプログラムのトレーサ装置であって、前記第2
の記憶部に格納するアドレス情報、前記プログラムの
中で参照される関数ルーティンのエントリ・アドレス・
データ及び前記関数ルーティン中のリターン命令の格納
アドレス・データとするようにしたことを特徴とする。
【0005】
【0006】また、当該プログラムのソースプログラム
をコンパイル及びリンクする装置において、前記のプロ
グラムのトレーサの第2の記憶部に格納するアドレス情
報を、トレース・アドレス情報テーブルとして生成し、
前記の当該プログラムに付加するようにしたコンパイラ
及びリンカー、前記トレース・アドレス情報テーブル
のアドレス情報、前記の当該プログラムの中で参照さ
れる関数ルーティンのエントリ・アドレス・データ及び
前記関数ルーティン中のリターン命令の格納アドレス・
データとするようにしたことを特徴とするコンパイラ及
びリンカーの処理方法とした。
【0007】
【0008】
【0009】また、前記のコンパイラ及びリンカーによ
り作成されたプログラムをトレースするとき、前記トレ
ース・アドレス情報テーブルのアドレス情報を前記第2
の記憶部に格納して、前記プログラムをトレースするよ
うにした。
【0010】また、前記のプログラムのトレーサの処理
手順を記録媒体に記録して、情報処理装置で利用できる
ようにした。
【0011】また、前記のコンパイラ及びリンカーの処
理手順を記録媒体に記録して、情報処理装置で利用でき
るようにした。
【0012】
【発明の実施の形態】本発明の実施の形態について、以
下に図面を参照して説明する。
【0013】図3は、本発明のプログラムのトレーサ
置(以下トレーサと略称する)によるトレース処理動
作、及び、コンパイラ及びリンカーを含めた全体の処理
の流れを示した図である。図3において、ソースファイ
ル群100には、C言語やアセンブラ言語で記述された
複数の関数ルーティンを含んでいる。コンパイラ12は
このソースファイル群を読み込んで、オブジェクトコー
ドを生成し、関数ルーティンのエントリとその関数ルー
ティン中のリターン命令の箇所を抽出し、オブジェクト
・ファイル群120を出力する。リンカー31は、コン
パイラ12によって出力されたオブジェクト・ファイル
群120を読み込んで、実行形式プログラム・ファイル
310を出力する。このとき、この実行形式プログラム
・ファイルには、関数エントリのアドレス情報を格納し
た関数エントリ・アドレス・テーブル、および、関数ル
ーティン中のリターン命令の格納アドレス情報を格納し
た関数リターン・アドレス・テーブルを付加する。トレ
ーサ32は、この実行形式プログラム・ファイル310
を読み込み、前記の関数エントリ・アドレス・テーブル
及び関数リターン・アドレス・テーブルから読み込んだ
トレース・アドレス情報に限定して、プログラム実行時
のアドレス参照軌跡及び参照時刻などを記録するように
して、トレース・ファイル320を生成するように動作
する。このようにして得られたトレース・ファイルか
ら、プログラム動作の解析33を行うようにしている。
【0014】図1は、本発明の第1の実施の形態のコン
パイラ12の構成を示す図である。また、図4はその処
理内容を示す図である。図1及び図4に示すように、コ
ンパイラ12は、ソースファイル11を読み込み(処理
41)、関数リターン・アドレス・テーブルを作成する
かしないか選択するオプション指定を確認するオプショ
ン判定部13と、ソース・ファイルの関数エントリの箇
所を抽出し関数エントリ・アドレス・テーブルを生成す
る関数エントリ抽出部14(処理43及び処理44)
と、前記のオプション判定部の判定に従って、オプショ
ン指定が有効なときには、ソース・ファイルの関数リタ
ーン命令の箇所を抽出し関数リターン・アドレス・テー
ブルを生成し(処理45及び処理46)、オプション指
定が無効のときにはこの処理をしないようにする関数リ
ターン抽出部15と、オブジェクト・コードを生成し、
このオブジェクト・コードに前記関数エントリ・アドレ
ス・テーブル及び関数リターン・アドレス・テーブルを
付加したオブジェクト・ファイル17を出力するコード
生成部16(処理47)から構成される。
【0015】図2は、前記のコンパイラにより出力され
るオブジェクト・ファイルの構成を示した図で、ファイ
ルヘッダ部21と、プログラム本体のオブジェクト・コ
ード部22と、関数エントリ・アドレス・テーブル部2
3と、関数リターン・アドレス・テーブル部24及びそ
の他の情報部25から構成されている。
【0016】図5は、本発明の第2の実施の形態のプロ
グラムのトレーサの動作の流れを示した図である。トレ
ーサはまず前述したコンパイラ及びリンカーにより作成
された実行形式プログラム・ファイルを読み込み(処理
51)、関数エントリ・アドレス・テーブル及び関数リ
ーターン・アドレス・テーブルからプログラム実行時の
アドレス参照軌跡のトレース条件を設定する(処理5
2、処理53)。その後、プログラムを実行し(処理5
4、処理55)、実行履歴情報を前記のトレース条件に
従って収集し、トレース・ファイルに記録する(処理5
6、処理57)。
【0017】図6及び図7は、本発明のコンパイラによ
り処理される具体的なソース・ファイルの例と、そのソ
ース・ファイルから作成されるオブジェクト・ファイル
の構成の具体例を示した図である。
【0018】図6に示すように、このソース・ファイル
は、sample.cと、subfile1.c及びs
ubfile2.cの3つの部分から構成されており、
これらをコンパイル及びリンクすることで、実行形式の
オブジェクト・ファイルsample.exeが生成さ
れる。
【0019】図6を参照すると、sample.cは2
つの関数mainとfunc1を有し、subfile
1.cは2つの関数func2及びfunc2_1を有
し、subfile2.cは2つの関数func3及び
func3_1を有している。ここで、func2に
は、2箇所にリターン命令があり、func3には3カ
所にリターン命令がある。
【0020】本発明の第1の実施の形態のコンパイラ
は、これらのソース・ファイルを読み込んで、コンパイ
ル処理して、sample.o、subfile1.o
及びsubfile2.oを生成し、リンカーによりこ
れらのファイルをリンク処理して、実行形式のオブジェ
クト・ファイルsample.exeを生成する。この
とき生成されるオブジェクト・ファイルsanple.
exeは、図7に示すように、プログラム・コード部に
加えて、関数エントリ・アドレス・テーブル部、関数リ
ターン・アドレス・テーブル部、及びその他の情報部か
ら構成するようにしている。
【0021】また、図8は本発明の第3の実施の形態の
オブジェクト・ファイルの構成を示す図で、プログラム
中に、関数ルーティンと割り込み処理ルーティンが混在
しているような場合には、関数ルーティン中のリターン
命令の格納アドレス情報と、割り込み処理ルーティン中
のリターン命令の格納アドレス情報とを、別個の関数
ターン・アドレス・テーブル部として作成するようにし
ており、関数リターンと割り込みリターンとを区別する
ことも容易に可能になる。
【0022】
【発明の効果】以上のように、本発明のプログラムのト
レーサ、コンパイラ及びリンカーは、プログラム中で参
照される関数ルーティンのエントリ・アドレス及び関数
ルーティン中のリターン命令の格納アドレスをトレース
・アドレスとして限定してトレースでき、また、プログ
ラムの実行を停止することなくトレースできるという効
果がある。
【0023】さらに、関数ルーティン実行中において、
分岐条件により関数処理の内容が異なる場合にも、どの
分岐条件の関数処理が実行されたのかを確実にトレース
できるという効果がある。
【0024】更に、関数ルーティンからのリターンと割
り込み処理ルーティンからのリターンを容易に区別でき
るという効果もある。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態のコンパイラの構成
を示す図。
【図2】本発明のコンパイラにより生成されるオブジェ
クト・ファイルの構成を示す図。
【図3】本発明のプログラムのトレーサ、コンパイラ及
びリンカーの全体の処理手順を示す図。
【図4】本発明の第1の実施の形態のコンパイラの処理
内容を示す図。
【図5】本発明の第2の実施の形態のトレーサの動作の
流れを示す図。
【図6】本発明の第1の実施の形態のコンパイラの入力
である、ソース・ファイルの具体例を示す図。
【図7】本発明の第1の実施の形態のコンパイラの出力
である、オブジェクト・ファイルの構成の具体例を示す
図。
【図8】本発明の第3の実施の形態のオブジェクト・フ
ァイルの構成を示す図。
【符号の説明】
11 ソース・ファイル 12 コンパイラ 13 オプション判定部 14 関数エントリ抽出部 15 関数リターン抽出部 16 コード生成部 17 オブジェクト・ファイル 21 ファイルヘッダ部 22 プログラム・コード部 23 関数エントリ・アドレス・テーブル部 24 関数リターン・アドレス・テーブル部 25 その他の情報部 31 リンカー 32 トレーサ 33 プログラム動作の解析部 41〜47 コンパイラの処理ステップ 51〜57 トレーサの処理ステップ
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 昭62−70945(JP,A) 特開 平4−30235(JP,A) 特開 平10−3411(JP,A) 特開 平8−161195(JP,A) 特開 平2−64748(JP,A) 特開 平2−310737(JP,A) 特開 平2−83749(JP,A) 特開 平3−10339(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 11/28

Claims (5)

    (57)【特許請求の範囲】
  1. 【請求項1】 プログラムのアドレス参照軌跡を第1の
    記憶部に記録して前記プログラムの動作を解析するトレ
    ーサ装置が、予め所要のアドレス情報を第2の記憶部に
    格納しておき、この第2の記憶部に格納したアドレスに
    限ってのみアドレス参照軌跡を前記第1の記憶部に記録
    するようにしたプログラムのトレーサ装置であって、前
    記第2の記憶部に格納するアドレス情報、前記プログ
    ラムの中で参照される関数ルーティンのエントリ・アド
    レス・データ及び前記関数ルーティン中のリターン命令
    の格納アドレス・データとするようにしたことを特徴と
    するプログラムのトレーサ装置
  2. 【請求項2】 当該プログラムのソースプログラムをコ
    ンパイル及びリンクする装置において、請求項1記載の
    プログラムのトレーサ装置の第2の記憶部に格納するア
    ドレス情報を、トレース・アドレス情報テーブルとして
    生成し、前記の当該プログラムに付加するようにしたコ
    ンパイラ及びリンカー、前記トレース・アドレス情報
    テーブルのアドレス情報、前記の当該プログラムの中
    で参照される関数ルーティンのエントリ・アドレス・デ
    ータ及び前記関数ルーティン中のリターン命令の格納ア
    ドレス・データとするようにしたことを特徴とするコン
    パイラ及びリンカーの処理方法
  3. 【請求項3】 請求項2記載のコンパイラ及びリンカー
    の処理方法により作成されたプログラムをトレースする
    とき、前記トレース・アドレス情報テーブルのアドレス
    情報を請求項1記載のプログラムのトレーサ装置の第2
    の記憶部に格納して、前記プログラムをトレースするよ
    うにした請求項1記載のプログラムのトレーサ装置
  4. 【請求項4】 請求項1または請求項3に記載のプログ
    ラムのトレーサ装置において、予め所要のアドレス情報
    を第2の記憶部に格納し、この第2の記憶部に格納した
    アドレスに限ってのみアドレス参照軌跡を第1の記憶部
    に記録するように制御する制御手順を、情報処理装置で
    利用できるように格納した記録媒体。
  5. 【請求項5】 請求項2記載のコンパイラ及びリンカー
    の処理方法の手順を、情報処理装置で利用できるように
    格納した記録媒体。
JP11691198A 1998-04-27 1998-04-27 プログラムのトレーサ、コンパイラ及びリンカー Expired - Fee Related JP3165105B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11691198A JP3165105B2 (ja) 1998-04-27 1998-04-27 プログラムのトレーサ、コンパイラ及びリンカー

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11691198A JP3165105B2 (ja) 1998-04-27 1998-04-27 プログラムのトレーサ、コンパイラ及びリンカー

Publications (2)

Publication Number Publication Date
JPH11306045A JPH11306045A (ja) 1999-11-05
JP3165105B2 true JP3165105B2 (ja) 2001-05-14

Family

ID=14698711

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11691198A Expired - Fee Related JP3165105B2 (ja) 1998-04-27 1998-04-27 プログラムのトレーサ、コンパイラ及びリンカー

Country Status (1)

Country Link
JP (1) JP3165105B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4661854B2 (ja) 2007-11-09 2011-03-30 株式会社デンソー 検査システム及びプログラム

Also Published As

Publication number Publication date
JPH11306045A (ja) 1999-11-05

Similar Documents

Publication Publication Date Title
US5987250A (en) Transparent instrumentation for computer program behavior analysis
EP1130518B1 (en) Software analysis system having an apparatus for selectively collecting analysis data from a target system executing software instrumented with tag statements and method for use thereof
US6430741B1 (en) System and method for data coverage analysis of a computer program
US5142679A (en) Method and apparatus for collecting execution status data of structured program
US9274923B2 (en) System and method for stack crawl testing and caching
US5265254A (en) System of debugging software through use of code markers inserted into spaces in the source code during and after compilation
US20120317551A1 (en) Post-compile instrumentation of object code for generating execution trace data
US20110047529A1 (en) Method for automatic script generation for testing the validity of operational software of a system onboard an aircraft and device for implementing the same
JPH0689200A (ja) デバッグシステム及び方法
JP2004062858A (ja) データ処理装置内のアプリケーション・コードのコンパイル
JP2006185211A (ja) プログラム解析装置、テスト実行装置、その解析方法及びプログラム
US20100275185A1 (en) System and Method for High Performance Coverage Analysis
JPH0748182B2 (ja) プログラム・エラー検出方法
JP2010287101A (ja) ソフトウエアデバッグ装置及び方法
JP3165105B2 (ja) プログラムのトレーサ、コンパイラ及びリンカー
JP2005338987A (ja) 例外テスト支援プログラム及び例外テスト支援装置
JP3196675B2 (ja) 言語処理方式
JPS62113244A (ja) プログラムテスト装置
JPH08314760A (ja) プログラム開発支援装置
JP4055197B2 (ja) プログラムに含まれる手続きの解析装置
JP2000207246A (ja) デバッグ支援装置及び方法並びにデバッグ支援用ソフトウェアを記録した記録媒体
RU2390821C1 (ru) Способ динамической инструментации
JP2004287869A (ja) プログラム実行監視装置および方法
JPH05250221A (ja) シミュレータ実行方式
JP3077627B2 (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: 20010206

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080302

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090302

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100302

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100302

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110302

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110302

Year of fee payment: 10

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110302

Year of fee payment: 10

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110302

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120302

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130302

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130302

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140302

Year of fee payment: 13

LAPS Cancellation because of no payment of annual fees