JP4527419B2 - プログラムトレース方法およびトレース処理システム - Google Patents

プログラムトレース方法およびトレース処理システム Download PDF

Info

Publication number
JP4527419B2
JP4527419B2 JP2004070817A JP2004070817A JP4527419B2 JP 4527419 B2 JP4527419 B2 JP 4527419B2 JP 2004070817 A JP2004070817 A JP 2004070817A JP 2004070817 A JP2004070817 A JP 2004070817A JP 4527419 B2 JP4527419 B2 JP 4527419B2
Authority
JP
Japan
Prior art keywords
data
trace
task
information
read
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
JP2004070817A
Other languages
English (en)
Other versions
JP2005258889A (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
NEC Communication Systems Ltd
Original Assignee
NEC Corp
NEC Communication Systems 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 NEC Corp, NEC Communication Systems Ltd filed Critical NEC Corp
Priority to JP2004070817A priority Critical patent/JP4527419B2/ja
Publication of JP2005258889A publication Critical patent/JP2005258889A/ja
Application granted granted Critical
Publication of JP4527419B2 publication Critical patent/JP4527419B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、プログラムの複数の事象を所定のスケジュールに沿って発生させる情報処理装置のためのトレース処理に関する。
従来、プログラム中の複数の事象が所定のスケジュールに沿って発生するように各事象の発生順序を制御する制御プログラムが普及している。この種の制御プログラムは、主に、携帯通信端末、家電製品および自動車等の各種機器の動作を制御すべく当該機器に組み込まれて利用されることから、機器の動作に不具合が発生した時には、その原因を迅速に究明することが求められる。
動作の不具合を調査するにあたっては、プログラムの実行記録を取得するトレース処理が行われるが、このトレース処理に関し、例えば後述の特許文献1に記載の手法が開示されている。特許文献1の手法は、複数のCPUを有する装置において、CPU毎にリング形式のトレースメモリを用意し、各CPUで事象が発生したとき、この事象についてCPU間での相対的な発生順序を把握できるように当該トレース情報を格納するというものである。
特開2003-076577号公報
しかしながら、従来の上記手法のように、トレース情報をリング形式のメモリに記録する場合、このメモリでは古い情報が新しい情報により順次上書きされることから、不具合の調査に必要な情報を残すためには、メモリとして比較的大きな容量ものを用意する必要がある。その場合、メモリの容量を増加させる分、製品の販売コストの上昇を招くおそれがある。
本発明は、上記課題に鑑みてなされたものであり、トレース情報を格納するためのメモリ容量の増大を抑制し得るプログラムトレース方法および該方法を実施するための情報処理装置を提供することを目的とする。
本発明に係るプログラムトレース方法は、プログラムを実行する情報処理装置が、前記プログラムの各事象を発生させるための複数のタスクのそれぞれにトレース情報を記録するためのデータ記憶領域を割り当て、前記トレース情報の一部として、実行したタスクにおけるデータの読み出し又は書き込み動作による読み出し又は書き込みデータアドレス及びバイト数と、当該動作がブロック転送であるか否かを区別する情報とを前記実行したタスクに対応する前記データ記憶領域に格納し、前記動作がブロック転送であるか否かを区別する情報に基づいて、実行したタスクの読み出し又は書き込み動作がデータのブロック転送であるか否かを判定し、前記動作がブロック転送であると判定したとき、当該読み出し又は書き込みデータの一部である、前記データ記憶領域に格納するデータの上限値として設定されたバイト数以下のデータを前記実行したタスクのトレース情報として前記実行したタスクに対応する前記データ記憶領域に記録し、前記動作がブロック転送でないと判定したとき、当該読み出し又は書き込みデータの全てを前記実行したタスクのトレース情報として前記実行したタスクに対応する前記データ記憶領域に記録することを特徴とする。
本発明に係るトレース処理システムは、プログラムを実行する情報処理装置を備え、前記情報処理装置は、前記プログラムの各事象を発生させるための複数のタスクのそれぞれにトレース情報を記録するためのデータ記憶領域を有し、前記トレース情報の一部として、実行したタスクにおけるデータの読み出し又は書き込み動作による読み出し又は書き込みデータアドレス及びバイト数と、当該動作がブロック転送であるか否かを区別する情報とを前記実行したタスクに対応する前記データ記憶領域へ格納し、前記動作がブロック転送であるか否かを区別する情報に基づいて、実行したタスクの読み出し又は書き込み動作がデータのブロック転送であるか否かを判定し、前記動作がブロック転送であると判定したとき、当該読み出し又は書き込みデータの一部である、前記データ記憶領域に格納するデータの上限値として設定されたバイト数以下のデータを前記実行したタスクのトレース情報として前記実行したタスクに対応する前記データ記憶領域に記録し、前記動作がブロック転送でないと判定したとき、当該読み出し又は書き込みデータの全てを前記実行したタスクのトレース情報として前記実行したタスクに対応する前記データ記憶領域に記録することを特徴とする。
本発明によれば、トレース情報の記録対象を、各タスクにおける読み出し又は書き込み動作としたことから、トレース情報のデータ量を抑制することができる。これにより、たとえリング形式のトレースメモリであっても、より多くのトレース情報を保持することが可能となる。
[実施例]
以下、本発明の実施例について図面を用いて詳細に説明する。図1は、本発明のトレース処理システムの実施例の構成を示すブロック図である。実施例のシステム100は、プログラムを実行する情報処理装置10と、データを記憶する記憶装置20とを備え、情報処理装置10は、キーボード及びディスプレイ機構のような入力装置30及び出力装置31、ならびに外部システムとのデータ送受信のための通信装置32等の動作を制御する。
情報処理装置10は、演算機能を果たすCPU11と、CPU11により実行するプログラムを保持するプログラムメモリ12とを含む。記憶装置20は、CPU11が取り扱うデータを格納する記憶領域の他に、後述のトレース情報をリング形式で格納するための複数のトレースバッファ21、22、・・・、2nを有する。これらの各トレースバッファ21〜2nは、プログラムにおける各事象を発生させるためのタスク別に設けられている。
図2に、情報処理装置10により実行されるプログラムの構成を示す。実施例のプログラムは、図2に示すように、本発明に係るタスク制御部の機能を果たすリアルタイムモニタ50部と、本発明のタスク処理部の機能を果たすタスク部60とから構成される。
実施例のリアルタイムモニタ50部には、例えば、コンピュータプログラミングに関し従来知られたプロジェクトであるTRON(The Real-time Operating Nucleus)に関連するITRON(Industrial TRON)で提案されているμITRON仕様に準拠した、いわゆるリアルタイムOS(RTOS:Real Time Operating System)を用いることができる。リアルタイムモニタ部50は、予め設定されたスケジュールに基づいて、後述の各タスクを所定の順序に沿って実行するスーパバイザ機能を有する。
タスク部60は、CPU11により制御するデバイスの機能に応じて開発される複数のタスク601、602、・・・、60nと、これらの各タスクおよび入力装置30のようなハードウェア間のインタフェース機能を果たすハンドラ61とを有する。タスク601〜60nは、当該デバイスに対し発生させるべき事象を記述したプログラムモジュールであり、当該デバイスの初期処理を行うためのスタータタスク、キー入力に関するタスク、信号の送受信に関するタスク等が含まれる。ハンドラ61は、キー入力操作や信号の受信のような、ハードウェアからの割り込み処理要求を受け付ける。
各タスク601〜60nに対応する事象を発生させるにあたっては、CPU11が、当該タスクのコードに基づき、記憶装置20に対しデータの読み出し又は書き込みを行うことにより実現する。このとき、CPU11は、各タスクにおけるデータの読み出し又は書き込み動作についての記録をトレース情報として記憶装置20の当該トレースバッファ(21〜2n)に格納する。
図3に、本実施例のトレース情報の構成を示す。トレース情報には、当該タスクの動作がデータの読み出しであるか、あるいは書き込みであるかを示す「データリード/ライト区別」と、読み出し又は書き込みデータの「アドレス」および「範囲」と、当該動作がブロック転送であるか否かを示す「ブロック転送区別」と、実際に読み出し又は書き込みするデータである「リード値/ライト値」とを記録する。
このように本実施例では、プログラムの各タスク601〜60nをトレース情報の記録対象としており、これは、当該事象のプログラムコードに対し、CPU11が実際には如何に動作したかを確認しようとするものである。すなわち、各タスク601〜60nによるCPU11のデータの読み出し又は書き込み動作を確認することにより、不具合に至った直接的な原因を探るものである。
ここで、情報処理装置10による一連の制御手順を、図4に示すフローチャートに沿って概略的に説明する。ここでは、各タスク601〜60nに対し、現在実行すべきものを「実行タスク」とし、次に実行されるものを「実行待ちタスク」とし、その他のものを「事象発生待ちタスク」と位置付ける。
まず、システム100に電源が投入されると、リアルタイムモニタ部50は、スタックエリアやレジスタに対し所定の初期化処理を実行した後、タスク601〜60nのうち「実行待ちタスク」に設定されているものをスタータタスクとして起動する(ステップS1)。ここでは、例えばタスク601をスタータタスクとする。タスク601は、「実行タスク」に切り換わると、他のタスク602〜60nのうち次に実行すべきものを「実行待ちタスク」に決定し、自タスク、すなわちタスク601を「事象発生待ちタスク」に設定する。スタータタスクとして初期処理を終了したタスク601は、リアルタイムモニタ部50から新たに指示されるまで待機する(ステップS2)。
タスク部60の初期処理が終了すると、リアルタイムモニタ部50は、いったん割り込み要求を禁止すると共に、前述したスーパバイザ機能により、所定の優先順位に沿って「実行待ちタスク」の有無を確認する。「実行待ちタスク」が存在する場合(ステップS4:Yes)、当該タスクの状態を「実行タスク」に切り換えた後(ステップS5)、割り込み要求を許可し(ステップS6)、プログラムカウンタに当該タスクをカウンタ値を設定して該タスクを実行する(ステップS7)。
一方、「実行待ちタスク」が無い場合は(ステップS4:No)、割り込み禁止を解除し(ステップS8)、キー押下や信号受信などハードウェアからの割込み要求が入るまでCPU11の動作を停止する(ステップS9)。そして、割り込み要求があったとき、当該処理を実行し(ステップS10)、終了後、「実行待ちタスク」の有無を確認するステップS3に戻る。
本発明のプログラムトレース方法は、タスクが実行される上記ステップS7に適用され、図3に沿って説明したように、当該タスクにおけるデータの読み出し又は書き込み動作をトレース情報により記録する。CPU11は、各タスク601〜60nにおけるデータの読み出しを行う際、以下に説明するデータリードトレース関数を用いる。
図5に、データの読み出し手順を示す。CPU11は、当該タスクにおいてデータの読み出しを行う際、読み出すべきデータのアドレス、バイト数、及びブロック転送か否かの情報を前記トレース関数のINPUTパラメータに設定する(ステップA1)。そして、後述の関数処理(ステップA2)においてトレース関数のOUTPUTパラメータに設定される読み出し結果を取得する(ステップA3)。
また、各タスク601〜60nにおいてデータの書き込みを行う際には、データライトトレース関数を用い、図6に示すように、CPU11が、データの書き込みアドレス、バイト数、及びブロック転送か否かの情報を前記トレース関数のINPUTパラメータに設定する(ステップB1)。そして、後述の関数処理(ステップB2)を経てデータを書き込む。
上記ステップA2のデータリードトレース関数の処理手順を図7に示す。まず、CPU11は、実行中のタスクに対応するトレースバッファ(21〜2n)に、当該タスクにおいてデータの読み出しを行う旨と、上記ステップA1で設定されたINPUTパラメータとをトレース情報の一部として格納する(ステップA21)。次いで、データの読み出しがブロック転送によるものか否かをINPUTパラメータにより確認する。その結果、ブロック転送である場合(ステップA22:Yes)、読み出し結果となるデータのうち所定量のデータを当該トレースバッファに格納する(ステップA23)。
トレースバッファに格納するデータの上限値は、例えば64バイト程度に設定することができる。このように、バッファに格納するデータ量に上限を与えることにより、トレースバッファの記憶領域を節約利用することができる。一般的に、ブロック転送における不具合は、転送開始アドレス及び転送バイト数の誤りが主な原因とみなされる。よって、本実施例では、ブロック転送の場合、INPUTパラメータのアドレス及びバイト数を示すデータをトレース情報に記録し、読み取り結果となるデータは、その全てをトレース情報に記録することなく部分的に記録するにとどめる。
トレースバッファに対する上記作業により、当該タスクについてのトレース情報が、既に説明した図3に示すように記録される。
また、データの読み出しがブロック転送でない場合は(ステップA22:No)、読み出し結果に、状態変数、フラグ及びカウンタ値のような、当該事象の不具合の原因を究明するための重要な値が含まれることから、読み出したデータの全てをトレースバッファに格納する(ステップA24)。これにより、不具合の原因調査に必要なデータを確実に取得することができる。
トレースバッファへのトレース情報の記録を終えると、読み出しデータの全てをデータリードトレース関数のOUTPUTパラメータに格納し(ステップA25)、関数処理を終了する。OUTPUTパラメータに設定されたデータは、図5に沿って説明したステップA3で、読み出し結果として処理される。
また、図8に、データ書き込み動作の際に利用するデータライトトレース関数の処理手順を示す。CPU11は、実行中のタスクに対応するトレースバッファ(21〜2n)に、データの書き込みを行う旨と、上記ステップB1で設定されたINPUTパラメータとをトレース情報の一部として格納する(ステップB21)。
次いで、ブロック転送か否かをINPUTパラメータにより確認し、ブロック転送である場合(ステップB22:Yes)、書き込むべきデータのうち所定量のデータを当該トレースバッファに格納する(ステップB23)。このときのデータ量は、上記の読み出し動作と同様な64バイト程度を上限とする。また、ブロック転送でない場合は(ステップB22:No)、書き込むデータの全てをトレースバッファに格納し、処理を終了する(ステップB24)。
以上説明したように、実施例のシステム100によれば、トレース情報の記録にあたって、その対象を各タスクに絞り込み、さらに、ブロック転送の場合に記録するデータ量に上限を設けたことから、タスク1回分のトレース情報量を抑制することができる。これにより、トレースバッファの節約利用が可能となることから、たとえリング形式であっても、より多くのトレース情報を保持することができる。
本発明による実施例のトレース処理システムの構成を示すブロック図である。 実施例のプログラム構造を示すブロック図である。 実施例のトレース情報を説明するための説明図である。 実施例の情報処理装置の制御手順を示すフローチャートである。 実施例のデータ読み出し動作の手順を示すフローチャートである。 実施例のデータ書き込み動作の手順を示すフローチャートである。 実施例のデータリードトレース関数の処理手順を示すフローチャートである。 実施例のデータライトトレース関数の処理手順を示すフローチャートである。
符号の説明
100 トレース処理システム
10 情報処理装置
11:CPU、12:プログラムメモリ
20 記憶装置
21〜2n:トレースバッファ
30:入力装置、31:出力装置、32:通信装置
50 リアルタイムモニタ部
60 タスク部
61:ハンドラ、601〜60n:タスク

Claims (2)

  1. プログラムを実行する情報処理装置が、
    前記プログラムの各事象を発生させるための複数のタスクのそれぞれにトレース情報を記録するためのデータ記憶領域を割り当て、
    前記トレース情報の一部として、実行したタスクにおけるデータの読み出し又は書き込み動作による読み出し又は書き込みデータアドレス及びバイト数と、当該動作がブロック転送であるか否かを区別する情報とを前記実行したタスクに対応する前記データ記憶領域に格納し、
    前記動作がブロック転送であるか否かを区別する情報に基づいて、実行したタスクの読み出し又は書き込み動作がデータのブロック転送であるか否かを判定し、
    前記動作がブロック転送であると判定したとき、当該読み出し又は書き込みデータの一部である、前記データ記憶領域に格納するデータの上限値として設定されたバイト数以下のデータを前記実行したタスクのトレース情報として前記実行したタスクに対応する前記データ記憶領域に記録し、
    前記動作がブロック転送でないと判定したとき、当該読み出し又は書き込みデータの全てを前記実行したタスクのトレース情報として前記実行したタスクに対応する前記データ記憶領域に記録することを特徴とするプログラムトレース方法。
  2. プログラムを実行する情報処理装置を備え、
    前記情報処理装置は、
    前記プログラムの各事象を発生させるための複数のタスクのそれぞれにトレース情報を記録するためのデータ記憶領域を有し、
    前記トレース情報の一部として、実行したタスクにおけるデータの読み出し又は書き込み動作による読み出し又は書き込みデータアドレス及びバイト数と、当該動作がブロック転送であるか否かを区別する情報とを前記実行したタスクに対応する前記データ記憶領域へ格納し、
    前記動作がブロック転送であるか否かを区別する情報に基づいて、実行したタスクの読み出し又は書き込み動作がデータのブロック転送であるか否かを判定し、
    前記動作がブロック転送であると判定したとき、当該読み出し又は書き込みデータの一部である、前記データ記憶領域に格納するデータの上限値として設定されたバイト数以下のデータを前記実行したタスクのトレース情報として前記実行したタスクに対応する前記データ記憶領域に記録し、
    前記動作がブロック転送でないと判定したとき、当該読み出し又は書き込みデータの全てを前記実行したタスクのトレース情報として前記実行したタスクに対応する前記データ記憶領域に記録することを特徴とするトレース処理システム。
JP2004070817A 2004-03-12 2004-03-12 プログラムトレース方法およびトレース処理システム Expired - Fee Related JP4527419B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004070817A JP4527419B2 (ja) 2004-03-12 2004-03-12 プログラムトレース方法およびトレース処理システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004070817A JP4527419B2 (ja) 2004-03-12 2004-03-12 プログラムトレース方法およびトレース処理システム

Publications (2)

Publication Number Publication Date
JP2005258889A JP2005258889A (ja) 2005-09-22
JP4527419B2 true JP4527419B2 (ja) 2010-08-18

Family

ID=35084526

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004070817A Expired - Fee Related JP4527419B2 (ja) 2004-03-12 2004-03-12 プログラムトレース方法およびトレース処理システム

Country Status (1)

Country Link
JP (1) JP4527419B2 (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01113841A (ja) * 1987-10-28 1989-05-02 Hitachi Ltd マルチタスクデバツグ機構
JPH0223434A (ja) * 1988-07-12 1990-01-25 Nec Corp マルチタスクトレース方式
JPH0266668A (ja) * 1988-09-01 1990-03-06 Nec Corp マルチプロセツサバスのデータトレース方法
JPH04337848A (ja) * 1991-05-15 1992-11-25 Mitsubishi Electric Corp 計算機システム
JP2001184212A (ja) * 1999-12-24 2001-07-06 Mitsubishi Electric Corp トレース制御回路
JP2002251299A (ja) * 2001-02-26 2002-09-06 Nec Corp プログラムトレース装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01113841A (ja) * 1987-10-28 1989-05-02 Hitachi Ltd マルチタスクデバツグ機構
JPH0223434A (ja) * 1988-07-12 1990-01-25 Nec Corp マルチタスクトレース方式
JPH0266668A (ja) * 1988-09-01 1990-03-06 Nec Corp マルチプロセツサバスのデータトレース方法
JPH04337848A (ja) * 1991-05-15 1992-11-25 Mitsubishi Electric Corp 計算機システム
JP2001184212A (ja) * 1999-12-24 2001-07-06 Mitsubishi Electric Corp トレース制御回路
JP2002251299A (ja) * 2001-02-26 2002-09-06 Nec Corp プログラムトレース装置

Also Published As

Publication number Publication date
JP2005258889A (ja) 2005-09-22

Similar Documents

Publication Publication Date Title
US20080016415A1 (en) Evaluation system and method
EP2733613B1 (en) Controller and program
JP5359601B2 (ja) ダンプ出力制御装置、ダンプ出力制御プログラム、ダンプ出力制御方法
JP2001236483A (ja) 携帯可能電子装置
US8464016B2 (en) Method and device for switching over in a memory for a control device
US6279104B1 (en) Debugging system for parallel processed program and debugging method thereof
JP4527419B2 (ja) プログラムトレース方法およびトレース処理システム
JP4764034B2 (ja) 携帯可能電子装置、icカードおよび携帯可能電子装置の自己診断方法
CN111221701A (zh) 一种芯片及其电路逻辑重构系统
JP2001256044A (ja) データ処理装置
JP5277217B2 (ja) 情報処理装置およびコンピュータープログラム
JP7102883B2 (ja) アプリケーションプログラム、機能プログラムモジュール
JP2008242592A (ja) メモリ監視回路、情報処理装置、及びメモリ監視方法
JP3130798B2 (ja) バス転送装置
JP2003099333A (ja) フラッシュメモリ管理システム
JP3129889B2 (ja) 数値制御装置
JP3399741B2 (ja) ダンプデータの表示方法及び障害解析システム
JPH0478938A (ja) コンピュータ運用支援システム
JPH11119992A (ja) ファームウェアのトレース制御装置
JP2954006B2 (ja) エミュレーション装置およびエミュレーション方法
US20180004246A1 (en) Computer System
JPS61285554A (ja) 履歴情報記憶装置
JPH05204710A (ja) イベントトレース装置
JPH06332508A (ja) プログラマブルコントローラ
JP2005327175A (ja) インサーキットエミュレータ装置およびスタックアクセス異常検知方法

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20060407

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070213

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080430

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091126

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100219

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100420

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100517

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100603

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

Free format text: PAYMENT UNTIL: 20130611

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees