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

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

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

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

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

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

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

[実行ログの収集方法]

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

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

patch 0xfffe05e4="12345678"

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

ログを取得するためには、スタートアップコマンドファイルにトレース設定を行います。ただしガイオのシミュレータには「SYSTEM-G」「SX」という2種類のアーキテクチャがあり、どちらのシミュレータをお使いかによって設定のしかたが異なりますので、注意してください。

★SYSTEM-Gの場合

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

set trace/subroutine=yes /instruction

シミュレーションを実行すると、"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"
;set trace/subroutine=yes /instruction
;
;
;;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」の場合は下記を追記します。

set trace/line

さらに「関数実行開始・終了メッセージを出力しない」のチェックをOFFにする必要があります。

シミュレーションを実行すると、"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
;

★注意

「SYSTEM-G」 / 「SX」いずれの場合も、ログ採取後にはスタートアップコマンドファイルの「set trace」設定を外して下さい。この設定を使用すると、すべての命令の実行ログを記録するため、テスト実行のパフォーマンスが著しく低下します。

 

関連サポート情報検索

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

検索キーワード: シミュレータ実行エラー | ログの取得

他のキーワード検索




参考情報・リンク