(57)【要約】【課題】  シミュレート時の実行時間がターゲット装置の動作に影響を与えることなく、ターゲットプログラムのデバックが行えるシミュレータプログラム及びシミュレータ装置を提供する。【解決手段】  ターゲットモデル１１０を動作させるターゲットプログラムと、ターゲットプログラムに組み込まれたダミー関数に対してブレークポイントを設定するブレークポイント設定手段１０４と、ブレークポイントがダミー関数に対応するブレークポイントであるか否かを識別するブレークポイント識別手段１０３と、ブレークポイントがダミー関数に対応する場合に、ダミー関数に渡された引数を取り出す引数取出手段１０５ａと、引数に基づくダミー関数に該当すると共にホストＯＳ２００上で動作する関数を実行させる関数実行手段１０５とを備えている。【選択図】    図１
2011048625.tif 000002
【特許請求の範囲】
【請求項１】
ホスト上で動作し、ターゲットモデルの動作をシミュレートするシミュレータプログラムであって、
前記ターゲットモデルを動作させるターゲットプログラムと、
前記ターゲットプログラムに組み込まれたダミー関数に対してブレークポイントを設定するブレークポイント設定手段と、
前記ブレークポイントが前記ダミー関数に対応するブレークポイントであるか否かを識別するブレークポイント識別手段と、
前記ブレークポイントが前記ダミー関数に対応する場合に、前記ダミー関数に渡された引数を取り出す引数取出手段と、
前記引数に基づくダミー関数に該当すると共に前記ホストＯＳ上で動作する関数を実行させる関数実行手段と
を備えることを特徴とするシミュレータプログラム。
【請求項２】
前記ダミー関数に対応する関数名とアドレスを記憶するシンボルテーブルを備え、該シンボルテーブルを参照して、前記ダミー関数に対応するブレークポイントを識別することを特徴とする請求項１に記載のシミュレータプログラム。
【請求項３】
前記ホストＯＳ上で動作する関数の実行中は、前記ターゲットプログラムの実行を停止させることを特徴とする請求項１または請求項２に記載のシミュレータプログラム。
【請求項４】
前記ダミー関数は、文字表示、文字入力、ファイル操作の何れかを含むことを特徴とする請求項１乃至請求項３の何れかに記載のシミュレータプログラム。
【請求項５】
前記ターゲットモデルは、プリンタに対応することを特徴とする請求項１乃至請求項４の何れかに記載のシミュレータプログラム。
【請求項６】
前記ターゲットモデルは、スキャナに対応することを特徴とする請求項１乃至請求項４の何れかに記載のシミュレータプログラム。
【請求項７】
前記ターゲットモデルは、ファックスに対応することを特徴とする請求項１乃至請求項４の何れかに記載のシミュレータプログラム。
【請求項８】
前記ターゲットモデルは、複写機に対応することを特徴とする請求項１乃至請求項４の何れかに記載のシミュレータプログラム。
【請求項９】
請求項１乃至請求項８の何れかに記載のシミュレータプログラムを搭載して成ることを特徴とするシミュレータ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの不具合を調査するためのシミュレータプログラム及びシミュレータ装置に関するものである。
【背景技術】
【０００２】
従来、ターゲット装置（デバッグ対象の装置）のプログラムをデバッグする方法として、例えば、特許文献１が提案されている。特許文献１には、ターゲットプログラム内部にデバッグ情報を表示するための例外プログラムを組み込んでおくと共に、該ターゲットプログラムの、デバッグ情報を表示したいアドレスの命令を上記例外プログラムに強制分岐させる強制分岐命令に置き換えておき、ターゲットプログラムの処理が進行して、例外プログラムのアドレスに達すると、例外プログラムの処理を実行させてデバッグ情報を表示すると共に、表示終了後は、上記強制分岐命令を本来の命令に戻してプログラムを継続・実行するようにした技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−４０１３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１のデバッグ方法では、ターゲットプログラムに本来必要でないデバッグ情報表示用の例外プログラムを組み込み、該例外プログラムをターゲットプログラム上で動作させることになるため、デバッグ時には、例外プログラムの実行時間が影響してターゲットプログラムが実機と異なるタイミングで動作することになり、実機で発生した不具合をデバッグ時に再現することが難しいという問題があった。
【０００５】
本発明は、上記問題に鑑みなされたもので、シミュレート時の実行時間がターゲット装置の動作に影響を与えることなく、ターゲットプログラムのデバックが行えるシミュレータプログラム及びシミュレータ装置を提供することを目的としている。
【課題を解決するための手段】
【０００６】
すなわち、本発明は、ホスト上で動作し、ターゲットモデルの動作をシミュレートするシミュレータプログラムであって、上記ターゲットモデルを動作させるターゲットプログラムと、上記ターゲットプログラムに組み込まれたダミー関数に対してブレークポイントを設定するブレークポイント設定手段と、上記ブレークポイントが上記ダミー関数に対応するブレークポイントであるか否かを識別するブレークポイント識別手段と、上記ブレークポイントが上記ダミー関数に対応する場合に、上記ダミー関数に渡された引数を取り出す引数取出手段と、上記引数に基づくダミー関数に該当すると共に上記ホストＯＳ上で動作する関数を実行させる関数実行手段とを備えることを特徴としている。
【発明の効果】
【０００７】
本発明によれば、ターゲットプログラムに組み込まれたダミー関数に基づくシミュレート動作をホストＯＳ上で実行させるようにしたので、ホストＯＳ上で動作する関数の実行時間が実際のターゲット装置の動作とタイミングに影響を与えることはなく、よって、ターゲットプログラムのデバック作業を効率的に進めることができる。
【図面の簡単な説明】
【０００８】
【図１】実施例１によるシミュレータプログラムの構成を示すブロック図である。
【図２】ダミー関数対応ブレークポイントリストの例を示す図である。
【図３】メモリモデルとホストＯＳアドレス空間の関係を示す図である。
【図４】実施例１によるシミュレータプログラムの動作を示すフローチャートである。
【図５】実施例２によるシミュレータプログラムの構成を示す図である。
【図６】本発明に係るシミュレータ装置を示す図である。
【発明を実施するための形態】
【０００９】
先ず、図６を用いて、本発明に係るシミュレータ装置（シミュレータプログラム１００が搭載され、該プログラムを動作させる装置）の実施形態を説明する。
【００１０】
図６は、本発明によるシミュレータ装置を示す図である。
図示のように、本実施形態のシミュレータ装置７００は、ターゲット装置（例えば、プリンタ）６００に組み込まれた制御プログラム（ターゲットプログラム）をデバッグするために、実際のターゲット装置６００の代わりに、ホストコンピュータ（ホスト）２１０上で起動してプリンタの動作を模擬する、シミュレータプログラム１００を用いて構成されている。
尚、シミュレータプログラム１００には、ターゲット装置６００の部品であるＣＰＵやメモリ等の部品モデルで構成されたターゲットモデル１１０が含まれている。
【実施例１】
【００１１】
次に、上記シミュレータプログラム１００につき、図１に基づいて、実施例１の構成を説明する。図１は、実施例１によるシミュレータプログラム１００の構成を示すブロック図である。
シミュレータプログラム１００は、上記ホストコンピュータ２１０が搭載するＯＳ（ホストＯＳ２００）上で動作するプログラムであって、図１に示すように、プリンタ６００の代わりとなるターゲットモデル１１０と、このターゲットモデル１１０の動作を管理するシミュレータ制御部１０１とで構成されている。
【００１２】
上記ターゲットモデル１１０は、さらに、プリンタ６００の各部品に対応するＣＰＵモデル１１１（ＣＰＵレジスタモデル１１２を含む）とメモリモデル１１３を有する。
【００１３】
メモリモデル１１３には、ターゲットモデル１１０の処理を実行するターゲットプログラムが格納されている。
例えば、図１によれば、メモリモデル１１３の０ｘ２０００番地（０ｘは１６進表示を示す）には、ホストＯＳ２００に実装されている関数ｐｒｉｎｔｆを用いて“Ｈｅｌｌｏ”の文字列を表示させるためのプログラムｐｒｉｎｔｆ（“Ｈｅｌｌｏ”）；が格納され、０ｘ４０００番地には、文字列“Ｈｅｌｌｏ”が格納され、０ｘ１００４番地には、ホストＯＳ２００の関数ｐｒｉｎｔｆを呼び出すためのダミー関数として関数ｐｒｉｎｔｆが、また０ｘ１０００番地には関数ｆｏｐｅｎが格納されている。
これらは、ターゲットモデル１１０のシミュレーション用にターゲットプログラム中に予め組み込まれたものである。
【００１４】
尚、上記ターゲットプログラムは、ターゲットプログラムファイル５００に格納されており、後述するメモリモデル１１３の初期化時に、メモリモデル１１３の所定のアドレス空間にローディングされるようになっている。
【００１５】
上記シミュレータ制御部１０１は、ダミー関数対応ブレークポイントリスト１０２、ダミー関数対応ブレーク判定部（ブレークポイント識別手段）１０３、ブレークポイント設定部（ブレークポイント設定手段）１０４、ホストＯＳ関数呼出部（関数実行手段）１０５等で構成されている。
【００１６】
ダミー関数対応ブレークポイントリスト１０２には、ブレークポイントが設定されたアドレスと、このアドレスに対応するホストＯＳ関数に関する情報が格納されている。
例えば、図２に示すダミー関数対応ブレークポイントリスト１０２によれば、メモリモデル１１３内のダミー関数ｐｒｉｎｔｆに対して０ｘ１００４番地が設定され、ダミー関数ｆｏｐｅｎ（ファイルオープン）に対して０ｘ１０００番地が設定され、ダミー関数ｆｃｌｏｓｅ（ファイルクローズ）に対しては、０ｘ１００８番地が設定されている。
【００１７】
ダミー関数対応ブレーク判定部１０３は、ＣＰＵモデル１１１が上記したブレークポイントで動作を停止した時に、このブレークポイントがダミー関数対応のブレークポイントであるか識別する機能部である。
【００１８】
ブレークポイント設定部１０４は、ダミー関数に対してブレークポイントを設定する機能部で、設定されたダミー関数対応ブレークポイントは、上記ダミー関数対応ブレークポイントリスト１０２に登録される。
【００１９】
ホストＯＳ関数呼出部１０５は、ダミー関数対応ブレークポイントに対応するＯＳ関数を呼び出す機能部で、ＣＰＵレジスタモデル１１２よりホストＯＳ関数に応じた引数を取り出して変数Ａに格納する引数取出処理部（引数取出手段）１０５ａと、この変数ＡをホストＯＳ２００上のアドレスに変換するアドレス変換処理部１０５ｂとを有する。
【００２０】
また、上記の他、ホストＯＳ２００は、標準入出力関数を有し、標準入出力として、コンソール３００（表示装置やキーボード等）やファイル４００を備えており、これらの入出力に対して文字入出力やデータ入出力等の処理を実行する。
【００２１】
ここで、ターゲットプログラムがメモリモデル１１３内にローディングされた時のメモリモデル１１３とホストＯＳアドレス空間の関係を図３に示す。
尚、ホストＯＳアドレス空間内には、メモリモデル１１３のメモリ領域と同じ容量の領域が確保されており、その位置は、シミュレータプログラム１００を起動する度に変わることもある。
【００２２】
図３の例では、メモリモデル１１３の容量を０ｘ１００００とし、このメモリエリアがホストＯＳアドレス空間内の０ｘ８ＦＦＦ００００番地に確保されている。
従って、上記文字列“Ｈｅｌｌｏ”は、ターゲットモデル１１０上では、メモリモデル１１３のアドレス０ｘ４０００番地に、バイナリーコードで０ｘ４８、０ｘ６５、０ｘ６Ｃ、０ｘ６Ｆ、０ｘ００の順で格納されているが、ホストＯＳ２００上のアドレス空間では、０ｘ８ＦＦＦ４０００番地に格納されることになる。
【００２３】
また、ダミー関数呼び出しプログラム「ｐｒｉｎｔｆ（“Ｈｅｌｌｏ”）；」は、ターゲットモデル１１０上では、メモリモデル１１３のアドレス０ｘ２０００番地に、バイナリーコードで０ｘＦ７、０ｘＦＦ、０ｘＦＦ、０ｘＦＦの順で格納されているが、ホストＯＳ２００上のアドレス空間では、０ｘ８ＦＦＦ２０００番地に格納されることになり、また、ダミー関数ｐｒｉｎｔｆは、メモリモデル１１３のアドレス０ｘ１００４番地に、バイナリーコードで０ｘ４７、０ｘ７０の順で格納されているが、ホストＯＳ２００上のアドレス空間では０ｘ８ＦＦＦ１００４番地に格納されることになる。
尚、バイナリーコードとは、プログラムコンパイル後の２進コードのことである。
【００２４】
ここで、ダミー関数呼び出しプログラム「ｐｒｉｎｔｆ（“Ｈｅｌｌｏ”）；」のバイナリーコードは、ＡＲＭ社のＣＰＵの命令コード「ＢＬ  ０ｘ０００００００４」に相当し、ダミー関数ｐｒｉｎｔｆのバイナリーコードは、同じくＡＲＭ社のＣＰＵの命令コード「ＢＸ  ＬＲ」に相当する。
【００２５】
次に、図４に基づき、図１、図２を参照して、実施例１の動作を説明する。図４は、実施例１よるシミュレータプログラム１００の動作を示すフローチャートである。
ここで、図４中のステップＳ１〜Ｓ４、Ｓ９〜Ｓ１５は、シミュレータ制御部１０１での処理であり、ステップＳ５〜Ｓ８は、ターゲットモデル１１０での処理である。
【００２６】
先ず、ホストＯＳ２００上でシミュレータプログラム１００を起動すると、図４のステップＳ１にて、シミュレータ制御部１０１は、ターゲットモデル１１０の初期化処理を実行する。
この初期化処理により、ターゲットプログラムファイル５００に格納されているターゲットプログラムがメモリモデル１１３内にローディングされ、メモリモデル１１３内の所定のメモリ領域に書き込まれる（図１）。
【００２７】
次に、ステップＳ２にて、ブレークポイント設定部１０４は、ターゲットプログラムに予め組み込まれているダミー関数に対してブレークポイントを設定する。
この時、ターゲットプログラムで使用するホストＯＳ関数を予め決めておき、且つ、配置するメモリモデル１１３上のメモリ番地も固定しておくと良い。
【００２８】
次に、ステップＳ３にて、ブレークポイント設定部１０４は、先のステップＳ２において設定されたブレークポイントのアドレスと、これに対応するホストＯＳ関数を格納するダミー関数対応ブレークポイントリスト１０２を作成する。
【００２９】
次に、ステップＳ４にて、シミュレータ制御部１０１は、ターゲットモデル１１０に対して電源投入信号を通知し、以降、処理はターゲットモデル１１０側に移行する。
【００３０】
ターゲットモデル１１０に上記電源投入信号が通知されると、ターゲットモデル１１０において電源投入シーケンスが開始され、ステップＳ５にて、実機の場合と同様、ターゲットモデル１１０のリセット処理が実行されて、ＣＰＵモデル１１１が起動する。これより、ＣＰＵモデル１１１によるターゲットプログラムの実行が開始する。
【００３１】
次に、ステップＳ６にて、ＣＰＵモデル１１１は、これから実行するターゲットプログラムのコマンドについて、ブレークポイントが設定されているか否かを判定し、ブレークポイントが設定されていると判断すると、処理はステップＳ９に移行し、後述するシミュレータ制御部１０１でのシミュレート処理を実行する。
【００３２】
他方、先のステップＳ６の判定で、ブレークポイントが設定されていないと判断すると、ステップ７にて、ＣＰＵモデル１１１は、メモリモデル１１３からターゲットプログラムを読み込み、読み込んだコマンドを実行する。
【００３３】
次に、ステップＳ８にて、この時に実行されたコマンドの実行時間をシミュレーション時間に加算する。コマンドの実行時間は、ＣＰＵの動作クロック周波数やコマンドの種類（例えば、ロード命令、ストア命令等）等によって変わる。
【００３４】
ステップＳ６の判定処理でブレークポイントが発見されるまで上記処理を繰り返し実行し、この間、ＣＰＵモデル１１１は、順次ターゲットプログラムを読み込んでコマンドを実行し、コマンド実行後は次のステップＳ７でシミュレーション時間を更新していく。
この状態でのシミュレーション時間は、実機（実際のターゲット装置６００）での実行時間と同じである。
【００３５】
ＣＰＵモデル１１１が順次ターゲットプログラムを実行して行くことにより、プログラムカウンタが更新し、ダミー関数呼び出しプログラム「ｐｒｉｎｔｆ（“Ｈｅｌｌｏ”）；」（図１）が組み込まれたプログラムアドレスに達することになる。但し、この時点でのステップＳ６の判定では、まだブレークポイントは発見されない。
【００３６】
次に、ステップ７にて、「ｐｒｉｎｔｆ（“Ｈｅｌｌｏ”）；」に相当するコマンドを実行すると、ＣＰＵモデル１１１は、自身のプログラムカウンタをダミー関数ｐｒｉｎｔｆが配置されたアドレス０ｘ１００４番地（図１）に変更し、次のステップＳ８にて、シミュレーション時間を更新した後、処理をステップＳ６の判定に移行する。
【００３７】
プログラムカウンタ０ｘ１００４番地には、先のステップＳ２にてブレークポイントが設定されているため、ステップＳ６の判定の結果、処理はシミュレータ制御部１０１側のステップＳ９に移行する。これより、ＣＰＵモデル１１１によるターゲットプログラムの実行は、一旦停止する。
【００３８】
ステップＳ９にて、ダミー関数対応ブレーク判定部１０３は、ダミー関数対応ブレークポイントリスト１０２（図２）を参照して、先のステップＳ６で発見されたブレークポイントがダミー関数対応ブレークポイントであるか否かを判定する。
【００３９】
この判定で、ブレークポイントがダミー関数対応ブレークポイントではないと判断された場合、すなわち、発見したブレークポイントのアドレスがダミー関数対応ブレークポイントリスト１０２に存在しない場合は、該ブレークポイントは、ユーザがコンソール３００より設定したブレークポイントであると認識し、ステップＳ１４にて、ユーザコマンド処理を実行する。
【００４０】
ステップ１４のユーザコマンド処理では、例えば、ターゲットプログラムの所望のアドレスにおける、ＣＰＵモデル１１１のレジスタやメモリの状態を表示する。ユーザは、これらの表示よりプログラムの進行状況を確認することができる。
【００４１】
ユーザコマンド実行後は、再度処理をターゲットモデル１１０に移行し、ステップ７にて、先のブレークポイントにより停止した状態となっているコマンドから処理を再開する。
【００４２】
また、ユーザが設定したブレークポイントが、デバッグ終了のためのブレークポイントであれば、ステップＳ１５の判定で、シミュレータプログラムの実行を終了する。
【００４３】
他方、先のステップＳ９の判定で、先のステップＳ６で発見したブレークポイントがダミー関数対応ブレークポイントであると判断された場合、すなわち、発見したブレークポイントのアドレスがダミー関数対応ブレークポイントリスト１０２に存在する場合は、ホストＯＳ関数呼出部１０５において以下の処理を実行する。
【００４４】
先ず、ステップＳ１０にて、引数取出処理部１０５ａは、ダミー関数対応ブレークポイントリスト１０２を参照し、該ダミー関数対応ブレークポイントが、どのホストＯＳ関数を呼び出すダミー関数に対応しているかを調べ、ＣＰＵレジスタモデル１１２を参照しながら引数を取り出して変数Ａに格納する。
【００４５】
図１の場合は、ＣＰＵレジスタモデル１１２には、文字列“Ｈｅｌｌｏ”の格納アドレス０ｘ４０００が引数として格納されており、引数取出処理部１０５ａは、該アドレスを引数として取り出して変数Ａに格納する。
【００４６】
次に、ステップＳ１１にて、アドレス変換処理部１０５ｂは、先のステップＳ１０にて変数Ａに格納したメモリモデル１１３上のアドレスをホストＯＳ２００上のアドレスに変換して変数ＡＡに格納する。
図１の場合では、アドレス０ｘ４０００をアドレス０ｘ８ＦＦＦ４０００に変換して変数ＡＡに格納する（図３）。
【００４７】
次に、ステップＳ１２にて、ホストＯＳ呼び出し処理が実行される。
この際、先のステップＳ１１で変換されたホストＯＳ２００上のアドレスがホストＯＳ呼び出し時の引数として渡され、次のステップＳ１３にて、ホストＯＳ関数を実行する。
これにより、ホストＯＳ２００は、渡された引数の値に従って処理を行うが、この時は、ホストＯＳ上で通常のアプリケーションがこの引数を伴った関数を呼び出した時と同じように動作する。
【００４８】
図１の場合は、ホストＯＳ関数呼出部１０５は、ｐｒｉｎｔｆ（ＡＡ）；として変数ＡＡを渡している。変数ＡＡには、文字列“Ｈｅｌｌｏ”のホストＯＳ上の格納アドレス０ｘ８ＦＦＦ４０００が格納されている。
【００４９】
以上のように、ターゲットプログラム内で呼び出されたホストＯＳ関数は、シミュレータプログラム１００を介して、ホストＯＳ２００上で実行されたことになる。
【００５０】
ステップＳ１３でホストＯＳ関数を実行した後、処理はホストＯＳ２００からターゲットモデル１１０側に移行し、ステップＳ７にて、ブレークポイントの設定で実行を停止しているコマンドの実行を開始する。
【００５１】
図１の場合は、ダミー関数として、関数ｐｒｉｎｔｆと関数ｆｏｐｅｎが「｛ｒｅｔｕｒｎ；｝」で示されており、従って、ＡＲＭ  ＣＰＵの「ＢＸ  ＬＲ」に相当するバイナリーコード０ｘ４７、０ｘ７０がステップＳ７で実行されるコマンドとなる。
【００５２】
次に、ステップＳ８にて、上記ｒｅｔｕｒｎコマンドの実行時間をシミュレーション時間に加算する。
【００５３】
以上、実施例１によれば、ターゲットプログラム内にホストＯＳ関数に対応するダミー関数を組み込むと共に、該ダミー関数にブレークポイントを設定し、ターゲットプログラムからホストＯＳ関数を呼び出すことにより、このダミー関数対応ブレークポイントにおいて、処理はターゲットモデル１１０からシミュレータ制御部１０１に移行し、ホストＯＳ関数呼出部１０５を介してホストＯＳ関数を呼び出して、該ホストＯＳ関数をホストＯＳ上で実行することが可能になる。
【００５４】
この結果、シミュレータ制御部１０１がホストＯＳ関数を呼び出している間は、ターゲットモデル１１０でのプログラムの実行は停止しており、シミュレーション時間は更新されない。
従って、ホストＯＳ関数の実行のためにターゲットモデル１１０で費やされる時間は０であり、この実行時間が、実機での動作やタイミングに影響してデバック作業に支障を来すという問題は生じない。よって、ユーザは、ターゲットプログラムのデバッグ作業を効率良く進めることができる。
【実施例２】
【００５５】
次に、図５に基づいて、実施例２の構成を説明する。図５は、実施例２によるシミュレータプログラム１００の構成を示す図である。
実施例２によるシミュレータプログラム１００の構成は、実施例１（図１）とほぼ同じであるが、シミュレータ制御部１０１に、新たにシンボルテーブル管理部１０６とアドレス変換部１０４ａが追加された点と、実施例１のターゲットプログラムファイル５００に替えて、ターゲットプログラムと該ターゲットプログラムに組み込まれたデバッグシンボル情報を格納したターゲットプログラムファイル５００ａを備える点が相違している。
以下、実施例１と相違する部分について説明する。
【００５６】
上記シンボルテーブル管理部１０６は、ターゲットプログラムファイル５００ａからデバッグシンボル情報を抽出して、シンボル名とアドレスを管理する機能部である。シンボル名は、これに対応するアドレスと共にテーブル形式で管理される。
【００５７】
上記アドレス変換部１０４ａは、シンボルテーブル管理部１０６のシンボルテーブルで管理されるシンボル名よりアドレス情報を取得する機能部である。
【００５８】
また、本実施例の場合、メモリモデル１１３のメモリマップは、以下のようになっている。
例えば、メモリモデル１１３の０ｘ２０００番地には、文字列“Ｈｅｌｌｏ”を表示するためのプログラムｐｒｉｎｔｆ（“Ｈｅｌｌｏ”）；が格納され、０ｘ４０００番地には、文字列“Ｈｅｌｌｏ”が格納され、０ｘ３０２４番地には、ホストＯＳ２００の関数ｐｒｉｎｔｆを呼び出すためのダミー関数ｐｒｉｎｔｆが、また０ｘ３０２０番地にはダミー関数ｆｏｐｅｎが格納されている。
このように、本実施例では、ダミー関数ｐｒｉｎｔｆとダミー関数ｆｏｐｅｎについては、実施例１（図１）と異なるアドレスが設定されている。
【００５９】
次に、実施例２の動作を説明する。実施例２の動作は、実施例１（図４）とほぼ同様であるが、図４におけるステップＳ１、Ｓ２の処理内容が実施例１と相違している。
以下、図４を参照して実施例１との相違部分について説明する。
【００６０】
先ず、ホストＯＳ２００上でシミュレータプログラム１００を起動すると、ステップＳ１にて、シミュレータ制御部１０１は、ターゲットモデル１１０の初期化処理を実行する。
この初期化処理により、ターゲットプログラムファイル５００ａに記録されているターゲットプログラムがメモリモデル１１３にローディングされ、メモリモデル１１３内（図５）にターゲットプログラムが書き込まれる。
【００６１】
同時に、シンボルテーブル管理部１０６は、ターゲットプログラムファイル５００ａに格納されているデバッグシンボル情報からシンボルテーブルを取得する。このシンボルテーブルには、ｐｒｉｎｔｆ：０ｘ３０２４、ｆｏｐｅｎ：０ｘ３０２０というように、シンボル名とこれに対応したアドレスが記述されている（図５）。
【００６２】
ターゲットモデル１１０の初期化処理が終了すると、次に、ステップＳ２にて、ブレークポイント設定部１０４は、シンボルテーブル管理部１０６のシンボルテーブルを参照してダミー関数のシンボルを探し出し、これに対応するアドレスにブレークポイントを設定する。
ブレークポイントを設定したアドレスは、対応するホストＯＳ関数とともにダミー関数対応ブレークポイントリスト１０２に登録する。
【００６３】
ブレークポイント設定後の動作は実施例１と同様である。
【００６４】
以上、実施例２によれば、ダミー関数に対応するシンボル名とそのアドレスを対応付けて管理するシンボルテーブル管理部１０６を備えるので、実施例１のように、ダミー関数の配置位置を固定するのではなく、ターゲットモデルのアドレス空間の如何なる位置にも配置可能となる。
これにより、ユーザは、ダミー関数の配置位置を意識せずにターゲットプログラムを作成することができる。
【産業上の利用可能性】
【００６５】
本実施形態では、ターゲット装置としてプリンタを説明したが、プリンタに限らず、スキャナ、ファックス、複写機等を始めとして、ＣＰＵを搭載したあらゆる電子機器に適応可能である。
【符号の説明】
【００６６】
１００  シミュレータプログラム
１０３  ダミー関数対応ブレーク判定部（ブレークポイント識別手段）
１０４  ブレークポイント設定部（ブレークポイント設定手段）
１０５  ホストＯＳ関数呼出部（関数実行手段）
１０５ａ  引数取出処理部（引数取出手段）
１１０  ターゲットモデル
２００  ホストＯＳ
２１０  ホストコンピュータ（ホスト）
６００  プリンタ（ターゲット装置）
７００  シミュレータ装置
【図１】
2011048625.tif 000003
【図２】
2011048625.tif 000004
【図３】
2011048625.tif 000005
【図４】
2011048625.tif 000006
【図５】
2011048625.tif 000007
【図６】
2011048625.tif 000008