JPH04287134A - 簡易トレース情報取得方式 - Google Patents
簡易トレース情報取得方式Info
- Publication number
- JPH04287134A JPH04287134A JP3074337A JP7433791A JPH04287134A JP H04287134 A JPH04287134 A JP H04287134A JP 3074337 A JP3074337 A JP 3074337A JP 7433791 A JP7433791 A JP 7433791A JP H04287134 A JPH04287134 A JP H04287134A
- Authority
- JP
- Japan
- Prior art keywords
- trace information
- function
- information output
- output function
- instruction sequence
- 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
Links
- 238000000034 method Methods 0.000 claims description 13
- 230000003213 activating effect Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 2
- 230000010365 information processing Effects 0.000 description 1
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【0001】
【産業上の利用分野】本発明は情報処理における実行プ
ログラムのデバッグ処理に関し、特に実行プログラムの
実行時のトレース情報を取得する処理に関する。
ログラムのデバッグ処理に関し、特に実行プログラムの
実行時のトレース情報を取得する処理に関する。
【0002】
【従来の技術】従来この種の実行プログラムの実行時の
トレース情報を取得する処理では、ソースプログラム中
の関数の入口毎にその関数に制御が移った旨の情報を出
力するようなコーディングを行っていた。
トレース情報を取得する処理では、ソースプログラム中
の関数の入口毎にその関数に制御が移った旨の情報を出
力するようなコーディングを行っていた。
【0003】上述した従来のソースプログラム中の関数
の入口毎にその関数に制御が移った旨の情報を出力する
ようなコーディングを行っていた方式では、トレース情
報を取得するためだけに無駄なコーディングが行われ、
見落としによるトレース情報用のコーディングもれがあ
るという欠点がある。
の入口毎にその関数に制御が移った旨の情報を出力する
ようなコーディングを行っていた方式では、トレース情
報を取得するためだけに無駄なコーディングが行われ、
見落としによるトレース情報用のコーディングもれがあ
るという欠点がある。
【0004】
【発明が解決しようとする課題】本発明はソースプログ
ラムを修正せずにコンパイラの処理により実行時トレー
スが取得できる簡易トレース情報取得方式を提供するこ
とにある。
ラムを修正せずにコンパイラの処理により実行時トレー
スが取得できる簡易トレース情報取得方式を提供するこ
とにある。
【0005】
【課題を解決するための手段】本発明の簡易トレース情
報取得方式は、実行プログラムのトレース情報を取得す
る処理においてコンパイラを起動するさいに簡易トレー
ス機能を有効にするオプションが指定されているかを判
定するオプション設定判定手段と、前記オプション設定
判定手段で簡易トレース機能を有効にするオプションが
指定されていると判定された場合、コード生成部によっ
て生成された命令列から関数呼び出し命令列を判定する
ための関数呼び出し命令判定手段と、前記関数呼び出し
命令判定手段で関数呼び出し命令列であると判定された
命令列を簡易トレース情報出力関数を呼び出す命令列に
置き換える簡易トレース情報出力関数呼び出し命令生成
手段と、前記簡易トレース情報出力関数呼び出し命令生
成手段で生成された呼び出し命令列によって呼び出され
る簡易トレース情報出力関数の本体の命令列を生成する
簡易トレース情報出力関数本体命令生成手段と、を備え
ている。
報取得方式は、実行プログラムのトレース情報を取得す
る処理においてコンパイラを起動するさいに簡易トレー
ス機能を有効にするオプションが指定されているかを判
定するオプション設定判定手段と、前記オプション設定
判定手段で簡易トレース機能を有効にするオプションが
指定されていると判定された場合、コード生成部によっ
て生成された命令列から関数呼び出し命令列を判定する
ための関数呼び出し命令判定手段と、前記関数呼び出し
命令判定手段で関数呼び出し命令列であると判定された
命令列を簡易トレース情報出力関数を呼び出す命令列に
置き換える簡易トレース情報出力関数呼び出し命令生成
手段と、前記簡易トレース情報出力関数呼び出し命令生
成手段で生成された呼び出し命令列によって呼び出され
る簡易トレース情報出力関数の本体の命令列を生成する
簡易トレース情報出力関数本体命令生成手段と、を備え
ている。
【0006】
【実施例】次に、本発明について図面を参照して説明す
る。
る。
【0007】図1は本発明の一実施例を構成するブロッ
ク図である。
ク図である。
【0008】本実施例の簡易トレース情報取得方式は、
ソースプログラム1とコンパイラ2とオブジェクトファ
イル3とで構成されている。
ソースプログラム1とコンパイラ2とオブジェクトファ
イル3とで構成されている。
【0009】そしてコンパイラ2は、オプション設定判
定手段101とコード生成部102と関数呼び出し命令
判定手段103と簡易トレース情報出力関数呼び出し命
令生成手段104と簡易トレース情報出力関数本体命令
生成手段105とで構成されている。
定手段101とコード生成部102と関数呼び出し命令
判定手段103と簡易トレース情報出力関数呼び出し命
令生成手段104と簡易トレース情報出力関数本体命令
生成手段105とで構成されている。
【0010】図2は、簡易トレース情報出力関数本体命
令生成手段105で生成する簡易トレース情報出力関数
本体命令列の一実施例を示す流れ図である。
令生成手段105で生成する簡易トレース情報出力関数
本体命令列の一実施例を示す流れ図である。
【0011】本発明の簡易トレース情報出力関数本体命
令列は、スタックポインタ更新201と本関数で使用す
る全レジスタをセーブする202と関数への飛び先アド
レスとシンボル情報内の関数入口アドレスとの比較20
3とその入口アドレスを持つ関数の名前を取得する20
4と取得した関数名を出力する205と呼び出す関数の
引数の値を出力する206とセーブしたレジスタの内容
を回復する207とスタックポインタを回復する208
とで構成されている。
令列は、スタックポインタ更新201と本関数で使用す
る全レジスタをセーブする202と関数への飛び先アド
レスとシンボル情報内の関数入口アドレスとの比較20
3とその入口アドレスを持つ関数の名前を取得する20
4と取得した関数名を出力する205と呼び出す関数の
引数の値を出力する206とセーブしたレジスタの内容
を回復する207とスタックポインタを回復する208
とで構成されている。
【0012】次に、本実施例の全体的な動作を具体的に
説明する。
説明する。
【0013】オプション設定判定手段101は、コンパ
イラ2が認識するオプションのうち簡易トレース情報取
得用オブジェクト作成オプションが指定されているかを
判定し、指定されていれば簡易トレース情報取得モード
としコード生成部102を介して関数呼び出し命令判定
手段103を起動し、指定されていなければ通常の翻訳
処理を行う。
イラ2が認識するオプションのうち簡易トレース情報取
得用オブジェクト作成オプションが指定されているかを
判定し、指定されていれば簡易トレース情報取得モード
としコード生成部102を介して関数呼び出し命令判定
手段103を起動し、指定されていなければ通常の翻訳
処理を行う。
【0014】関数呼び出し命令判定手段103は、コー
ド生成部102によって生成された命令列から関数呼び
出し命令列を捜し出し、関数呼び出し命令列の部分を簡
易トレース情報出力関数呼び出し命令に置き換えるため
に簡易トレース情報出力関数呼び出し命令生成手段10
4を起動する。
ド生成部102によって生成された命令列から関数呼び
出し命令列を捜し出し、関数呼び出し命令列の部分を簡
易トレース情報出力関数呼び出し命令に置き換えるため
に簡易トレース情報出力関数呼び出し命令生成手段10
4を起動する。
【0015】簡易トレース情報出力関数呼び出し命令生
成手段104は、関数呼び出し命令判定手段103で判
定された関数呼び出し命令列を簡易トレース情報出力関
数呼び出し命令列に置き換え、全ての関数呼び出し命令
列を簡易トレース情報出力関数呼び出し命令列に置き換
えた後に、簡易トレース情報出力関数本体の命令列を追
加生成するために、簡易トレース情報出力関数本体命令
生成手段105を起動する。
成手段104は、関数呼び出し命令判定手段103で判
定された関数呼び出し命令列を簡易トレース情報出力関
数呼び出し命令列に置き換え、全ての関数呼び出し命令
列を簡易トレース情報出力関数呼び出し命令列に置き換
えた後に、簡易トレース情報出力関数本体の命令列を追
加生成するために、簡易トレース情報出力関数本体命令
生成手段105を起動する。
【0016】簡易トレース情報出力関数本体命令生成手
段105は、簡易トレース情報出力関数呼び出し命令生
成手段104で置き換えた簡易トレース情報出力関数呼
び出し命令列によって呼び出される簡易トレース情報出
力関数の本体命令列を追加生成する。
段105は、簡易トレース情報出力関数呼び出し命令生
成手段104で置き換えた簡易トレース情報出力関数呼
び出し命令列によって呼び出される簡易トレース情報出
力関数の本体命令列を追加生成する。
【0017】簡易トレース情報出力関数本体の命令列は
、スタックポインタ更新201で本関数内で使用するレ
ジスタを退避するのに必要な分だけスタック領域を確保
し、スタックポインタを更新する。
、スタックポインタ更新201で本関数内で使用するレ
ジスタを退避するのに必要な分だけスタック領域を確保
し、スタックポインタを更新する。
【0018】次に本関数で使用する全レジスタをセーブ
する202で本関数スタックポインタ更新201で確保
したスタック領域に本関数で使用するレジスタの内容を
セーブする。
する202で本関数スタックポインタ更新201で確保
したスタック領域に本関数で使用するレジスタの内容を
セーブする。
【0019】その後、関数への飛び先アドレスとシンボ
ル情報の関数入口アドレスとの比較203で、本来呼ば
れる関数の入口アドレスと、生成される実行プログラム
中に存在するシンボル情報内の関数入口アドレスとを等
しくなるまで、生成される実行プログラム中に存在する
シンボル情報を検索し、等しくなったらその入口アドレ
スを持つ関数の名前を取得する204の処理を行う。
ル情報の関数入口アドレスとの比較203で、本来呼ば
れる関数の入口アドレスと、生成される実行プログラム
中に存在するシンボル情報内の関数入口アドレスとを等
しくなるまで、生成される実行プログラム中に存在する
シンボル情報を検索し、等しくなったらその入口アドレ
スを持つ関数の名前を取得する204の処理を行う。
【0020】その入口アドレスを持つ関数の名前を取得
する204は、等しくなったアドレスに対応するシンボ
ル情報内の関数名を取得し、取得した関数名を出力する
205でその取得した関数名を出力する。さらに、呼び
出す関数の引数の値を出力する206では、本来呼び出
される関数に対する引数を値を出力する。
する204は、等しくなったアドレスに対応するシンボ
ル情報内の関数名を取得し、取得した関数名を出力する
205でその取得した関数名を出力する。さらに、呼び
出す関数の引数の値を出力する206では、本来呼び出
される関数に対する引数を値を出力する。
【0021】そして、セーブしたレジスタの内容を回復
する207で、本関数で使用する全レジスタをセーブす
る202で退避したレジスタの内容を復帰し、スタック
ポインタを回復する208でスタックポインタを元の値
に戻し、本来呼び出すべき関数に分岐する209。
する207で、本関数で使用する全レジスタをセーブす
る202で退避したレジスタの内容を復帰し、スタック
ポインタを回復する208でスタックポインタを元の値
に戻し、本来呼び出すべき関数に分岐する209。
【0022】
【発明の効果】以上説明したように本発明は、実行プロ
グラムの実行時のトレース情報を取得する処理において
、そのソースプログラムを翻訳する段階でトレース情報
出力関数をコンパイラが自動生成し、関数呼び出し命令
をそのトレース情報出力関数を呼び出すように置き換え
ることにより、ソースプログラム中の関数の入口毎にそ
の関数に制御が移った旨の情報を出力するようなコーデ
ィングを行っていた場合より、コンパイラに対するオプ
ションを指定するだけで実行プログラムの実行時のトレ
ース情報が得られるので、そのソースプログラムに対す
る余分な変更や追加コーディングを行わずにすみ、トレ
ース情報用のコーディングもれや余分な変更や追加コー
ディングによる記述間違いが無くなるという効果がある
。
グラムの実行時のトレース情報を取得する処理において
、そのソースプログラムを翻訳する段階でトレース情報
出力関数をコンパイラが自動生成し、関数呼び出し命令
をそのトレース情報出力関数を呼び出すように置き換え
ることにより、ソースプログラム中の関数の入口毎にそ
の関数に制御が移った旨の情報を出力するようなコーデ
ィングを行っていた場合より、コンパイラに対するオプ
ションを指定するだけで実行プログラムの実行時のトレ
ース情報が得られるので、そのソースプログラムに対す
る余分な変更や追加コーディングを行わずにすみ、トレ
ース情報用のコーディングもれや余分な変更や追加コー
ディングによる記述間違いが無くなるという効果がある
。
【図1】本発明の簡易トレース情報取得方式の一実施例
を示す構成図である。
を示す構成図である。
【図2】簡易トレース情報出力関数本体命令生成手段1
05で生成される命令列の流れ図である。
05で生成される命令列の流れ図である。
1 ソースプログラム
2 コンパイラ
3 オブジェクトファイル
101 オプション設定判定手段
102 コード生成部
103 関数呼び出し命令判定手段
104 簡易トレース情報出力関数呼び出し命令生成
手段 105 簡易トレース情報出力関数本体命令生成手段
201 スタックポインタ更新 202 本関数で使用する全レジスタをセーブする2
03 関数への飛び先アドレスとシンボル情報内の関
数入口アドレスとの比較
手段 105 簡易トレース情報出力関数本体命令生成手段
201 スタックポインタ更新 202 本関数で使用する全レジスタをセーブする2
03 関数への飛び先アドレスとシンボル情報内の関
数入口アドレスとの比較
Claims (1)
- 【請求項1】 実行プログラムのトレース情報を取得
する処理において、コンパイラを起動する際に簡易トレ
ース機能を有効にするオプションが指定されているかを
判定するオプション設定判定手段と、前記オプション設
定判定手段で簡易トレース機能を有効にするオプション
が指定されていると判定された場合、コード生成部によ
って生成された命令列から関数呼び出し命令列を判定す
るための関数呼び出し命令判定手段と、前記関数呼び出
し命令判定手段で関数呼び出し命令列であると判定され
た命令列を簡易トレース情報出力関数を呼び出す命令列
に置き換える簡易トレース情報出力関数呼び出し命令生
成手段と、前記簡易トレース情報出力関数呼び出し命令
生成手段で生成された呼び出し命令列によって呼び出さ
れる簡易トレース情報出力関数の本体の命令列を生成す
る簡易トレース情報出力関数本体命令生成手段と、を備
えることを特徴とする簡易トレース情報取得方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3074337A JPH04287134A (ja) | 1991-03-15 | 1991-03-15 | 簡易トレース情報取得方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3074337A JPH04287134A (ja) | 1991-03-15 | 1991-03-15 | 簡易トレース情報取得方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH04287134A true JPH04287134A (ja) | 1992-10-12 |
Family
ID=13544208
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3074337A Pending JPH04287134A (ja) | 1991-03-15 | 1991-03-15 | 簡易トレース情報取得方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH04287134A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003526135A (ja) * | 1998-11-16 | 2003-09-02 | インシグニア・ソリューションズ・ピーエルシー | コンピュータ・システム、コンピュータ読取り可能な記憶媒体および同媒体を動作させる方法、およびコンピュータ・システムを動作させる方法 |
JP2008217751A (ja) * | 2007-02-09 | 2008-09-18 | Ntt Docomo Inc | コード検出装置及びコード検出方法 |
JP2011216056A (ja) * | 2010-04-02 | 2011-10-27 | Mitsubishi Electric Corp | プログラマブルコントローラ及びその周辺装置 |
-
1991
- 1991-03-15 JP JP3074337A patent/JPH04287134A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003526135A (ja) * | 1998-11-16 | 2003-09-02 | インシグニア・ソリューションズ・ピーエルシー | コンピュータ・システム、コンピュータ読取り可能な記憶媒体および同媒体を動作させる方法、およびコンピュータ・システムを動作させる方法 |
JP2008217751A (ja) * | 2007-02-09 | 2008-09-18 | Ntt Docomo Inc | コード検出装置及びコード検出方法 |
JP2011216056A (ja) * | 2010-04-02 | 2011-10-27 | Mitsubishi Electric Corp | プログラマブルコントローラ及びその周辺装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20040230957A1 (en) | Methods for comparing versions of a program | |
JPH04287134A (ja) | 簡易トレース情報取得方式 | |
JP2817786B2 (ja) | シミュレーション装置及びシミュレーション方法 | |
JPH0667871A (ja) | プログラム自動更新方式 | |
JPH07210397A (ja) | プログラム変換方法およびそれを用いたプログラム実行方法 | |
JPH04239338A (ja) | マイクロプログラム網羅率測定方式 | |
JPH05197561A (ja) | コンパイル方式 | |
JPH05297911A (ja) | シーケンスコントローラ用シーケンス制御回路 | |
JP2001125793A (ja) | コンパイラシステム及びコンパイル方法並びに記録媒体 | |
JPH0362227A (ja) | 高速再翻訳処理方式 | |
CN115344247A (zh) | 用于iOS中不同接口数据结构类型的适配器及适配方法 | |
CN117762406A (zh) | 低代码开发转换引擎系统 | |
JP3021697B2 (ja) | プログラミング言語における例外処理方法 | |
JPS63228341A (ja) | プログラム構文チエツク方式 | |
JPH01282651A (ja) | 網羅度管理のための制御項目自動管理方式 | |
JPH06103080A (ja) | インクルードファイル取込方式 | |
JPH04195549A (ja) | デバッグ処理方式 | |
JPH05204699A (ja) | デバッグ時識別子探索方式 | |
JPH01140239A (ja) | 命令実行アドレス保存処理方式 | |
JPH02284239A (ja) | 言語処理プログラムの実行方式 | |
JPH03156641A (ja) | コンパイル処理方式 | |
JPH0944347A (ja) | エラー知識ベース作成装置 | |
JPH0566949A (ja) | 関数定義コンパイルドコード呼出し方式 | |
JPH0588879A (ja) | プログラム開発支援システム | |
JPH01140236A (ja) | プログラムの逆コンパイル方式 |