JP2669300B2 - プログラムトレース回路およびプログラムトレース方法 - Google Patents

プログラムトレース回路およびプログラムトレース方法

Info

Publication number
JP2669300B2
JP2669300B2 JP5139735A JP13973593A JP2669300B2 JP 2669300 B2 JP2669300 B2 JP 2669300B2 JP 5139735 A JP5139735 A JP 5139735A JP 13973593 A JP13973593 A JP 13973593A JP 2669300 B2 JP2669300 B2 JP 2669300B2
Authority
JP
Japan
Prior art keywords
address
function
variable
trace
program
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
JP5139735A
Other languages
English (en)
Other versions
JPH06348540A (ja
Inventor
邦夫 丹羽
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP5139735A priority Critical patent/JP2669300B2/ja
Priority to EP94108954A priority patent/EP0628909A3/en
Publication of JPH06348540A publication Critical patent/JPH06348540A/ja
Application granted granted Critical
Publication of JP2669300B2 publication Critical patent/JP2669300B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はプログラムをトレースす
るトレース回路および方法に関し、特に局所変数をトレ
ースする回路および方法に関する。
【0002】
【従来の技術】従来のトレース回路500は、図5に示
す様にエバチップ1から出力されるアドレスバス3,デ
ータバス4,命令フェッチ反転データアクセスステータ
ス信号6,反転リード信号5および反転ライト信号7
を、反転リード信号5と反転ライト信号7とから作成し
たトレースストローブ信号10によりトレースメモリ2
に記録している。
【0003】一方、エバチップによっては上記信号の他
に内部レジスタへのライト時にライトしたレジスタを識
別する情報とライトした値を出力しているものがある。
【0004】また、エバチップによっては、内部レジス
タが内部RAM空間にマッピングされていて、内部レジ
スタへのライト時にライトしたレジスタを識別する情報
が内部RAMアドレスとしてアドレスバスに出力され、
ライトした値が内部RAMへの書き込みデータとしてデ
ータバスに出力されるものがある。
【0005】通常、C言語の様な高級言語では局所変数
はスタックス上に割りつけられていう。図7(a)およ
び図7(b)に、C言語のソースプログラムのリストを
示し、図7(c)および図7(d)にこれらをコンパイ
ルして作成したオブェクトのアセンブルリストを示す。
図6(a)は関数y()が関数x()から呼び出された
時のスタックの様子である。
【0006】図7(c)および図7(d)では各関数の
局所変数のベースのアドレスはベースポインタとなるh
1レジスタに格納され、局所変数へのアクセスはh1レ
ジスタによる相対アドレッシングで行なわれる様になっ
ている。局所変数へのアドレスは一意に確定したもので
はなく、関数が呼び出された時のスタックトップのアド
レスによって変化する。
【0007】例えば、同じy()という関数であって
も、それが呼び出された時のスタックトップのアドレス
がOFF08hの場合(図6(b)参照)とOFF10
hの場合(図6(c)参照)とでは、局所変数c,d,
eおよびfのアドレスも8バイト異なる。
【0008】この様に局所変数のアドレスが一意に決っ
たものではなく変化するものであるということは、逆に
アドレスが同じであっても、そのアドレスに割り付けら
れる局所変数は変化するということでもある。
【0009】例えば、スタックトップがOFF04hの
時(図6(d)参照)に呼び出された関数x()の局所
変数aとスタックトップがOFF08hの時(図6
(e)参照)に呼び出された関数y()の局所変数e
は、どちらもOFF02hというアドレスになる。
【0010】
【発明が解決しようとする課題】しかしながら、上述の
性質をもつ局所変数を識別するためには、データアクセ
ス時のアドレスと、その時の局所変数のベースのアドレ
スと、その時のプログラム実行アドレスの3つが必要に
なる。
【0011】従来のトレース回路では、変数を識別する
情報としてデータアクセス時のアドレスしかトレースメ
モリに記録していなかったため、局所変数へのアクセス
では、どの局所変数にアクセスしたかを識別しようとす
ると、トレースデータに対して手間のかかるデータ処理
をしなければならなかった。
【0012】すなわち、その時のプログラム実行アドレ
スを得るためには、トレースデータを遡って最後にベー
スポインタであるh1レジスタに代入された値を調べな
けれはならない。
【0013】さらに、トレースメモリが一杯になった場
合には、最古のトレースデータが最新のトレースデータ
で上書きされていくため、これらのデータが消されてし
まい、局所変数の識別が不可能になってしまう場合があ
るという問題点や、クオリファイトレースやセクション
トレースを行った場合には、これらのデータがトレース
対象外になってしまい、トレースメモリに記録されてい
ない場合もあり、この様な場合にも、局所変数の識別が
不可能になってしまうという問題点があった。
【0014】したがって、従来のトレース回路では、デ
ータアクセスを局所変数と対応づけることは行われてお
らず、トレースデータを表示する場合にソースプログラ
ムでの局所変数名で表示されず、どの局所変数にアクセ
スしたのか分らないため、トレースされたデータがデバ
ッグの役に立たないという問題点もあった。本願発明の
目的は、データアクセスを局所変数と対応づけることに
より、ソースプログラムでの局所変数名を表示すること
ができ、どの局所変数にアクセスしたかが分かり、トレ
ースされたデータのでバッグに役立つトレース回路およ
びそのトレース方法を提供することにある。
【0015】
【課題を解決するための手段】本発明のプログラムトレ
ース回路は、デバッグ対象のソースプログラムをコンパ
イルして得られたオブジェクトプログラムが局所変数を
レジスタ相対アドレッシングでアクセスし前記レジスタ
相対アドレッシングの場合のベースになるアドレスをプ
ロセッサ内部の所定のベースポインタに格納でき、前記
オブジェクトプログラムを実行し、前記ベースポインタ
の値が変化した時に前記ベースポインタの値と前記ベー
スポインタの値が変化したことを示す信号とを出力する
エバチップを有するプログラムトレース回路において、
前記ベースポインタの出力をラッチするベースポインタ
ラッチ回路とプログラム実行アドレスをラッチするプロ
グラム実行アドレスラッチ回路とを有し、前記エバチッ
プがデータアクセスを行った時に、前記ベースポインタ
の内容と前記プログラム実行アドレスラッチ回路の内容
とをアクセスしたアドレスとデータとステータスと共に
リアルタイムにトレースメモリに書き込む構成である。
また、本発明のプログラムトレース回路を用いてプログ
ラムトレース方法は、前記トレースメモリに記録された
アドレスとベースポインタの値から局所変数の変数オフ
セットを計算し、この変数オフセットと前記トレースメ
モリの中のプログラム実行アドレスとを使って前記ソー
スプログラム内の関数の関数名と前記関数の関数開始ア
ドレスと前記関数の関数終了アドレスと前記関数の局所
変数の局所変数名とこの局所変数のベースのアドレスか
らの変数オフセットと前記局所変数の変数サイズを格納
したデバッグ情報テーブルを検索し、前記トレースメモ
リに記録されたプログラム実行アドレスと前記デバッグ
情報テーブルの関数開始アドレスおよび関数終了アドレ
スから関数名を特定し、前記トレースメモリに記録され
たアドレスとベースポインタの値から計算した変数オフ
セットと前記デバッグ情報テーブルで見つかった前記関
数の局所変数の変数オフセットと前記局所変数の変数サ
イズから局所変数名を特定し、前記トレースメモリに記
録されたデータアクセス内容を局所変数と対応づけるこ
とを特徴とする。
【0016】
【実施例】次に本発明について図面を参照して説明す
る。
【0017】図1は本発明の第1の実施例の回路図であ
る。
【0018】図1を参照すると、この実施例のトレース
回路100は、エバチップ1から内部レジスタへライト
した時に、どの内部レジスタへライトしたかを識別する
レジスタアドレス11とライトしたレジスタデータ12
と、内部レジスタへライトしたことを知らせる反転レジ
スタライト信号13が出力され、デコーダ19はレジス
タアドレス11が局所変数のベースのアドレスを保持す
るレジスタ(例えばh1レジスタ)と一致した時に一致
信号15を出力し、レジスタデータ12は一致信号15
と反転レジスタライト信号13から作成したストローブ
信号16でベースポインタラッチ20にラッチされる構
成である。さらに、このトレース回路100は、エバチ
ップ1から出力されたアドレスバス3の内容は命令フェ
ッチ反転データアクセスステータス信号6と反転リード
信号5から作成したフェッチストローブ信号8でプログ
ラム実行アドレスラッチ18にラッチされ、プログラム
実行アドレスラッチ18の出力14とベースポインタラ
ッチ20の出力17はトレースメモリ2に入力され、ア
ドレスバス3およびデータバス4などと共にトレースメ
モリ2に書き込まれる構成である。
【0019】次に、本発明の第1の実施例のトレース回
路の動作およびトレース方法を説明する。
【0020】図2(a)はトレースメモリの内様を模式
的に示したものであり、本図では説明を簡単にするため
にデータアクセス時の情報のみ示してある。
【0021】トレースメモリにはアドレス、データ、ス
テータス、ベースポインタおよびプログラム実行アドレ
スが記憶されている。図2(b)はCコンパイラによっ
て生成されたデバッグ情報のテーブルを模試的に示した
ものである。テーブルには関数名、関数開始アドレスお
よび関数終了アドレスがあり、各関数ごとに関数に含ま
れる変数名,変数オフセットおよび変数サイズのテーブ
ルを持っている。
【0022】図2(c)は、本発明のトレースメモリの
内容から局所変数を識別する方法を示したものである。
【0023】図2(c)を参照すると、局所変数の識別
は、まず、トレースメモリ中のプログラム実行アドレス
が関数の開始アドレスと終了アドレスの間にあるかどう
かを調べ、データアクセスを行なった関数を特定する。
【0024】次に、アドレスの値からベースポインタの
値を引いて変数オフセットを計算する。先ほど特定した
関数の局所変数の中から、計算した変数オフセットの値
が、テーブル上の変数オフセットと変数オフセットに変
数サイズを加えた範囲内に含まれるものを探し、局所変
数を識別する。
【0025】次に、本発明の第2の実施例のトレース回
路を説明する。
【0026】図3を参照すると、本発明の第2の実施例
のトレース回路200は、図4に示す内部レジスタが内
部RAM空間にマッピングされているエバチップ1は8
ビットのデータバス4と16ビットのアドレスバス3を
持ち、レジスタへライトした時はレジスタアドレスが内
部RAMアドレスとしてアドレスバス3に出力され、レ
ジスタデータが内部RAMデータとしてデータバス4に
出力される構成である。さらに、このトレース回路20
0は、データバス4が8ビットのため、局所変数のベー
スのアドレスを保持するレジスタ(例えばh1レジス
タ)へのライトは上位側(hレジスタ)へのライトと下
位側(1レジスタ)へのライト2回に分けて出力される
構成である。
【0027】さらに、デコーダ25はアドレスバス3が
上位側または下位側のレジスタアドレスと一致した時
に、上位側一致信号21と下位側一致信号22を出力
し、上記2つの一致信号と反転内部RAMライト信号9
から上位側ストローブ信号23と下記側ストローブ信号
24が作成され、これらの信号により、データバス4の
信号が上位側ベースアドレスラッチ26または下位側ベ
ースアドレスラッチ27にラッチされる。一方、プログ
ラム実行アドレスラッチ18の動作は第1の実施例の動
作と同じである。
【0028】こうして得られたプログラム実行アドレス
ラッチ18の出力14とベースポインタラッチ(上位側
26と下位側27)の出力17はトレースメモリ2に入
力され、第1の実施例と同じくトレースメモリ2に書き
込まれる。
【0029】
【発明の効果】以上、説明した様に本発明は、ベースポ
インタの値とプログラム実行アドレスの値をアクセスし
たアドレスやデータやステータスと共にトレースメモリ
に書き込むため、容易にトレースメモリに記録されたデ
ータアクセス内容を局所変数と対応づけることができ
る。
【0030】また、トレースメモリが一杯になった場
合、ならびに、クオリファイトレースまたはセクション
トレースを行っている場合でも必ず局所変数を識別でき
るため、トレースデータを表示する場合にソースプログ
ラムでの局所変数名で表示することができ、デバッグの
効率が向上するという効果を有する。
【図面の簡単な説明】
【図1】本発明の第1の実施例のトレース回路の回路図
である。
【図2】局所変数の識別方法を説明する図で、(a)は
トレースメモリの内容の模式図を示し、(b)はデバッ
グ情報のテーブルの模式図を示し、(c)は局所変数の
識別方法のフローを示す図である。
【図3】本発明の第2の実施例のトレース回路の回路図
である。
【図4】内部レジスタが内部RAMにマッピングされて
いる例を示す図である。
【図5】従来例のトレース回路の回路図である。
【図6】C言語のスタックの例を示す図である。
【図7】C言語のソースプログラムの例を示す図であ
り、(a)および(b)はC言語のソースプログラムの
例を示す図であり(c)および(d)は(a)および
(b)に示すC言語のソースプログラムをコンパイルし
た時のアセンブルリストを説明する図である。
【符号の説明】
1 エバチップ 2 トレースメモリ 3 アドレスバス 4 データバス 5 反転リード信号 6 命令フェッチ反転データアクセスステータス信号 7 反転ライト信号 8 フェッチストローブ信号 9 反転内部RAMライト信号 10 トレースストローブ信号 11 レジスタアドレス 12 レジスタデータ 13 反転レジスタライト 14 プログラム実行アドレスラッチ 15 レジスタアドレス一致信号 16 ベースポインタラッチストローブ信号 17 ベースポインタラッチ出力 18 プログラム実行アドレスラッチ 19 デコーダ 20 ベースポインタラッチ 21 上位側一致信号 22 下位側一致信号 23 上位側ストローブ信号 24 下位側ストラーブ信号 25 デコーダ 26 上位側ベースポインタラッチ 27 下位側ベースポインタラッチ 100,200,500 トレース回路
フロントページの続き (56)参考文献 特開 平1−137339(JP,A) 特開 平4−350737(JP,A) 特開 平4−190430(JP,A) 特開 平4−97446(JP,A) BORLAND INTERNATI ONAL著 「TURBO DEBUG GER 3.0 ユーザーズガイド」、 (平4−4−20) ボーランド株式会 社、P.65−68

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】 デバッグ対象のソースプログラムをコン
    パイルして得られたオブジェクトプログラムが局所変数
    をレジスタ相対アドレッシングでアクセスし前記レジス
    タ相対アドレッシングの場合のベースになるアドレスを
    プロセッサ内部の所定のレジスタ(以下、ベースポイン
    タと記述する)に格納でき、前記オブジェクトプログラ
    ムを実行し、前記ベースポインタの値が変化した時に前
    記ベースポインタの値と前記ベースポインタの値が変化
    したことを示す信号とを出力する評価用プロセッサ(以
    下、エバチップと記述する)を有するプログラムトレー
    ス回路において、 前記ベースポインタの出力をラッチするベースポインタ
    ラッチ回路とプログラム実行アドレスをラッチするプロ
    グラム実行アドレスラッチ回路とを有し、前記エバチッ
    プがデータアクセスを行った時に、前記ベースポインタ
    の内容と前記プログラム実行アドレスラッチ回路の内容
    とをアクセスしたアドレスとデータとステータスと共に
    リアルタイムにトレースメモリに書き込むことを特徴と
    するプログラムトレース回路。
  2. 【請求項2】 前記トレースメモリに記録されたアドレ
    スとベースポインタの値から局所変数の変数オフセット
    を計算し、 この変数オフセットと前記トレースメモリの中のプログ
    ラム実行アドレスとを使って前記ソースプログラム内の
    関数の関数名と前記関数の関数開始アドレスと前記関数
    の関数終了アドレスと前記関数の局所変数の局所変数名
    とこの局所変数のベースのアドレスからの変数オフセッ
    トと前記局所変数の変数サイズを格納したデバッグ情報
    テーブルを検索し、 前記トレースメモリに記録されたプログラム実行アドレ
    スと前記デバッグ情報テーブルの関数開始アドレスおよ
    び関数終了アドレスから関数名を特定し、 前記トレースメモリに記録されたアドレスとベースポイ
    ンタの値から計算した変数オフセットと前記デバッグ情
    報テーブルで見つかった前記関数の局所変数の変数オフ
    セットと前記局所変数の変数サイズから局所変数名を特
    定し、 前記トレースメモリに記録されたデータアクセス内容を
    局所変数と対応づけることを特徴とする請求項1記載の
    プログラムトレース回路を用いたプログラムトレース方
    法。
JP5139735A 1993-06-11 1993-06-11 プログラムトレース回路およびプログラムトレース方法 Expired - Fee Related JP2669300B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP5139735A JP2669300B2 (ja) 1993-06-11 1993-06-11 プログラムトレース回路およびプログラムトレース方法
EP94108954A EP0628909A3 (en) 1993-06-11 1994-06-10 Program tracing circuit and program tracing method.

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5139735A JP2669300B2 (ja) 1993-06-11 1993-06-11 プログラムトレース回路およびプログラムトレース方法

Publications (2)

Publication Number Publication Date
JPH06348540A JPH06348540A (ja) 1994-12-22
JP2669300B2 true JP2669300B2 (ja) 1997-10-27

Family

ID=15252162

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5139735A Expired - Fee Related JP2669300B2 (ja) 1993-06-11 1993-06-11 プログラムトレース回路およびプログラムトレース方法

Country Status (2)

Country Link
EP (1) EP0628909A3 (ja)
JP (1) JP2669300B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014147742A1 (ja) * 2013-03-19 2014-09-25 富士通株式会社 エラー分析方法、情報処理装置およびエラー分析プログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5127103A (en) * 1987-10-14 1992-06-30 North American Philips Corporation Real-time tracing of dynamic local data in high level languages in the presence of process context switches
JPH01137339A (ja) * 1987-11-25 1989-05-30 Mitsubishi Electric Corp マイクロプロセッサ
DE69033759T2 (de) * 1990-01-04 2002-05-08 Nat Semiconductor Corp Vorrichtung die die Beobachtung interner speicherzugeordneten Register ermöglicht
JPH0497446A (ja) * 1990-08-15 1992-03-30 Nec Ibaraki Ltd ファームウェアトレーサによるレジスタトレース回路
JPH04190430A (ja) * 1990-11-26 1992-07-08 Mitsubishi Electric Corp ソフトウェア開発用エミュレータ
JPH04350737A (ja) * 1991-05-29 1992-12-04 Nec Corp マイクロコンピュータ

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
BORLAND INTERNATIONAL著 「TURBO DEBUGGER 3.0 ユーザーズガイド」、(平4−4−20) ボーランド株式会社、P.65−68

Also Published As

Publication number Publication date
EP0628909A3 (en) 1996-01-24
JPH06348540A (ja) 1994-12-22
EP0628909A2 (en) 1994-12-14

Similar Documents

Publication Publication Date Title
US7237149B2 (en) Method and apparatus for qualifying debug operation using source information
US20040019774A1 (en) Processor device and information processing device, compiling device, and compiling method using said processor device
US20050273666A1 (en) Information processing apparatus and test method for programs
US20090249304A1 (en) Code Instrumentation Method and Code Instrumentation Apparatus
US5197134A (en) Pipeline processor for performing write instruction by referring to cache memory search result obtained during idling state of operand reading cycle
JP2669300B2 (ja) プログラムトレース回路およびプログラムトレース方法
JPS5987566A (ja) メモリアクセス検出方式
US20020199174A1 (en) Tool for converting .MAP file formats
JP2001175500A (ja) インサーキットエミュレータのトレース方法、トレース手順を記録した記録媒体およびトレース回路
JP3379675B2 (ja) 逆実行デバッグシステム
JP2591432B2 (ja) トレース装置
JPH0581087A (ja) プロセサのモニタ方式
JP2915944B2 (ja) カバレージ測定方法及びマイクロコンピュータ
JPH0724030B2 (ja) デバック装置
JP2795309B2 (ja) プロファイラ用コード追加方式
JPH1165875A (ja) インサーキットエミュレータ
JP2002196976A (ja) フラッシュメモリ搭載icカードにおけるメモリアクセス制御方法および装置並びにプログラム記憶媒体
JP2570407B2 (ja) プログラマブル・コントローラ
JP3428253B2 (ja) シーケンサ
JPS6286442A (ja) デ−タ処理装置
JPH04242455A (ja) プロセッサ間通信トレース回路
JPH02207345A (ja) マイクロプロセッサの命令実行過程のサンプル方法
JPH05289908A (ja) プログラムトレーサ
JPH03113659A (ja) キャッシュメモリ試験方法
JPH05197596A (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: 19970603

LAPS Cancellation because of no payment of annual fees