JP2011048625A - シミュレータプログラム及びシミュレータ装置 - Google Patents
シミュレータプログラム及びシミュレータ装置 Download PDFInfo
- Publication number
- JP2011048625A JP2011048625A JP2009196476A JP2009196476A JP2011048625A JP 2011048625 A JP2011048625 A JP 2011048625A JP 2009196476 A JP2009196476 A JP 2009196476A JP 2009196476 A JP2009196476 A JP 2009196476A JP 2011048625 A JP2011048625 A JP 2011048625A
- Authority
- JP
- Japan
- Prior art keywords
- function
- breakpoint
- program
- target
- simulator
- 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
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】 シミュレート時の実行時間がターゲット装置の動作に影響を与えることなく、ターゲットプログラムのデバックが行えるシミュレータプログラム及びシミュレータ装置を提供する。
【解決手段】 ターゲットモデル110を動作させるターゲットプログラムと、ターゲットプログラムに組み込まれたダミー関数に対してブレークポイントを設定するブレークポイント設定手段104と、ブレークポイントがダミー関数に対応するブレークポイントであるか否かを識別するブレークポイント識別手段103と、ブレークポイントがダミー関数に対応する場合に、ダミー関数に渡された引数を取り出す引数取出手段105aと、引数に基づくダミー関数に該当すると共にホストOS200上で動作する関数を実行させる関数実行手段105とを備えている。
【選択図】 図1
【解決手段】 ターゲットモデル110を動作させるターゲットプログラムと、ターゲットプログラムに組み込まれたダミー関数に対してブレークポイントを設定するブレークポイント設定手段104と、ブレークポイントがダミー関数に対応するブレークポイントであるか否かを識別するブレークポイント識別手段103と、ブレークポイントがダミー関数に対応する場合に、ダミー関数に渡された引数を取り出す引数取出手段105aと、引数に基づくダミー関数に該当すると共にホストOS200上で動作する関数を実行させる関数実行手段105とを備えている。
【選択図】 図1
Description
本発明は、プログラムの不具合を調査するためのシミュレータプログラム及びシミュレータ装置に関するものである。
従来、ターゲット装置(デバッグ対象の装置)のプログラムをデバッグする方法として、例えば、特許文献1が提案されている。特許文献1には、ターゲットプログラム内部にデバッグ情報を表示するための例外プログラムを組み込んでおくと共に、該ターゲットプログラムの、デバッグ情報を表示したいアドレスの命令を上記例外プログラムに強制分岐させる強制分岐命令に置き換えておき、ターゲットプログラムの処理が進行して、例外プログラムのアドレスに達すると、例外プログラムの処理を実行させてデバッグ情報を表示すると共に、表示終了後は、上記強制分岐命令を本来の命令に戻してプログラムを継続・実行するようにした技術が開示されている。
しかしながら、特許文献1のデバッグ方法では、ターゲットプログラムに本来必要でないデバッグ情報表示用の例外プログラムを組み込み、該例外プログラムをターゲットプログラム上で動作させることになるため、デバッグ時には、例外プログラムの実行時間が影響してターゲットプログラムが実機と異なるタイミングで動作することになり、実機で発生した不具合をデバッグ時に再現することが難しいという問題があった。
本発明は、上記問題に鑑みなされたもので、シミュレート時の実行時間がターゲット装置の動作に影響を与えることなく、ターゲットプログラムのデバックが行えるシミュレータプログラム及びシミュレータ装置を提供することを目的としている。
すなわち、本発明は、ホスト上で動作し、ターゲットモデルの動作をシミュレートするシミュレータプログラムであって、上記ターゲットモデルを動作させるターゲットプログラムと、上記ターゲットプログラムに組み込まれたダミー関数に対してブレークポイントを設定するブレークポイント設定手段と、上記ブレークポイントが上記ダミー関数に対応するブレークポイントであるか否かを識別するブレークポイント識別手段と、上記ブレークポイントが上記ダミー関数に対応する場合に、上記ダミー関数に渡された引数を取り出す引数取出手段と、上記引数に基づくダミー関数に該当すると共に上記ホストOS上で動作する関数を実行させる関数実行手段とを備えることを特徴としている。
本発明によれば、ターゲットプログラムに組み込まれたダミー関数に基づくシミュレート動作をホストOS上で実行させるようにしたので、ホストOS上で動作する関数の実行時間が実際のターゲット装置の動作とタイミングに影響を与えることはなく、よって、ターゲットプログラムのデバック作業を効率的に進めることができる。
先ず、図6を用いて、本発明に係るシミュレータ装置(シミュレータプログラム100が搭載され、該プログラムを動作させる装置)の実施形態を説明する。
図6は、本発明によるシミュレータ装置を示す図である。
図示のように、本実施形態のシミュレータ装置700は、ターゲット装置(例えば、プリンタ)600に組み込まれた制御プログラム(ターゲットプログラム)をデバッグするために、実際のターゲット装置600の代わりに、ホストコンピュータ(ホスト)210上で起動してプリンタの動作を模擬する、シミュレータプログラム100を用いて構成されている。
尚、シミュレータプログラム100には、ターゲット装置600の部品であるCPUやメモリ等の部品モデルで構成されたターゲットモデル110が含まれている。
図示のように、本実施形態のシミュレータ装置700は、ターゲット装置(例えば、プリンタ)600に組み込まれた制御プログラム(ターゲットプログラム)をデバッグするために、実際のターゲット装置600の代わりに、ホストコンピュータ(ホスト)210上で起動してプリンタの動作を模擬する、シミュレータプログラム100を用いて構成されている。
尚、シミュレータプログラム100には、ターゲット装置600の部品であるCPUやメモリ等の部品モデルで構成されたターゲットモデル110が含まれている。
次に、上記シミュレータプログラム100につき、図1に基づいて、実施例1の構成を説明する。図1は、実施例1によるシミュレータプログラム100の構成を示すブロック図である。
シミュレータプログラム100は、上記ホストコンピュータ210が搭載するOS(ホストOS200)上で動作するプログラムであって、図1に示すように、プリンタ600の代わりとなるターゲットモデル110と、このターゲットモデル110の動作を管理するシミュレータ制御部101とで構成されている。
シミュレータプログラム100は、上記ホストコンピュータ210が搭載するOS(ホストOS200)上で動作するプログラムであって、図1に示すように、プリンタ600の代わりとなるターゲットモデル110と、このターゲットモデル110の動作を管理するシミュレータ制御部101とで構成されている。
上記ターゲットモデル110は、さらに、プリンタ600の各部品に対応するCPUモデル111(CPUレジスタモデル112を含む)とメモリモデル113を有する。
メモリモデル113には、ターゲットモデル110の処理を実行するターゲットプログラムが格納されている。
例えば、図1によれば、メモリモデル113の0x2000番地(0xは16進表示を示す)には、ホストOS200に実装されている関数printfを用いて“Hello”の文字列を表示させるためのプログラムprintf(“Hello”);が格納され、0x4000番地には、文字列“Hello”が格納され、0x1004番地には、ホストOS200の関数printfを呼び出すためのダミー関数として関数printfが、また0x1000番地には関数fopenが格納されている。
これらは、ターゲットモデル110のシミュレーション用にターゲットプログラム中に予め組み込まれたものである。
例えば、図1によれば、メモリモデル113の0x2000番地(0xは16進表示を示す)には、ホストOS200に実装されている関数printfを用いて“Hello”の文字列を表示させるためのプログラムprintf(“Hello”);が格納され、0x4000番地には、文字列“Hello”が格納され、0x1004番地には、ホストOS200の関数printfを呼び出すためのダミー関数として関数printfが、また0x1000番地には関数fopenが格納されている。
これらは、ターゲットモデル110のシミュレーション用にターゲットプログラム中に予め組み込まれたものである。
尚、上記ターゲットプログラムは、ターゲットプログラムファイル500に格納されており、後述するメモリモデル113の初期化時に、メモリモデル113の所定のアドレス空間にローディングされるようになっている。
上記シミュレータ制御部101は、ダミー関数対応ブレークポイントリスト102、ダミー関数対応ブレーク判定部(ブレークポイント識別手段)103、ブレークポイント設定部(ブレークポイント設定手段)104、ホストOS関数呼出部(関数実行手段)105等で構成されている。
ダミー関数対応ブレークポイントリスト102には、ブレークポイントが設定されたアドレスと、このアドレスに対応するホストOS関数に関する情報が格納されている。
例えば、図2に示すダミー関数対応ブレークポイントリスト102によれば、メモリモデル113内のダミー関数printfに対して0x1004番地が設定され、ダミー関数fopen(ファイルオープン)に対して0x1000番地が設定され、ダミー関数fclose(ファイルクローズ)に対しては、0x1008番地が設定されている。
例えば、図2に示すダミー関数対応ブレークポイントリスト102によれば、メモリモデル113内のダミー関数printfに対して0x1004番地が設定され、ダミー関数fopen(ファイルオープン)に対して0x1000番地が設定され、ダミー関数fclose(ファイルクローズ)に対しては、0x1008番地が設定されている。
ダミー関数対応ブレーク判定部103は、CPUモデル111が上記したブレークポイントで動作を停止した時に、このブレークポイントがダミー関数対応のブレークポイントであるか識別する機能部である。
ブレークポイント設定部104は、ダミー関数に対してブレークポイントを設定する機能部で、設定されたダミー関数対応ブレークポイントは、上記ダミー関数対応ブレークポイントリスト102に登録される。
ホストOS関数呼出部105は、ダミー関数対応ブレークポイントに対応するOS関数を呼び出す機能部で、CPUレジスタモデル112よりホストOS関数に応じた引数を取り出して変数Aに格納する引数取出処理部(引数取出手段)105aと、この変数AをホストOS200上のアドレスに変換するアドレス変換処理部105bとを有する。
また、上記の他、ホストOS200は、標準入出力関数を有し、標準入出力として、コンソール300(表示装置やキーボード等)やファイル400を備えており、これらの入出力に対して文字入出力やデータ入出力等の処理を実行する。
ここで、ターゲットプログラムがメモリモデル113内にローディングされた時のメモリモデル113とホストOSアドレス空間の関係を図3に示す。
尚、ホストOSアドレス空間内には、メモリモデル113のメモリ領域と同じ容量の領域が確保されており、その位置は、シミュレータプログラム100を起動する度に変わることもある。
尚、ホストOSアドレス空間内には、メモリモデル113のメモリ領域と同じ容量の領域が確保されており、その位置は、シミュレータプログラム100を起動する度に変わることもある。
図3の例では、メモリモデル113の容量を0x10000とし、このメモリエリアがホストOSアドレス空間内の0x8FFF0000番地に確保されている。
従って、上記文字列“Hello”は、ターゲットモデル110上では、メモリモデル113のアドレス0x4000番地に、バイナリーコードで0x48、0x65、0x6C、0x6F、0x00の順で格納されているが、ホストOS200上のアドレス空間では、0x8FFF4000番地に格納されることになる。
従って、上記文字列“Hello”は、ターゲットモデル110上では、メモリモデル113のアドレス0x4000番地に、バイナリーコードで0x48、0x65、0x6C、0x6F、0x00の順で格納されているが、ホストOS200上のアドレス空間では、0x8FFF4000番地に格納されることになる。
また、ダミー関数呼び出しプログラム「printf(“Hello”);」は、ターゲットモデル110上では、メモリモデル113のアドレス0x2000番地に、バイナリーコードで0xF7、0xFF、0xFF、0xFFの順で格納されているが、ホストOS200上のアドレス空間では、0x8FFF2000番地に格納されることになり、また、ダミー関数printfは、メモリモデル113のアドレス0x1004番地に、バイナリーコードで0x47、0x70の順で格納されているが、ホストOS200上のアドレス空間では0x8FFF1004番地に格納されることになる。
尚、バイナリーコードとは、プログラムコンパイル後の2進コードのことである。
尚、バイナリーコードとは、プログラムコンパイル後の2進コードのことである。
ここで、ダミー関数呼び出しプログラム「printf(“Hello”);」のバイナリーコードは、ARM社のCPUの命令コード「BL 0x00000004」に相当し、ダミー関数printfのバイナリーコードは、同じくARM社のCPUの命令コード「BX LR」に相当する。
次に、図4に基づき、図1、図2を参照して、実施例1の動作を説明する。図4は、実施例1よるシミュレータプログラム100の動作を示すフローチャートである。
ここで、図4中のステップS1〜S4、S9〜S15は、シミュレータ制御部101での処理であり、ステップS5〜S8は、ターゲットモデル110での処理である。
ここで、図4中のステップS1〜S4、S9〜S15は、シミュレータ制御部101での処理であり、ステップS5〜S8は、ターゲットモデル110での処理である。
先ず、ホストOS200上でシミュレータプログラム100を起動すると、図4のステップS1にて、シミュレータ制御部101は、ターゲットモデル110の初期化処理を実行する。
この初期化処理により、ターゲットプログラムファイル500に格納されているターゲットプログラムがメモリモデル113内にローディングされ、メモリモデル113内の所定のメモリ領域に書き込まれる(図1)。
この初期化処理により、ターゲットプログラムファイル500に格納されているターゲットプログラムがメモリモデル113内にローディングされ、メモリモデル113内の所定のメモリ領域に書き込まれる(図1)。
次に、ステップS2にて、ブレークポイント設定部104は、ターゲットプログラムに予め組み込まれているダミー関数に対してブレークポイントを設定する。
この時、ターゲットプログラムで使用するホストOS関数を予め決めておき、且つ、配置するメモリモデル113上のメモリ番地も固定しておくと良い。
この時、ターゲットプログラムで使用するホストOS関数を予め決めておき、且つ、配置するメモリモデル113上のメモリ番地も固定しておくと良い。
次に、ステップS3にて、ブレークポイント設定部104は、先のステップS2において設定されたブレークポイントのアドレスと、これに対応するホストOS関数を格納するダミー関数対応ブレークポイントリスト102を作成する。
次に、ステップS4にて、シミュレータ制御部101は、ターゲットモデル110に対して電源投入信号を通知し、以降、処理はターゲットモデル110側に移行する。
ターゲットモデル110に上記電源投入信号が通知されると、ターゲットモデル110において電源投入シーケンスが開始され、ステップS5にて、実機の場合と同様、ターゲットモデル110のリセット処理が実行されて、CPUモデル111が起動する。これより、CPUモデル111によるターゲットプログラムの実行が開始する。
次に、ステップS6にて、CPUモデル111は、これから実行するターゲットプログラムのコマンドについて、ブレークポイントが設定されているか否かを判定し、ブレークポイントが設定されていると判断すると、処理はステップS9に移行し、後述するシミュレータ制御部101でのシミュレート処理を実行する。
他方、先のステップS6の判定で、ブレークポイントが設定されていないと判断すると、ステップ7にて、CPUモデル111は、メモリモデル113からターゲットプログラムを読み込み、読み込んだコマンドを実行する。
次に、ステップS8にて、この時に実行されたコマンドの実行時間をシミュレーション時間に加算する。コマンドの実行時間は、CPUの動作クロック周波数やコマンドの種類(例えば、ロード命令、ストア命令等)等によって変わる。
ステップS6の判定処理でブレークポイントが発見されるまで上記処理を繰り返し実行し、この間、CPUモデル111は、順次ターゲットプログラムを読み込んでコマンドを実行し、コマンド実行後は次のステップS7でシミュレーション時間を更新していく。
この状態でのシミュレーション時間は、実機(実際のターゲット装置600)での実行時間と同じである。
この状態でのシミュレーション時間は、実機(実際のターゲット装置600)での実行時間と同じである。
CPUモデル111が順次ターゲットプログラムを実行して行くことにより、プログラムカウンタが更新し、ダミー関数呼び出しプログラム「printf(“Hello”);」(図1)が組み込まれたプログラムアドレスに達することになる。但し、この時点でのステップS6の判定では、まだブレークポイントは発見されない。
次に、ステップ7にて、「printf(“Hello”);」に相当するコマンドを実行すると、CPUモデル111は、自身のプログラムカウンタをダミー関数printfが配置されたアドレス0x1004番地(図1)に変更し、次のステップS8にて、シミュレーション時間を更新した後、処理をステップS6の判定に移行する。
プログラムカウンタ0x1004番地には、先のステップS2にてブレークポイントが設定されているため、ステップS6の判定の結果、処理はシミュレータ制御部101側のステップS9に移行する。これより、CPUモデル111によるターゲットプログラムの実行は、一旦停止する。
ステップS9にて、ダミー関数対応ブレーク判定部103は、ダミー関数対応ブレークポイントリスト102(図2)を参照して、先のステップS6で発見されたブレークポイントがダミー関数対応ブレークポイントであるか否かを判定する。
この判定で、ブレークポイントがダミー関数対応ブレークポイントではないと判断された場合、すなわち、発見したブレークポイントのアドレスがダミー関数対応ブレークポイントリスト102に存在しない場合は、該ブレークポイントは、ユーザがコンソール300より設定したブレークポイントであると認識し、ステップS14にて、ユーザコマンド処理を実行する。
ステップ14のユーザコマンド処理では、例えば、ターゲットプログラムの所望のアドレスにおける、CPUモデル111のレジスタやメモリの状態を表示する。ユーザは、これらの表示よりプログラムの進行状況を確認することができる。
ユーザコマンド実行後は、再度処理をターゲットモデル110に移行し、ステップ7にて、先のブレークポイントにより停止した状態となっているコマンドから処理を再開する。
また、ユーザが設定したブレークポイントが、デバッグ終了のためのブレークポイントであれば、ステップS15の判定で、シミュレータプログラムの実行を終了する。
他方、先のステップS9の判定で、先のステップS6で発見したブレークポイントがダミー関数対応ブレークポイントであると判断された場合、すなわち、発見したブレークポイントのアドレスがダミー関数対応ブレークポイントリスト102に存在する場合は、ホストOS関数呼出部105において以下の処理を実行する。
先ず、ステップS10にて、引数取出処理部105aは、ダミー関数対応ブレークポイントリスト102を参照し、該ダミー関数対応ブレークポイントが、どのホストOS関数を呼び出すダミー関数に対応しているかを調べ、CPUレジスタモデル112を参照しながら引数を取り出して変数Aに格納する。
図1の場合は、CPUレジスタモデル112には、文字列“Hello”の格納アドレス0x4000が引数として格納されており、引数取出処理部105aは、該アドレスを引数として取り出して変数Aに格納する。
次に、ステップS11にて、アドレス変換処理部105bは、先のステップS10にて変数Aに格納したメモリモデル113上のアドレスをホストOS200上のアドレスに変換して変数AAに格納する。
図1の場合では、アドレス0x4000をアドレス0x8FFF4000に変換して変数AAに格納する(図3)。
図1の場合では、アドレス0x4000をアドレス0x8FFF4000に変換して変数AAに格納する(図3)。
次に、ステップS12にて、ホストOS呼び出し処理が実行される。
この際、先のステップS11で変換されたホストOS200上のアドレスがホストOS呼び出し時の引数として渡され、次のステップS13にて、ホストOS関数を実行する。
これにより、ホストOS200は、渡された引数の値に従って処理を行うが、この時は、ホストOS上で通常のアプリケーションがこの引数を伴った関数を呼び出した時と同じように動作する。
この際、先のステップS11で変換されたホストOS200上のアドレスがホストOS呼び出し時の引数として渡され、次のステップS13にて、ホストOS関数を実行する。
これにより、ホストOS200は、渡された引数の値に従って処理を行うが、この時は、ホストOS上で通常のアプリケーションがこの引数を伴った関数を呼び出した時と同じように動作する。
図1の場合は、ホストOS関数呼出部105は、printf(AA);として変数AAを渡している。変数AAには、文字列“Hello”のホストOS上の格納アドレス0x8FFF4000が格納されている。
以上のように、ターゲットプログラム内で呼び出されたホストOS関数は、シミュレータプログラム100を介して、ホストOS200上で実行されたことになる。
ステップS13でホストOS関数を実行した後、処理はホストOS200からターゲットモデル110側に移行し、ステップS7にて、ブレークポイントの設定で実行を停止しているコマンドの実行を開始する。
図1の場合は、ダミー関数として、関数printfと関数fopenが「{return;}」で示されており、従って、ARM CPUの「BX LR」に相当するバイナリーコード0x47、0x70がステップS7で実行されるコマンドとなる。
次に、ステップS8にて、上記returnコマンドの実行時間をシミュレーション時間に加算する。
以上、実施例1によれば、ターゲットプログラム内にホストOS関数に対応するダミー関数を組み込むと共に、該ダミー関数にブレークポイントを設定し、ターゲットプログラムからホストOS関数を呼び出すことにより、このダミー関数対応ブレークポイントにおいて、処理はターゲットモデル110からシミュレータ制御部101に移行し、ホストOS関数呼出部105を介してホストOS関数を呼び出して、該ホストOS関数をホストOS上で実行することが可能になる。
この結果、シミュレータ制御部101がホストOS関数を呼び出している間は、ターゲットモデル110でのプログラムの実行は停止しており、シミュレーション時間は更新されない。
従って、ホストOS関数の実行のためにターゲットモデル110で費やされる時間は0であり、この実行時間が、実機での動作やタイミングに影響してデバック作業に支障を来すという問題は生じない。よって、ユーザは、ターゲットプログラムのデバッグ作業を効率良く進めることができる。
従って、ホストOS関数の実行のためにターゲットモデル110で費やされる時間は0であり、この実行時間が、実機での動作やタイミングに影響してデバック作業に支障を来すという問題は生じない。よって、ユーザは、ターゲットプログラムのデバッグ作業を効率良く進めることができる。
次に、図5に基づいて、実施例2の構成を説明する。図5は、実施例2によるシミュレータプログラム100の構成を示す図である。
実施例2によるシミュレータプログラム100の構成は、実施例1(図1)とほぼ同じであるが、シミュレータ制御部101に、新たにシンボルテーブル管理部106とアドレス変換部104aが追加された点と、実施例1のターゲットプログラムファイル500に替えて、ターゲットプログラムと該ターゲットプログラムに組み込まれたデバッグシンボル情報を格納したターゲットプログラムファイル500aを備える点が相違している。
以下、実施例1と相違する部分について説明する。
実施例2によるシミュレータプログラム100の構成は、実施例1(図1)とほぼ同じであるが、シミュレータ制御部101に、新たにシンボルテーブル管理部106とアドレス変換部104aが追加された点と、実施例1のターゲットプログラムファイル500に替えて、ターゲットプログラムと該ターゲットプログラムに組み込まれたデバッグシンボル情報を格納したターゲットプログラムファイル500aを備える点が相違している。
以下、実施例1と相違する部分について説明する。
上記シンボルテーブル管理部106は、ターゲットプログラムファイル500aからデバッグシンボル情報を抽出して、シンボル名とアドレスを管理する機能部である。シンボル名は、これに対応するアドレスと共にテーブル形式で管理される。
上記アドレス変換部104aは、シンボルテーブル管理部106のシンボルテーブルで管理されるシンボル名よりアドレス情報を取得する機能部である。
また、本実施例の場合、メモリモデル113のメモリマップは、以下のようになっている。
例えば、メモリモデル113の0x2000番地には、文字列“Hello”を表示するためのプログラムprintf(“Hello”);が格納され、0x4000番地には、文字列“Hello”が格納され、0x3024番地には、ホストOS200の関数printfを呼び出すためのダミー関数printfが、また0x3020番地にはダミー関数fopenが格納されている。
このように、本実施例では、ダミー関数printfとダミー関数fopenについては、実施例1(図1)と異なるアドレスが設定されている。
例えば、メモリモデル113の0x2000番地には、文字列“Hello”を表示するためのプログラムprintf(“Hello”);が格納され、0x4000番地には、文字列“Hello”が格納され、0x3024番地には、ホストOS200の関数printfを呼び出すためのダミー関数printfが、また0x3020番地にはダミー関数fopenが格納されている。
このように、本実施例では、ダミー関数printfとダミー関数fopenについては、実施例1(図1)と異なるアドレスが設定されている。
次に、実施例2の動作を説明する。実施例2の動作は、実施例1(図4)とほぼ同様であるが、図4におけるステップS1、S2の処理内容が実施例1と相違している。
以下、図4を参照して実施例1との相違部分について説明する。
以下、図4を参照して実施例1との相違部分について説明する。
先ず、ホストOS200上でシミュレータプログラム100を起動すると、ステップS1にて、シミュレータ制御部101は、ターゲットモデル110の初期化処理を実行する。
この初期化処理により、ターゲットプログラムファイル500aに記録されているターゲットプログラムがメモリモデル113にローディングされ、メモリモデル113内(図5)にターゲットプログラムが書き込まれる。
この初期化処理により、ターゲットプログラムファイル500aに記録されているターゲットプログラムがメモリモデル113にローディングされ、メモリモデル113内(図5)にターゲットプログラムが書き込まれる。
同時に、シンボルテーブル管理部106は、ターゲットプログラムファイル500aに格納されているデバッグシンボル情報からシンボルテーブルを取得する。このシンボルテーブルには、printf:0x3024、fopen:0x3020というように、シンボル名とこれに対応したアドレスが記述されている(図5)。
ターゲットモデル110の初期化処理が終了すると、次に、ステップS2にて、ブレークポイント設定部104は、シンボルテーブル管理部106のシンボルテーブルを参照してダミー関数のシンボルを探し出し、これに対応するアドレスにブレークポイントを設定する。
ブレークポイントを設定したアドレスは、対応するホストOS関数とともにダミー関数対応ブレークポイントリスト102に登録する。
ブレークポイントを設定したアドレスは、対応するホストOS関数とともにダミー関数対応ブレークポイントリスト102に登録する。
ブレークポイント設定後の動作は実施例1と同様である。
以上、実施例2によれば、ダミー関数に対応するシンボル名とそのアドレスを対応付けて管理するシンボルテーブル管理部106を備えるので、実施例1のように、ダミー関数の配置位置を固定するのではなく、ターゲットモデルのアドレス空間の如何なる位置にも配置可能となる。
これにより、ユーザは、ダミー関数の配置位置を意識せずにターゲットプログラムを作成することができる。
これにより、ユーザは、ダミー関数の配置位置を意識せずにターゲットプログラムを作成することができる。
本実施形態では、ターゲット装置としてプリンタを説明したが、プリンタに限らず、スキャナ、ファックス、複写機等を始めとして、CPUを搭載したあらゆる電子機器に適応可能である。
100 シミュレータプログラム
103 ダミー関数対応ブレーク判定部(ブレークポイント識別手段)
104 ブレークポイント設定部(ブレークポイント設定手段)
105 ホストOS関数呼出部(関数実行手段)
105a 引数取出処理部(引数取出手段)
110 ターゲットモデル
200 ホストOS
210 ホストコンピュータ(ホスト)
600 プリンタ(ターゲット装置)
700 シミュレータ装置
103 ダミー関数対応ブレーク判定部(ブレークポイント識別手段)
104 ブレークポイント設定部(ブレークポイント設定手段)
105 ホストOS関数呼出部(関数実行手段)
105a 引数取出処理部(引数取出手段)
110 ターゲットモデル
200 ホストOS
210 ホストコンピュータ(ホスト)
600 プリンタ(ターゲット装置)
700 シミュレータ装置
Claims (9)
- ホスト上で動作し、ターゲットモデルの動作をシミュレートするシミュレータプログラムであって、
前記ターゲットモデルを動作させるターゲットプログラムと、
前記ターゲットプログラムに組み込まれたダミー関数に対してブレークポイントを設定するブレークポイント設定手段と、
前記ブレークポイントが前記ダミー関数に対応するブレークポイントであるか否かを識別するブレークポイント識別手段と、
前記ブレークポイントが前記ダミー関数に対応する場合に、前記ダミー関数に渡された引数を取り出す引数取出手段と、
前記引数に基づくダミー関数に該当すると共に前記ホストOS上で動作する関数を実行させる関数実行手段と
を備えることを特徴とするシミュレータプログラム。 - 前記ダミー関数に対応する関数名とアドレスを記憶するシンボルテーブルを備え、該シンボルテーブルを参照して、前記ダミー関数に対応するブレークポイントを識別することを特徴とする請求項1に記載のシミュレータプログラム。
- 前記ホストOS上で動作する関数の実行中は、前記ターゲットプログラムの実行を停止させることを特徴とする請求項1または請求項2に記載のシミュレータプログラム。
- 前記ダミー関数は、文字表示、文字入力、ファイル操作の何れかを含むことを特徴とする請求項1乃至請求項3の何れかに記載のシミュレータプログラム。
- 前記ターゲットモデルは、プリンタに対応することを特徴とする請求項1乃至請求項4の何れかに記載のシミュレータプログラム。
- 前記ターゲットモデルは、スキャナに対応することを特徴とする請求項1乃至請求項4の何れかに記載のシミュレータプログラム。
- 前記ターゲットモデルは、ファックスに対応することを特徴とする請求項1乃至請求項4の何れかに記載のシミュレータプログラム。
- 前記ターゲットモデルは、複写機に対応することを特徴とする請求項1乃至請求項4の何れかに記載のシミュレータプログラム。
- 請求項1乃至請求項8の何れかに記載のシミュレータプログラムを搭載して成ることを特徴とするシミュレータ装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009196476A JP2011048625A (ja) | 2009-08-27 | 2009-08-27 | シミュレータプログラム及びシミュレータ装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009196476A JP2011048625A (ja) | 2009-08-27 | 2009-08-27 | シミュレータプログラム及びシミュレータ装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011048625A true JP2011048625A (ja) | 2011-03-10 |
Family
ID=43834875
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009196476A Pending JP2011048625A (ja) | 2009-08-27 | 2009-08-27 | シミュレータプログラム及びシミュレータ装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011048625A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104718505A (zh) * | 2012-10-10 | 2015-06-17 | 西铁城控股株式会社 | 可搬式操作指令输入装置及具备可搬式操作指令输入装置的装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02146630A (ja) * | 1988-11-29 | 1990-06-05 | Fujitsu Ltd | マイクロプロセッサのプログラム開発システム |
JP2003050717A (ja) * | 2001-08-07 | 2003-02-21 | Matsushita Electric Ind Co Ltd | プログラムトレース装置及び方法 |
JP2003114809A (ja) * | 2001-10-04 | 2003-04-18 | Matsushita Electric Ind Co Ltd | シミュレーション装置及びシミュレーション方法 |
-
2009
- 2009-08-27 JP JP2009196476A patent/JP2011048625A/ja active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02146630A (ja) * | 1988-11-29 | 1990-06-05 | Fujitsu Ltd | マイクロプロセッサのプログラム開発システム |
JP2003050717A (ja) * | 2001-08-07 | 2003-02-21 | Matsushita Electric Ind Co Ltd | プログラムトレース装置及び方法 |
JP2003114809A (ja) * | 2001-10-04 | 2003-04-18 | Matsushita Electric Ind Co Ltd | シミュレーション装置及びシミュレーション方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104718505A (zh) * | 2012-10-10 | 2015-06-17 | 西铁城控股株式会社 | 可搬式操作指令输入装置及具备可搬式操作指令输入装置的装置 |
US9703282B2 (en) | 2012-10-10 | 2017-07-11 | Citizen Holdings Co., Ltd. | Portable manipulation command input device and apparatus equipped with manipulation command input device |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7185321B1 (en) | Method and system for debugging through supervisory operating codes and self modifying codes | |
CN103761089B (zh) | 基于寄存器传输语言确定动态函数调用关系的方法 | |
TWI599876B (zh) | 開機自我測試中的除錯方法以及使用該方法的裝置 | |
JP4426492B2 (ja) | プログラマブル・ターミナル・システム | |
JP6234639B2 (ja) | シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム | |
JP2011048625A (ja) | シミュレータプログラム及びシミュレータ装置 | |
JP2817786B2 (ja) | シミュレーション装置及びシミュレーション方法 | |
JP5702265B2 (ja) | プログラム自動生成装置およびプログラム自動生成方法 | |
JPH09128267A (ja) | データ処理装置およびデータ処理方法 | |
Lyu et al. | A procedure-based dynamic software update | |
JP6597356B2 (ja) | 制御プログラム、制御装置、及び制御方法 | |
JP2009098872A (ja) | ソースプログラム解析装置、ソースプログラム解析方法及びコンピュータプログラム | |
JP4925514B2 (ja) | 内外イベントドリブン方式によるプログラム実行制御方法、プログラム、実行制御装置および記録媒体 | |
Ye | Embedded programming with Android: bringing up an Android system from scratch | |
JP2009064125A (ja) | サーバ装置、そのプログラム | |
JP2007219893A (ja) | ファームウェア評価システムおよびファームウェア評価方法 | |
Chapman | PicoBlaze 8-bit microcontroller for Virtex-II series devices | |
US7694301B1 (en) | Method and system for supporting input/output for a virtual machine | |
JP2003263340A (ja) | デバッグ装置 | |
JP2013080386A (ja) | 情報処理装置、アドレス管理方法 | |
JP5216624B2 (ja) | ソフトウェア開発システムおよびソフトウェア開発方法 | |
JP6919570B2 (ja) | ソフトウェア解析装置、ソフトウェア解析方法、及び、ソフトウェア解析プログラム | |
JP5821495B2 (ja) | プログラム再利用システムおよびプログラム再利用方法 | |
Guttenbrunner et al. | Design Decisions in Emulator Construction: A Case Study on Home Computer Software Preservation. | |
JP3308953B2 (ja) | デバッガ、デバッグ方法およびデバッグプログラムを記録した記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120329 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130710 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130716 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20131112 |