シミュレータを起動してテストを実施したところ、実行状態のままとなりテストが終了しません。原因の調査対策方法を教えてください。
よくある質問(FAQ)
シミュレータを起動してテストを実施したところ、実行状態のままとなりテストが終了しません。原因の調査対策方法を教えてください。
シミュレーション実行中に何等かのエラーが発生しているか、又は プログラムが実行中(無限ループ)の状態になっている可能性があります。
原因を調査するため、下記の手順 (1~5)を実施してください。
シミュレーションが正しく実行されているか否かを確認するため、シミュレーション実行経過をトレースします。
下記 (1)~(3) を実施してトレース情報を採取してください。
(1) 最初に、実行中のシミュレーションを停止します。 詳細はこちら
(2) 次に、トレース情報を採取するための設定を行います。 詳細はこちら
※ 設定後 シミュレータを再起動してシミュレーションを実行 してください。
★注意事項 トレース情報を採取しながらのシミュレーションは著しく時間を要します。
(3) 充分なシミュレーション時間経過後 シミュレーションを停止してください。
※ トレース情報は「Systemg.log」又は「SX.log」へ 採取されています。
シミュレーション開始アドレスが正しいか否か を調査するため、予め スタートアップルーチン (プログラム開始アドレス) を確認します。
スタートアップルーチンのアドレスは「リンクマップファイル」で確認することができます。 詳細はこちら
※「main」関数を「プログラム開始アドレス」としているとき、又は「プログラム開始アドレス」が解っているときは、「リンクマップファイル」で確認する必要はありません。
「シミュレーション実行開始アドレス」と「プログラム開始アドレス」が一致しているか否か を確認します。
・「シミュレーション実行開始アドレス」は、 手順1のトレース情報で確認したアドレスです。
・「プログラム開始アドレス」は 、手順2で確認したスタートアップルーチン のアドレスになります。
■「シミュレーション実行開始アドレス」と「プログラム開始アドレス」が一致している 場合
「プログラム開始アドレス」から実行されています。「手順5」へ進んでください。
■「シミュレーション実行開始アドレス」と「プログラム開始アドレス」が一致していない場合
「プログラム開始アドレス」 から実行されていません。「手順4」へ進んでください。
「シミュレーション開始アドレス」を正しいアドレスへ変更して、シミュレーション実行 (トレース情報を採取)します。
スタートアップコマンドファイル (SS_STARTUP.txt) へ「シミュレーション開始アドレス」を変更するためのコマンド(下記 ①~③の何れか) を追加してからシミュレーション実行してください。 ★注意 充分なシミュレーション時間経過後 シミュレーションを停止してください。
シミュレーションが停止したら、手順5へ進んでください。
①「スタートアップルーチン」をプログラム開始アドレスとするとき
---[追加コマンド]------------------------------------
set reg pc = スタートアップルーチンのアドレス
例: set reg pc = _start
-------------------------------------------------------
②「main」関数をプログラム開始アドレスとするとき
---[追加コマンド]-----------------------------------
set reg pc = main
set reg sp = スタック領域のアドレス
例:set reg pc = main
set reg sp = 0x00FFFF00
-------------------------------------------------------
③ 決められた「エントリ関数」をプログラム開始アドレスとするとき
---[追加コマンド]-----------------------------------
set reg pc = エントリ関数
set reg sp = スタック領域のアドレス
-------------------------------------------------------------
採取したトレース情報の結果に従って(下記①~②の何れか) 対策を行います。
トレース情報の結果確認には「検証対象の関数が実行されているか否かの判断」が重要になります。結果確認の前に「検証対象の関数が実行されていることの確認方法」をご覧ください。 詳細はこちら
①「シミュレーション実行エラー」は発生していないケース
スタートアップ処理中(又は、検証対象の関数実行中)に無限ループが発生している可能性があります。無限ループの確認、及び回避策を実施してください。 詳細はこちら
無限ループが回避できない (又は 原因が不明) 場合は、「ユーザサポート」へお問い合わせください。
②「シミュレーション実行エラー」が発生しているケース
他FAQ (番号:911_002~) にエラー対策の掲載が有るときは、該当FAQに掲載されている対策を行ってください。
また、検証対象の関数実行中であれば、関数の呼び出し回数から「どの入力データが影響しているのか否か?」を判断できます。
FAQに掲載されている対策を行っても回避できない (又は FAQに掲載の無いエラーが発生した)ときは、「ユーザサポート」へお問い合わせください。