よくある質問(FAQ)

シミュレータが終了しません。原因の調査方法を教えてください。

シミュレーションエラーの回避策について

質問

シミュレータを起動してテストを実施したところ、実行状態のままとなりテストが終了しません。原因の調査対策方法を教えてください。

回答

シミュレーション実行中に何等かのエラーが発生しているか、又は プログラムが実行中(無限ループ)の状態になっている可能性があります。
原因を調査するため、下記の手順 (1~5)を実施してください。

■ 手順1

シミュレーションが正しく実行されているか否かを確認するため、シミュレーション実行経過をトレースします。

下記 (1)~(3) を実施してトレース情報を採取してください。

(1) 最初に、実行中のシミュレーションを停止します。 詳細はこちら
(2) 次に、トレース情報を採取するための設定を行います。 詳細はこちら
※ 設定後 シミュレータを再起動してシミュレーションを実行 してください。
 ★注意事項 トレース情報を採取しながらのシミュレーションは著しく時間を要します。

(3) 充分なシミュレーション時間経過後 シミュレーションを停止してください。
※ トレース情報は「Systemg.log」又は「SX.log」へ 採取されています。

■ 手順2

シミュレーション開始アドレスが正しいか否か を調査するため、予め スタートアップルーチン (プログラム開始アドレス) を確認します。

スタートアップルーチンのアドレスは「リンクマップファイル」で確認することができます。 詳細はこちら
※「main」関数を「プログラム開始アドレス」としているとき、又は「プログラム開始アドレス」が解っているときは、「リンクマップファイル」で確認する必要はありません。

■ 手順3

「シミュレーション実行開始アドレス」と「プログラム開始アドレス」が一致しているか否か を確認します。

・「シミュレーション実行開始アドレス」は、 手順1のトレース情報で確認したアドレスです。
・「プログラム開始アドレス」は 、手順2で確認したスタートアップルーチン のアドレスになります。

■「シミュレーション実行開始アドレス」と「プログラム開始アドレス」が一致している 場合
「プログラム開始アドレス」から実行されています。「手順5」へ進んでください。
■「シミュレーション実行開始アドレス」と「プログラム開始アドレス」が一致していない場合
「プログラム開始アドレス」 から実行されていません。「手順4」へ進んでください。

■手順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 = スタック領域のアドレス
-------------------------------------------------------------

■手順5