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
Links
Landscapes
- Debugging And Monitoring (AREA)
Description
レス参照軌跡をトレースしてプログラムの動作を解析す
るプログラムのトレーサに関し、特に前記の参照アドレ
スを、プログラムの中で参照される関数ルーティンの入
口及び出口のアドレス情報に限定してトレースするプロ
グラムのトレーサ、及び、その参照アドレスを前記プロ
グラムのソースプログラムをコンパイルするときに、ト
レース・アドレス情報テーブルとして予め生成し、前記
プログラムに付加しておくようにしたコンパイラ及び前
記プログラムをロード・モジュールにリンクするリンカ
ーに関する。
するためのものとしては、例えば特開平3−10339
号公報にあるように、「関数情報を基にブレークポイン
ト管理テーブルを作成し」て、関数ステップ機能を実現
するインサーキットエミュレータでは、関数の「戻り番
地にブレークポイントをセット」するようにしてプログ
ラムのデバッグをするようにしたものや、特開昭59−
184955号公報にあるように、「リターン命令を検
出する手段」を設けて、リターン命令が実行された時点
でプログラムを一旦停止するようにしてプログラムをデ
バッグするようにしたもの、あるいは、特開平6−10
3109号公報にあるように、「サブルーチンからの戻
り先番地を」、「リターンアドレスレジスタ(RAH)
に取得し」、「命令ポインタ(IP)」の「戻り先番地
と比較回路で比較し」、「ブレークを発生する」ように
したデバッグ装置、また、特開平5−173834号公
報にあるように、「直前にプログラム・フェッチされた
アドレスの関数のアドレス領域がいま読み込まれたデー
タのアドレスと異なっているかを判定」して、「異なっ
ていればリターンと判断する」ようにした「関数コール
およびリターンの検出方式」などによるプログラムの動
作解析手段があった。
ラムの動作解析手段においては、いずれも、動作解析の
対象プログラムの実行を一旦停止するようにしていたの
で、プログラム全体の動作を解析するためには、相当の
回数だけプログラムの実行が一旦停止することになり、
リアルタイムでのプログラムの動作解析ができにくいと
いう欠点があった。また、従来のプログラムの動作解析
手段では、いずれも関数ルーティンの戻り先アドレスを
ブレークポイントとしているので、関数ルーティン中で
分岐条件により関数処理の内容が変わるような場合に
は、どの分岐条件の関数処理が実行されたのかを簡単に
判別することができないという欠点があった。さらに、
関数ルーティン中で同じ関数ルーティンを再帰的にコー
ルする様な場合には、トレース処理が煩雑になるという
欠点があった。
め本発明のプログラムのトレーサ装置(以下、トレーサ
と略称する)は、プログラムのアドレス参照軌跡を第1
の記憶部に記録して前記プログラムの動作を解析すると
きに、予め所要のアドレス情報を第2の記憶部に格納し
ておき、この第2の記憶部に格納したアドレスに限って
のみアドレス参照軌跡を前記第1の記憶部に記録するよ
うにしたプログラムのトレーサ装置であって、前記第2
の記憶部に格納するアドレス情報を、前記プログラムの
中で参照される関数ルーティンのエントリ・アドレス・
データ及び前記関数ルーティン中のリターン命令の格納
アドレス・データとするようにしたことを特徴とする。
をコンパイル及びリンクする装置において、前記のプロ
グラムのトレーサの第2の記憶部に格納するアドレス情
報を、トレース・アドレス情報テーブルとして生成し、
前記の当該プログラムに付加するようにしたコンパイラ
及びリンカーが、前記トレース・アドレス情報テーブル
のアドレス情報を、前記の当該プログラムの中で参照さ
れる関数ルーティンのエントリ・アドレス・データ及び
前記関数ルーティン中のリターン命令の格納アドレス・
データとするようにしたことを特徴とするコンパイラ及
びリンカーの処理方法とした。
り作成されたプログラムをトレースするとき、前記トレ
ース・アドレス情報テーブルのアドレス情報を前記第2
の記憶部に格納して、前記プログラムをトレースするよ
うにした。
手順を記録媒体に記録して、情報処理装置で利用できる
ようにした。
理手順を記録媒体に記録して、情報処理装置で利用でき
るようにした。
下に図面を参照して説明する。
置(以下トレーサと略称する)によるトレース処理動
作、及び、コンパイラ及びリンカーを含めた全体の処理
の流れを示した図である。図3において、ソースファイ
ル群100には、C言語やアセンブラ言語で記述された
複数の関数ルーティンを含んでいる。コンパイラ12は
このソースファイル群を読み込んで、オブジェクトコー
ドを生成し、関数ルーティンのエントリとその関数ルー
ティン中のリターン命令の箇所を抽出し、オブジェクト
・ファイル群120を出力する。リンカー31は、コン
パイラ12によって出力されたオブジェクト・ファイル
群120を読み込んで、実行形式プログラム・ファイル
310を出力する。このとき、この実行形式プログラム
・ファイルには、関数エントリのアドレス情報を格納し
た関数エントリ・アドレス・テーブル、および、関数ル
ーティン中のリターン命令の格納アドレス情報を格納し
た関数リターン・アドレス・テーブルを付加する。トレ
ーサ32は、この実行形式プログラム・ファイル310
を読み込み、前記の関数エントリ・アドレス・テーブル
及び関数リターン・アドレス・テーブルから読み込んだ
トレース・アドレス情報に限定して、プログラム実行時
のアドレス参照軌跡及び参照時刻などを記録するように
して、トレース・ファイル320を生成するように動作
する。このようにして得られたトレース・ファイルか
ら、プログラム動作の解析33を行うようにしている。
パイラ12の構成を示す図である。また、図4はその処
理内容を示す図である。図1及び図4に示すように、コ
ンパイラ12は、ソースファイル11を読み込み(処理
41)、関数リターン・アドレス・テーブルを作成する
かしないか選択するオプション指定を確認するオプショ
ン判定部13と、ソース・ファイルの関数エントリの箇
所を抽出し関数エントリ・アドレス・テーブルを生成す
る関数エントリ抽出部14(処理43及び処理44)
と、前記のオプション判定部の判定に従って、オプショ
ン指定が有効なときには、ソース・ファイルの関数リタ
ーン命令の箇所を抽出し関数リターン・アドレス・テー
ブルを生成し(処理45及び処理46)、オプション指
定が無効のときにはこの処理をしないようにする関数リ
ターン抽出部15と、オブジェクト・コードを生成し、
このオブジェクト・コードに前記関数エントリ・アドレ
ス・テーブル及び関数リターン・アドレス・テーブルを
付加したオブジェクト・ファイル17を出力するコード
生成部16(処理47)から構成される。
るオブジェクト・ファイルの構成を示した図で、ファイ
ルヘッダ部21と、プログラム本体のオブジェクト・コ
ード部22と、関数エントリ・アドレス・テーブル部2
3と、関数リターン・アドレス・テーブル部24及びそ
の他の情報部25から構成されている。
グラムのトレーサの動作の流れを示した図である。トレ
ーサはまず前述したコンパイラ及びリンカーにより作成
された実行形式プログラム・ファイルを読み込み(処理
51)、関数エントリ・アドレス・テーブル及び関数リ
ーターン・アドレス・テーブルからプログラム実行時の
アドレス参照軌跡のトレース条件を設定する(処理5
2、処理53)。その後、プログラムを実行し(処理5
4、処理55)、実行履歴情報を前記のトレース条件に
従って収集し、トレース・ファイルに記録する(処理5
6、処理57)。
り処理される具体的なソース・ファイルの例と、そのソ
ース・ファイルから作成されるオブジェクト・ファイル
の構成の具体例を示した図である。
は、sample.cと、subfile1.c及びs
ubfile2.cの3つの部分から構成されており、
これらをコンパイル及びリンクすることで、実行形式の
オブジェクト・ファイルsample.exeが生成さ
れる。
つの関数mainとfunc1を有し、subfile
1.cは2つの関数func2及びfunc2_1を有
し、subfile2.cは2つの関数func3及び
func3_1を有している。ここで、func2に
は、2箇所にリターン命令があり、func3には3カ
所にリターン命令がある。
は、これらのソース・ファイルを読み込んで、コンパイ
ル処理して、sample.o、subfile1.o
及びsubfile2.oを生成し、リンカーによりこ
れらのファイルをリンク処理して、実行形式のオブジェ
クト・ファイルsample.exeを生成する。この
とき生成されるオブジェクト・ファイルsanple.
exeは、図7に示すように、プログラム・コード部に
加えて、関数エントリ・アドレス・テーブル部、関数リ
ターン・アドレス・テーブル部、及びその他の情報部か
ら構成するようにしている。
オブジェクト・ファイルの構成を示す図で、プログラム
中に、関数ルーティンと割り込み処理ルーティンが混在
しているような場合には、関数ルーティン中のリターン
命令の格納アドレス情報と、割り込み処理ルーティン中
のリターン命令の格納アドレス情報とを、別個の関数リ
ターン・アドレス・テーブル部として作成するようにし
ており、関数リターンと割り込みリターンとを区別する
ことも容易に可能になる。
レーサ、コンパイラ及びリンカーは、プログラム中で参
照される関数ルーティンのエントリ・アドレス及び関数
ルーティン中のリターン命令の格納アドレスをトレース
・アドレスとして限定してトレースでき、また、プログ
ラムの実行を停止することなくトレースできるという効
果がある。
分岐条件により関数処理の内容が異なる場合にも、どの
分岐条件の関数処理が実行されたのかを確実にトレース
できるという効果がある。
り込み処理ルーティンからのリターンを容易に区別でき
るという効果もある。
を示す図。
クト・ファイルの構成を示す図。
びリンカーの全体の処理手順を示す図。
内容を示す図。
流れを示す図。
である、ソース・ファイルの具体例を示す図。
である、オブジェクト・ファイルの構成の具体例を示す
図。
ァイルの構成を示す図。
Claims (5)
- 【請求項1】 プログラムのアドレス参照軌跡を第1の
記憶部に記録して前記プログラムの動作を解析するトレ
ーサ装置が、予め所要のアドレス情報を第2の記憶部に
格納しておき、この第2の記憶部に格納したアドレスに
限ってのみアドレス参照軌跡を前記第1の記憶部に記録
するようにしたプログラムのトレーサ装置であって、前
記第2の記憶部に格納するアドレス情報を、前記プログ
ラムの中で参照される関数ルーティンのエントリ・アド
レス・データ及び前記関数ルーティン中のリターン命令
の格納アドレス・データとするようにしたことを特徴と
するプログラムのトレーサ装置。 - 【請求項2】 当該プログラムのソースプログラムをコ
ンパイル及びリンクする装置において、請求項1記載の
プログラムのトレーサ装置の第2の記憶部に格納するア
ドレス情報を、トレース・アドレス情報テーブルとして
生成し、前記の当該プログラムに付加するようにしたコ
ンパイラ及びリンカーが、前記トレース・アドレス情報
テーブルのアドレス情報を、前記の当該プログラムの中
で参照される関数ルーティンのエントリ・アドレス・デ
ータ及び前記関数ルーティン中のリターン命令の格納ア
ドレス・データとするようにしたことを特徴とするコン
パイラ及びリンカーの処理方法。 - 【請求項3】 請求項2記載のコンパイラ及びリンカー
の処理方法により作成されたプログラムをトレースする
とき、前記トレース・アドレス情報テーブルのアドレス
情報を請求項1記載のプログラムのトレーサ装置の第2
の記憶部に格納して、前記プログラムをトレースするよ
うにした請求項1記載のプログラムのトレーサ装置。 - 【請求項4】 請求項1または請求項3に記載のプログ
ラムのトレーサ装置において、予め所要のアドレス情報
を第2の記憶部に格納し、この第2の記憶部に格納した
アドレスに限ってのみアドレス参照軌跡を第1の記憶部
に記録するように制御する制御手順を、情報処理装置で
利用できるように格納した記録媒体。 - 【請求項5】 請求項2記載のコンパイラ及びリンカー
の処理方法の手順を、情報処理装置で利用できるように
格納した記録媒体。
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)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4661854B2 (ja) | 2007-11-09 | 2011-03-30 | 株式会社デンソー | 検査システム及びプログラム |
-
1998
- 1998-04-27 JP JP11691198A patent/JP3165105B2/ja not_active Expired - Fee Related
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 |