ホーム > ユーザーサポート > FAQ カバレッジマスターwinAMS

FAQ / カバレッジマスターwinAMS

ツール起動・スタートアップに関する問題

000-01 : シミュレータがエラーで止まってしまいます。エラーの原因を調査するために、動作状態をログに出力して確認する方法はありませんか?

【質問】
シミュレータがエラーで止まってしまいます。エラーの原因を調査するために、動作状態をログに出力して確認する方法はありませんか?ガイオのユーザーサポート宛に原因調査を依頼したいのですが、どのようにするのが良いですか?

【回答】
このエラーが発生するまでの経過を、命令毎にログに出力することができます。このログを解析、確認することで、ソースコードのどの場所で、シミュレータがエラーで停止してしまうのかの原因の手がかりとすることができます。このログファイルを、弊社ユーザーサポート宛にお送りいただくと、原因調査の手がかりにできます。

ユーザー自身でもおおよその原因をつかむことができますので、以下の方法で実行ログを確認して下さい。

[実行ログの収集方法]

シミュレーションを実行するソースコードはいずれも下記のものです。

このソースコード自体にはエラー要因は含まれませんが、下記コマンド(スタートアップコマンドファイルに記述)によって人為的にエラーを発生させています。

patch 0xfffe05e4="12345678"

これは想定外の処理によって実行コードが書き換えられてしまったという状況を想定しています。

ガイオのシミュレータには「SYSTEM-G」「SX」という2種類のアーキテクチャがあります。どちらのシミュレータをお使いかによってログの取得方法が異なります。

★SYSTEM-Gの場合

マイコンシミュレータをデバッガUIモードで起動した後で、オプションメニューから指定できます。

1)SSTManagerの「起動設定」画面で、シミュレーション開始終了の「自動的に開始」「自動的に終了」を両方OFFにします。
2)「シミュレータ起動」ボタンを押して、マイコンシミュレータ(SystemSimulator)を起動します。
3)「ツール(T)」メニューから「オプション(O)」を選択します。
4)下図のように、「プログラム実行時にトレース動作を行います(E)」「関数サブルーチン内をトレースします(T)」をONにして、「適用」ボタンを押します。


5)SystemSimulatorの「実行」メニューから「実行開始」を選択して、テストを開始し、エラーが発生するまでテスト実行します
※上記のオプションをONにした場合、テスト実行にかかる時間(実行パフォーマンス)は、かなり遅くなりますのでご了承下さい。

6)プロジェクトのカレントディレクトリに、ログファイル「systemg.log」が生成されます。
※このファイルに、エラーが発生するまでに実行されたアドレス等の情報が記録されています。

※なお、ログ採取後には、上記のオプションをOFFに戻して下さい。このオプションを使用すると、すべての命令の実行ログを記録するため、テスト実行のパフォーマンスが著しく低下します。

[実行ログのサンプル(SYSTEM-G)]

マイコンやソースコードによって出力されるものは異なりますが、概ね下記のようなログが出力されます("systemg.log")。

;Log File: C:\SL1\SL1 0 Management\support\etc\FAQ\000_01\test\cm1_sem\systemg.log ←「シミュレータ起動」ボタンで開始
;Start Log: Thu 06-Dec-2018 11:08:09
;
;
;on error then continue ← ここからスタートアップコマンドファイルが実行される
;set unit/all
;@reset
; Direct reset
;set mode source
;
;patch 0xfffe05e4="12345678"
;
;
;;winAMS起動
; ;%SYSTEMG-I-GO, run program by process "WinAMS"
;CREATE PROCESS/USER/INTERFACE=THREAD WinAMS.DLL
;%SYSTEMG-I-PROCESS, process "WinAMS" is started
;SET PROCESS/CONTROL WinAMS
;traced to resetprg\PowerON_Reset_PC\#79 ← resetprg.c の79行目を実行(以下実行した行番号が表示される)
;traced to resetprg\PowerON_Reset_PC\#92
;traced to resetprg\PowerON_Reset_PC\#95
;traced to resetprg\PowerON_Reset_PC\#104, returned from MEM::fffe08ac
;traced to resetprg\PowerON_Reset_PC\#108
;traced to resetprg\PowerON_Reset_PC\#111
;traced to main\main\#18, called from resetprg\PowerON_Reset_PC\#111 ← main()が呼ばれる
;%SYSTEMG-I-STOPPROGRAM, Program execution stopped by process "WinAMS"
;%SYSTEMG-I-XIPC, function "main\func1" called by process "WinAMS" ← テスト対象関数func1()が呼ばれる
;traced to main\func1\#41
;traced to main\func1\#43
;traced to main\func1\#49
;SEM-E:[SXG-HTB-000201] 未定義命令例外が発生しました.(pc=FFFE05E5H) ← エラー発生
;%SYSTEMG-E-SEM, invalid operation code found
; `MEM::fffe05e5'
;%SYSTEMG-I-PROCESS, process "WinAMS" was exited with [0] ← 異常を検知して終了
;%SYSTEMG-I-PROCESS, process "WinAMS" is terminated ;
;End Log: Thu 06-Dec-2018 11:08:40
;

このときpatch 0xfffe05e4="12345678"によって実行コードが不正値に書き換えられていますので、アドレスpc=FFFE05E5Hにおいて不正命令例外が発生してシミュレーションが停止しています。

★SXの場合

「SX」シミュレータをご利用の際には、GUIからシミュレータのトレースオプションを選択いただくことができません(シミュレータのアーキテクチャの違いによるものです)。その代わりにスタートアップコマンドファイルでトレース設定を行います。

1) 「関数実行開始・終了メッセージを出力しない」のチェックをOFFにする。

2) スタートアップコマンドファイルに下記1行を追記する。

set trace/line

[実行ログのサンプル(SX)]

マイコンやソースコードによって出力されるものは異なりますが、概ね下記のようなログが出力されます("sx.log")。

;Log File: C:\SL1\SL1 0 Management\support\etc\FAQ\000_01\test\cm1_sx\sx.log ←「シミュレータ起動」ボタンで開始
;Start Log: Thu 06-Dec-2018 11:24:23
;
;
;
;%XTP-I, Start Sub Process (WinAMS.dll)
;traced to resetprg\PowerON_Reset_PC\#79 ← resetprg.c の79行目を実行(以下実行した行番号が表示される)
;traced to resetprg\PowerON_Reset_PC\#92
;traced to resetprg\PowerON_Reset_PC\#95
;traced to resetprg\PowerON_Reset_PC\#104
;traced to resetprg\PowerON_Reset_PC\#108
;traced to resetprg\PowerON_Reset_PC\#111
;traced to main\main\#18
;traced to resetprg\PowerON_Reset_PC\#117
;%SX-I-XIPC, function "main\func1" is called by process "WinAMS" ← テスト対象関数func1()が呼ばれる
;traced to main\func1\#41
;traced to main\func1\#43
;traced to main\func1\#49
;%XTPC-E, SX-E:[HSN-HTC-000101] 未定義命令例外が発生しました. (pc=0xfffe05e5) ← エラー発生
;%SX-E-TARGET, user error in target process "hsnhtcl" [error code 4098 (1002h)]
;break at main\func1\#49+10
;%SX-I-PROCESS, process "hsnhtcl" was exited with [0] ← 異常を検知して終了
;%SX-I-PROCESS, process "hsnhtcl" is terminated
;
;End Log: Thu 06-Dec-2018 11:24:40
;

 

関連サポート情報検索

【サポート情報サイト内Google検索】

検索キーワード: シミュレータ実行エラー

他のキーワード検索




参考情報・リンク