(57)【要約】【課題】制御プログラム実行時の特定の実行位置での対象変数等の値をソースコード上に存在するものに限らず一度に確認することが可能な情報処理装置を提供する。【解決手段】アクセス位置管理部１０２ａが、ユーザが指定した制御プログラムのソースコードにおけるアクセス位置と、トレースすべきアクセス対象に対して、ＣＰＵシミュレータ１０１ａから実行中の制御プログラムのＰＣを受領し、該ＰＣと指定されたアクセス位置とを比較し、指定されたアクセス位置の実行タイミングかを判断する。実行タイミングであると判断された場合には、アクセス対象管理部がバスシミュレータ１０１ｄを監視して取得したアクセス対象の値と、実行タイミングに対応するシミュレーション上の時間であるタイムスタンプとを記憶部１０２ｃにトレース情報として記憶し、トレース情報表示部１０３にアクセス対象の値を時系列で表示する。【選択図】図１
2019113952.tif 000002
【特許請求の範囲】
【請求項１】
装置の制御プログラムを実行して、該制御プログラムの動作をシミュレーションする情報処理装置であって、
前記制御プログラムのソースコードにおける位置を指定するアクセス位置指定手段と、
前記制御プログラムの実行によって参照又は更新される情報であって、トレースすべきアクセス対象を指定するアクセス対象指定手段と、
前記アクセス位置指定手段によって指定された前記位置と、前記アクセス対象指定手段によって指定されたアクセス対象とを含むトレース情報を管理するトレース情報管理部と、
前記トレース情報を表示するトレース情報表示部と、
を備え、
前記トレース情報管理部は、
実行中の前記制御プログラムの位置を受領する位置受領手段と、
前記トレース情報に含まれる前記アクセス対象について、前記制御プログラムを実行中の値を取得する値取得手段と、
前記位置受領手段によって取得された実行中の前記制御プログラムの位置と、前記アクセス位置指定手段によって指定された位置とを比較して、該指定された位置の実行タイミングか否かを判断する判断手段と、
前記トレース情報を記憶する記憶手段と、を有し、
前記判断手段によって実行タイミングと判断された場合に、前記値取得手段によって取得された、該実行タイミングにおける前記アクセス対象の値を、前記実行タイミングに対応する前記シミュレーション上の時間を関連付けて、前記トレース情報として前記記憶手段に記憶することを特徴とする情報処理装置。
【請求項２】
制御プログラムが実行される前記装置のターゲットＣＰＵの動作を模擬するＣＰＵシミュレータと、
前記ターゲットＣＰＵによって制御される前記装置の機能の動作を模擬する装置シミュレータと、
前記ターゲットＣＰＵのメモリを模擬するメモリシミュレータと、
前記ＣＰＵシミュレータ、前記装置シミュレータ及び前記メモリシミュレータの間の情報の更新または参照を管理するバスシミュレータと、を有し、
前記位置受領手段は、前記ＣＰＵシミュレータが実行中の前記制御プログラムの位置を更新するごとに、該制御プログラムの位置を取得し、
前記値取得手段は、前記バスシミュレータから前記アクセス対象の値を取得することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記バスシミュレータは、管理する情報について、指定された情報と該情報の更新通知の依頼を受け付け、該指定された情報が更新された場合に、該依頼を受けた通知先に、前記更新通知とともに該指定された情報を通知する機能を有し、
前記トレース情報管理部は、
前記アクセス対象の、前記バスシミュレータに対する更新通知依頼を管理する通知管理手段を有し、
前記通知管理手段は、前記更新通知依頼がなされていない前記トレース情報について、前記バスシミュレータに、更新通知を依頼し、
前記値取得手段は、前記バスシミュレータから前記更新通知とともに通知された情報を取得することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記アクセス対象は、前記制御プログラムのソースコードにおける変数、前記ＣＰＵシミュレータで模擬されるターゲットＣＰＵのレジスタに格納される情報及び前記装置シミ
ュレータで模擬される装置のパラメータの少なくともいずれかを含むことを特徴とする請求項２又は３に記載の情報処理装置。
【請求項５】
前記アクセス対象が前記制御プログラムの所定の範囲で有効な自動変数である場合に、前記アクセス対象指定手段は、該有効な範囲に関する情報も指定し、
前記値取得手段は、実行中の前記制御プログラムが前記有効な範囲内である場合には、該自動変数の値を取得し、前記有効な範囲外である場合は、該自動変数が無効である旨を取得することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記アクセス位置指定手段によって指定される位置は、前記ソースコード上の行番号とファイル名であり、
前記位置受領手段が取得する実行中の制御プログラムの位置は、プログラムカウンタの値であり、
前記判断手段は、前記制御プログラム及び該制御プログラムをコンパイルした際のリンク情報に基づいて、前記ソースコードにおける位置に対応する前記プログラムカウンタの値を取得することを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記トレース情報表示部は、前記アクセス対象の値を時系列に従って表示することを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記トレース情報表示部は、前記シミュレーション停止後に、前記表示を行うことを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記トレース情報表示部は、前記シミュレーション実行中に、前記アクセス対象の値の推移をリアルタイム表示することを特徴とする請求項７に記載の情報処理装置。
【請求項１０】
インストラクションセットシミュレータによって、前記制御プログラムを実行することを特徴とする請求項１乃至９のいずれか１項に記載の情報処理装置。
【請求項１１】
エミュレータによって、前記制御プログラムを実行することを特徴とする請求項１乃至９のいずれか１項に記載の情報処理装置。
【請求項１２】
請求項１乃至１１のいずれか１項に記載の情報処理装置としてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、装置の制御プログラムの動作検証を行う情報処理装置に関するものである。
【背景技術】
【０００２】
装置の制御プログラムの開発においては、制御プログラムを疑似実行しながら変数の値を確認し、意図通りの動作をしているか確認する手法がある。このとき、確認対象の変数を監視式として指定している。
従来は、指定された変数の値をロジックアナライザで観測するように時系列に沿って値を表示させる方法や、所定の位置で制御プログラムを停止させて、その時の変数の値をプログラマが測定するという方法がとられていた。
特許文献１では、プログラムに予め監視タイミングと監視対象を記載し、デバッガで実行すると、外部装置で測定可能な信号を出力しデータをモニタする技術が公開されている。
特許文献２では、トレースログを作成する際、ソースコード上の指定したライン番号、プログラム名、プロセス名、関数名、実行時刻を記録し、ソースコード上に存在するプログラム要素をトレース情報として記録する技術が公開されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許５３１６８１０号公報
【特許文献２】特許５６８６６８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
デバッグを行う場合、デバッグ対象となる制御プログラムに対し、デバッグ作業のための改変を行うべきではない。これはデバッグのために追加したソースコードにより、デバッグ対象の制御プログラムの動作タイミングが変わり、本来の制御プログラムと動作が異なるためである。
また、デバッグのためにモニタすることが望まれる情報は、ソースコード上に存在するプログラム要素に限られない。これに加えて、制御プログラムを実行するＣＰＵの周辺機能を管理する制御レジスタの値や、シミュレータで提供される外部ユニットモデルのパラメータを対象とすることで、効率的なデバッグを行うことができる。
特許文献１の構成では、デバッグ対象の制御プログラムにデバッグ機能を追加するため、デバッグ対象の改変が発生する。さらにモニタする情報を変えるたびにデバッグ対象の変更と再コンパイルが必要となる。
特許文献２の構成では、モニタできる情報はソースコード上に存在するものだけとする制限がある。
【０００５】
本発明の目的は、装置の制御プログラムの動作検証を行い、制御プログラム実行時の特定の実行位置での対象変数等の値をソースコード上に存在するものに限らず一度に確認することが可能な情報処理装置を提供することである。また、本発明の目的は、上記情報処理装置としてコンピュータを機能させるプログラムを提供することである。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明による情報処理装置は、
装置の制御プログラムを実行して、該制御プログラムの動作をシミュレーションする情報処理装置であって、
前記制御プログラムのソースコードにおける位置を指定するアクセス位置指定手段と、
前記制御プログラムの実行によって参照又は更新される情報であって、トレースすべきアクセス対象を指定するアクセス対象指定手段と、
前記アクセス位置指定手段によって指定された前記位置と、前記アクセス対象指定手段によって指定されたアクセス対象とを含むトレース情報を管理するトレース情報管理部と、
前記トレース情報を表示するトレース情報表示部と、
を備え、
前記トレース情報管理部は、
実行中の前記制御プログラムの位置を受領する位置受領手段と、
前記トレース情報に含まれる前記アクセス対象について、前記制御プログラムを実行中の値を取得する値取得手段と、
前記位置受領手段によって取得された実行中の前記制御プログラムの位置と、前記アクセス位置指定手段によって指定された位置とを比較して、該指定された位置の実行タイミングか否かを判断する判断手段と、
前記トレース情報を記憶する記憶手段と、を有し、
前記判断手段によって実行タイミングと判断された場合に、前記値取得手段によって取得された、該実行タイミングにおける前記アクセス対象の値を、前記実行タイミングに対応する前記シミュレーション上の時間を関連付けて、前記トレース情報として前記記憶手段に記憶することを特徴とする。
【０００７】
また、本発明のプログラムは、上記情報処理装置としてコンピュータを機能させることを特徴とする。
【発明の効果】
【０００８】
以上説明したように、本発明によれば、制御プログラム実行時の特定の実行位置での対象変数等の値をソースコード上に存在するものに限らず、一度に確認することが可能になる。
【図面の簡単な説明】
【０００９】
【図１】実施例１における情報処理装置の機能構成図
【図２】実施例１における情報処理装置のハードウェア構成図
【図３】実施例１におけるトレース情報の構成図
【図４】実施例１におけるトレース情報管理部のフローチャート
【図５】実施例１におけるトレース情報表示部の例
【図６】実施例２におけるトレース情報管理部のフローチャート
【図７】実施例３における変数スコープの例
【図８】実施例３におけるトレース情報の構成図
【発明を実施するための形態】
【００１０】
以下に図面を参照して、この発明を実施するための形態を、実施例に基づいて例示的に詳しく説明する。本発明の趣旨を逸脱しない範囲内で実施例の構成を適宜変形したり変更したりすることにより得られる構成も本発明に含まれる。以下の複数の実施例の構成を適宜組み合わせて得られる構成も、本発明に含まれる。また、各実施例における機能および処理はそれぞれ単一のコンピュータ装置で実現してもよいし、必要に応じた複数のコンピュータ装置による分散処理によって実現するようにしてもよい。複数のコンピュータ装置で構成される場合は、互いに通信可能なようにＬｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＡＮ）などで接続されている。あるいは、機能および処理の一部をクラウドコンピューティングによって実現してもよい。
【実施例１】
【００１１】
本発明において情報処理装置は、コンピュータ上でデバッガプログラムを実行することで実現でき、そのハード構成図を図２に示す。図２の本体部２０２のハードディスク２０２ｃには、情報処理装置の各機能を実現するためのプログラムや、模擬対象装置に関する情報を含む各種データが格納される。中央処理部２０２ａは、デバッガプログラムおよび各種データを主記憶部２０２ｂにロードして実行し、これによりコンピュータシステム２０１は情報処理装置として動作する。なお、表示装置２０３は、本体部２０２からの指示により画面表示を行う。また、キーボード２０４は、このコンピュータシステム２０１にユーザの指示や文字情報を入力するためのものである。さらに、マウス２０５は、表示装置２０３上の任意の位置を指定することによりその位置に表示されていたアイコン等に応じた指示を入力するためのものである。
【００１２】
図１は、本実施例における情報処理装置の構成図である。
情報処理装置は、構成部としてシミュレータ部１０１とトレース情報管理部１０２とトレース情報表示部１０３とを備える。
シミュレータ部１０１は、ＣＰＵシミュレータ１０１ａとメモリシミュレータ１０１ｂと装置シミュレータ１０１ｃとバスシミュレータ１０１ｄと、から構成される。ＣＰＵシミュレータ１０１ａは模擬対象装置のＣＰＵ（ターゲットＣＰＵ）の動作を模擬し、制御プログラムをロードするＲＡＭ領域やＣＰＵ動作実行のための特殊レジスタ領域を備える。メモリシミュレータ１０１ｂは主にシミュレータの各種データとコンピュータ上の主記憶部の物理アドレスとの相関を管理し、変数やスタック領域を管理するＲＡＭ領域のデータの変化を模擬する。装置シミュレータ１０１ｃは模擬対象装置の制御部であるターゲットＣＰＵにより制御される各機能の動作を模擬する。バスシミュレータ１０１ｄは、構成部間の情報の更新や参照を管理する。ＣＰＵシミュレータ１０１ａとメモリシミュレータ１０１ｂと装置シミュレータ１０１ｃはそれぞれ情報の更新や参照をバスシミュレータ１０１ｄに対し依頼する。この依頼に基づき、バスシミュレータ１０１ｄはアクセスが必要な情報を管理しているＣＰＵシミュレータ１０１ａ、メモリシミュレータ１０１ｂ、装置シミュレータ１０１ｃのいずれかに対し情報の読出しや書き込みを指示する。
例えば、制御対象装置が画像形成装置である場合は、装置シミュレータは画像形成を行うための各部材の動作を模擬する。すなわちシミュレータ部１０１は、模擬対象装置の制御プログラムを実行して模擬対象装置の各部の制御動作を模擬する。
シミュレータ部１０１は、模擬対象装置のソースコードをコンパイル−リンクした制御プログラムと制御プログラムのリンク情報をＣＰＵシミュレータ１０１ａにロードする。ＣＰＵシミュレータ１０１ａはロードされた制御プログラムに従い順番にＣＰＵ動作を模擬する。ＣＰＵシミュレータ１０１ａは、これに伴い、バスシミュレータ１０１ｄを介しメモリシミュレータ１０２ｂにアクセスしメモリの状態を参照更新し、バスシミュレータ１０１ｄを介し装置シミュレータ１０１ｃにアクセスし装置状態を参照更新する。
バスシミュレータ１０１ｄは、制御プログラムのメモリマップや模擬対象ＣＰＵのデバイス定義ファイルを読み込み、変数シンボルとその情報を管理し、各構成部の相関を管理する。
【００１３】
トレース情報管理部１０２は、アクセス位置管理部１０２ａとアクセス対象管理部１０２ｂと記憶部１０２ｃから構成される。
アクセス位置管理部１０２ａは、ＣＰＵシミュレータ１０１ａが実行中の制御プログラム位置を更新する度に制御プログラム位置（通常プログラムカウンタ、以下ＰＣ）を受領する手段（位置受領手段）を備える。これに加えて、アクセス位置管理部１０２ｂは、ユーザが指定したアクセス位置とＣＰＵシミュレータ１０１ａが実行中の制御プログラム位置を比較し、ユーザが指定したアクセス位置の実行タイミングであることを判断する手段（判断手段）を備える。ここで、ユーザが、制御プログラムのソースコードにおける位置を指定するアクセス位置指定手段の例としては、キーボード２０４又はマウス２０５が挙
げられるが、これに限られない。
アクセス対象管理部１０２ｂ（値取得手段）は、ユーザが指定したアクセス対象の値をバスシミュレータ１０１ｄに対し監視する。ここで、ユーザがアクセス対象を指定するアクセス対象指定手段の例としては、キーボード２０４又はマウス２０５が挙げられるがこれに限られない。
記憶部１０２ｃは、アクセス位置管理部１０２ａが判断したユーザが指定したアクセス位置の実行タイミングである場合、アクセス対象管理部１０２ｂが監視していたバスシミュレータ１０１ｄのアクセス対象の値をアクセス対象名と共に時系列に記憶する。ここでは、記憶部１０２ｃは、記憶手段に対応する。
トレース情報表示部１０３は、ユーザからの指示に従い表示指定されたデータを記憶部１０２ｃから読出し、表示装置に表示する。
【００１４】
図３は、トレース情報管理部１０２においてトレース情報をどのように管理しているかを具体的に説明するものである。トレース情報は、ユーザが指定するアクセス位置およびアクセス位置に該当するＰＣ、ユーザが指定するアクセス対象および該当するアクセス対象の値を指す。本例ではアクセス対象として、グローバル変数の変数シンボル（ｖａｌ１）、装置シミュレータにより模擬されるアクチュエータの一つであるモータの回転速度（ＭＴＲ＿ＳＰＥＥＤ）およびＣＰＵのレジスタ（ＰＳ，ＲＷ４）を指定するものとする。ここでは、装置シミュレータで模擬されるパラメータとして、モータの回転速度（ＭＴＲ＿ＳＰＥＥＤ）を例として説明しているが、これに限られない。また、ＣＰＵシミュレータで模擬されるターゲットＣＰＵのレジスタとしてＰＳ及びＲＷ４を例として説明しているが、これに限られない。
ユーザは、アクセス位置としてソースコード上の行番号をファイル名との組み合わせで指定し、アクセス対象としてシンボル名で指定する。１つのアクセス位置に対し、複数のアクセス対象を指定可能である。さらにアクセス位置とアクセス対象の組合せを複数指定可能である。
アクセス位置管理部１０２ａは、ユーザから指定されたソースコード上の行番号に対し、リンク情報と制御プログラムから該当するＰＣをアクセス位置情報として記憶する。ソースコード１行に対し複数行の実行コードとして実現されている場合は、複数の実行コードのうち一番最初に実行される実行コードに該当するＰＣの値を対象アクセス位置として記憶する。
アクセス対象管理部１０２ｂは、アクセス対象の値の更新をバスシミュレータ１０１ｄに対し監視し、各アクセス対象の値を更新されるたびに現時点の値として記憶する。
【００１５】
図４（ａ）はトレース情報管理部１０２の動作フローである。
トレース情報管理部１０２は、シミュレータ部１０１が制御プログラムをシミュレートしている期間中に次の動作を繰り返し実行する。
Ｓ４０１においてアクセス位置管理部１０２ａはＣＰＵシミュレータ１０１ａからＰＣを更新されたことを通知されると、Ｓ４０２においてＰＣの値がユーザから指定されたアクセス監視位置と合致するかを判断する。複数のアクセス監視位置を指定されている場合は、そのいずれかと合致するかを判断する。
更新されたＰＣとアクセス監視位置とが合致した場合、Ｓ４０３においてアクセス対象管理部１０２ｂが記憶部１０２ｃに通知する情報は次の通りである。すなわち、ユーザが指定したアクセス位置に関連づけられているアクセス対象の値をシミュレーション上のタイムスタンプ（実時間ではなく、シミュレート開始時を０とするシミュレート対象にとっての時間）と要求したアクセス対象名と共に通知する。
Ｓ４０４において、記憶手段は通知されたタイムスタンプとアクセス対象名とアクセス対象の値を関連付けて順次記憶する。
アクセス対象管理部１０２ｂは、上記処理とは並行にアクセス対象の値を記録する図４（ｂ）に示すフローを実行している。
Ｓ４１１において、トレース情報に登録されているアクセス対象の名称を確認する。
Ｓ４１２において、バスシミュレータ１０１ｄにアクセスし、アクセス対象の値を確認する。
Ｓ４１３において、アクセス対象の値を記憶する。
トレース情報に登録されているアクセス対象について、順次上記フローを繰り返す。トレース情報に登録されている全てのアクセス対象について値の記録が終了したら、再びトレース情報の最初に登録されているアクセス対象から順番に値の確認を行う。
【００１６】
トレース情報表示部１０３は、シミュレート停止後に記憶部１０２ｃに記録されたアクセス対象のデータ値を表示部２０３に時系列に数値の羅列やグラフ表示などユーザの指示に従い表示する。図３で示す例を基に説明する。ここでは、図５に、グラフ表示する例を示す。グラフ表示の左部に表示するアクセス対象名を表示する。このとき図３（ａ）に示す変数シンボル名または装置シミュレータ１０１ｃにより模擬されるアクチュエータ名称を用いている。このように、アクセス位置管理部１０２ａにて展開したメモリシミュレータ１０１ｂのメモリ空間上のアドレスや装置シミュレータ１０１ｃのメモリ空間上のアドレスを用いないことで、ユーザに何の情報を示しているかを理解しやすくしている。グラフ表示の右部は時系列に各アドレスのデータ値をプロットしている。実際には、ユーザが指定したアクセス位置（ソースコード上の行番号）を実行する度に記録した離散値であるが、グラフ表示する際には、データ間を補完し連続値であるかのごとく表示することで、ユーザが見やすくする。
ここでは、シミュレーション停止後にトレース情報をグラフ化する手順で説明したが、これに限られない。シミュレーション実行中に、アクセス対象管理部１０２ｂから記憶部１０２ｃにデータを転送する度に、トレース情報表示部１０３にデータを転送し、シミュレーション実行中のデータの推移をリアルタイム表示することも可能である。
表示形態には、ここで説明したグラフだけではなく、メータ表示や数値表示なども採用可能である。どの表示形態を用いるのかはユーザが指定する。指定方法の一例としては、トレース情報表示部１０３がデータ値を表示する画面の一部に表示形態を選択するボタンを複数用意し、ユーザがクリックしたボタンに関連づけられた形態を採用する方法などが考えられる。
なお、ユーザが指定するアクセス位置およびアクセス対象は、シミュレーション実行中にも追加／変更が可能である。アクセス位置管理部１０２ａおよびアクセス対象管理部１０２ｂは、常に最新のユーザ指定内容に基づき処理を行うことが可能なため、シミュレーション実行中に指定内容が変更されても、その内容を常に反映してトレース情報を記録することが可能である。
【００１７】
なお、本実施例ではアクセス位置情報として、ソースコード１行に対し複数行の実行コードとして実現されている場合は、複数の実行コードのうち一番最初に実行される実行コードに該当するＰＣの値を対象アクセス位置として記憶する例を記載した。しかし、複数の実行コードのうち最後の実行コードに該当するＰＣの値を対象アクセス位置として記憶してもよく、さらには、ユーザが複数の実行コードの任意の位置を指定してもよい。
以上、ユーザが指定するアクセス位置およびアクセス対象をトレース情報管理部１０２にて解析し、モニタすることでデバッグ対象のソースコードを改変することなくデバッグすることが可能になる。さらに、ソースコード上のデータだけでなく、装置シミュレータに模擬される各部材のデータをモニタすることも可能となる。
【実施例２】
【００１８】
実施例２では、トレース情報管理部１０２からシミュレータ部１０１に対しアクセス監視対象の更新通知を依頼し、シミュレータ部１０１からの通知をもってトレース情報を管理する形態について説明する。実施例１との違いは、バスシミュレータ１０１ｄとトレース情報管理部１０２の動作となる。その他の動作については実施例１と同じため、本実施
例では説明を割愛する。
実施例２におけるバスシミュレータ１０１ｄは、シミュレータ部１０１の構成要素に限らず、更新通知依頼を通知先と対象情報のセットで受け付け、対象の情報が更新されると値と共に更新通知依頼をうけた通知先に対し通知する。
トレース情報管理部１０２は、ユーザから指定されたアクセス対象について、通知先をアクセス対象管理部１０２ｂに指定してバスシミュレータ１０１ｄに対し更新通知依頼を発行する。
アクセス対象管理部１０２ｂは、バスシミュレータ１０１ｄからの更新通知を受領する度に、通知された値を各アクセス対象の現時点の値として記憶する。
このため、実施例２におけるトレース情報には、バスシミュレータ１０１ｄに対し更新通知依頼をしているか、あるいはしていないかを示す情報が付加されている。
【００１９】
図６（ａ）はトレース情報管理部１０２の動作フローである。
トレース情報管理部１０２は、シミュレータ部１０１が制御プログラムをシミュレートしている期間中に次の動作を繰り返し実行する。
Ｓ６０１においてアクセス位置管理部１０２ａはＣＰＵシミュレータからＰＣを更新されたことを通知されると、Ｓ６０２においてＰＣの値がユーザから指定されたアクセス監視位置と合致するかを判断する。複数のアクセス監視位置を指定されている場合は、そのいずれかと合致するかを判断する。
更新されたＰＣとアクセス監視位置とが合致した場合、Ｓ６０３においてアクセス対象監視部１０２ｂが記憶部１０２ｃに通知する情報は、次の通りである。すなわち、ユーザが指定したアクセス位置に関連づけられているアクセス対象の値をシミュレーション上のタイムスタンプ（実時間ではなく、シミュレート開始時を０とするシミュレート対象にとっての時間）と要求したアクセス対象名と共に通知する。
Ｓ６０４において、記憶部１０２ｃは通知されたタイムスタンプとアクセス対象名とアクセス対象の値を関連付けて順次記憶する。
【００２０】
アクセス対象管理部１０２ｂ（通知管理手段）は、上記処理とは並行にバスシミュレータ１０１ｄに対し更新通知依頼の発行／停止と更新通知を受領した場合のトレース情報の更新を実行している。バスシミュレータ１０１ｄに対し更新通知依頼の発行／停止のフローを図６（ｂ）に、更新通知を受領した場合のトレース情報の更新を図６（ｃ）に示す。
図６（ｂ）について説明する。
トレース情報に複数記録されているアクセス対象の何番目の情報について判断するか設定する情報を初期化する（Ｓ６１１）。
当該情報について、更新通知依頼を発行しているか否かを判断する（Ｓ６１２）。
更新通知を発行していない場合は、バスシミュレータ１０１ｄに対し当該情報の更新通知を依頼するとともに更新通知依頼中であることをトレース情報に記録する（Ｓ６１３）。
複数記録されているアクセス対象の何番目の情報について判断するか設定する情報を更新する（Ｓ６１４）。
複数記録されているアクセス対象の最後の情報について判断していた場合（Ｓ６１５）は、Ｓ６１１に戻る。
上記処理をシミュレーション実行中にも繰り返し行うことで、ユーザがシミュレーション実行中にアクセス対象を追加しても対応することが可能になる。
【００２１】
図６（ｃ）について説明する。
アクセス対象管理部１０２ｂは、バスシミュレータ１０１ｄからの更新通知の受領を監視する（Ｓ６２１）。
更新通知を受領したら、トレース情報のうち、更新通知に付されているアクセス対象名に該当するトレース情報の現在の値を、更新通知に付せられている値で更新する（Ｓ６２
２）。
その後、Ｓ６２１に戻り新たな更新通知の受領を監視する。
【００２２】
本実施例によると、アクセス対象の値が更新されるときのみバスシミュレータ１０１ｄからトレース情報管理部１０２へのアクセスが発生するので、システム上の通信トラフィックを軽減する効果がある。
【実施例３】
【００２３】
本実施例では、実施例２においてアクセス対象が自動変数である例を示す。
自動変数は、プログラムコードのある範囲でのみ有効になる変数で実行時のメモリ上のアドレスが固定されていない。図７に示すように自動変数が有効な範囲をスコープと呼び、スコープが重ならなければ同じ名称を用いることが可能となる。図７における変数ｉ，ｊ，ｋは自動変数である。変数ｉは関数Ａがコールされ関数Ａの実行が終了するまでの期間のみ有効な変数である。変数ｉのメモリアドレスは関数Ａがコールされた際のスタックポインタの示すメモリアドレスから自動的に割り当てられる。従って、予めリンク情報からアドレスを判断することが出来ない。変数ｊは変数ｉ同様に自動変数であり、関数Ｂがコールされ関数Ｂの実行が終了するまでの期間のみ有効な変数である。変数ｋも自動変数であるが、関数Ａの自動変数ｋと関数Ｂの自動変数ｋは、変数名称は同じであるが異なる変数として扱う必要がある。
したがって、ユーザはアクセス対象として自動変数を指定する場合は、その変数が有効なスコープと変数名をセットで指定する必要がある。スコープ名は関数名、ファイル名などが考えられる。
【００２４】
自動変数を対象としたトレース情報を図８に示す。アクセス対象をスコープ名とシンボル名のセットで管理する。トレース情報管理部１０２は、ユーザから指定されたアクセス対象について、通知先をアクセス対象管理部１０２ｂに指定してバスシミュレータ１０１ｄに対し更新通知依頼を発行する。この際、アクセス対象が自動変数の場合は、スコープ名とシンボル名をセットで更新通知依頼を発行する。
バスシミュレータ１０１ｄは、更新通知依頼を受領したアクセス対象が自動変数の場合、スコープ名とシンボル名により更新通知対象となる変数を特定する。そして、対象変数がスコープ外（範囲外）の場合は「シンボルが無効」を、スコープ内（範囲内）になった場合はその値を、スコープ内で値が変更になった場合には変更後の値をアクセス対象管理部１０２ｂに対し通知する。そして、再度スコープ外になった場合には「シンボルが無効」をアクセス対象管理部１０２ｂに対し通知する。ここでは、自動変数が無効である旨の情報の例として「シンボルが無効」について説明しているが、これに限られない。
バスシミュレータ１０１ｄが、如何にして指定された自動変数のスコープを判断するかは一般的なＣＰＵシミュレータにおいて公知であるので割愛する。
記憶部１０２ｃは、バスシミュレータ１０１ｄから「シンボルが無効」を通知された場合、アクセス対象の値として「シンボル名が無効」をそのまま通知されたタイムスタンプとアクセス対象名と共に順次記憶する。
トレース情報表示部１０３は、記憶部１０２ｃに記憶されたアクセス対象の値が「シンボルが無効」である場合、グラフ表示の場合は値を示す線を「シンボルが無効」である期間非表示にしたり、無効になる前の値を維持するなどの表示を行うことが考えられる。数値の羅列で表示する場合には、「シンボルが無効」である場合にはそのまま「シンボルが無効」である旨を文字列で表示することが考えられる。メータ表示の場合には、「シンボルが無効」である期間メータを表示しないことや表示色を変更することが考えられる。ユーザに対し一目で通常の状態と異なることを示すことが可能であれば、表現方法は上記に記載したものに限定されない。
【００２５】
これまで実施例ではＦＷをシミュレーションするためのシミュレータ部としてＩＳＳ（
インストラクションセットシミュレータ）を想定した記述を行っているが、ＩＳＳではなくエミュレータであっても本発明を適用することが可能である。
【符号の説明】
【００２６】
１０２…トレース情報管理部、１０２ａ…アクセス位置管理部、１０２ｂ…アクセス対象管理部、１０２ｃ…記憶部、１０３…トレース情報表示部、２０１…コンピュータシステム、２０３…表示部、２０４…キーボード、２０５…マウス
【図１】
2019113952.tif 000003
【図２】
2019113952.tif 000004
【図３】
2019113952.tif 000005
【図４】
2019113952.tif 000006
【図５】
2019113952.tif 000007
【図６】
2019113952.tif 000008
【図７】
2019113952.tif 000009
【図８】
2019113952.tif 000010