2017-08-08 9 views
1

基本的に私は2つのブレークポイントを持っています。AとBを考えてみましょう。オートメーションテストのための.cmmスクリプトを書きましたが、ブレークポイントBの前にブレークポイントAに達しています。テストを合格または不合格とすることを前提としています。以下のコードは、ブレークポイントに達しているかどうかを示しています。最初に到達したブレークポイントを確認します。 trace32ツールボックスlauterbachテスト自動化

GO A 
    TOOLBOX WaitValidateBreakpoint A 
    ENTRY &StoppedAtBreakpoint 

    IF &StoppedAtBreakpoint==FALSE() 
    (
    TOOLBOX TestStepFail "Breakpoint A is not reached" 
    RETURN 
) 
    ELSE 
    (
    TOOLBOX TestStepPass "Breakpoint A is reached" 
    RETURN 
) 

GO B 
    TOOLBOX WaitValidateBreakpoint B 
    ENTRY &StoppedAtBreakpoint 

    IF &StoppedAtBreakpoint==FALSE() 
    (
    TOOLBOX TestStepFail "Breakpoint B is not reached" 
    RETURN 
) 
    ELSE 
    (
    TOOLBOX TestStepPass "Breakpoint B is reached" 
    RETURN 
) 
+0

TOOLBOXはTRACE32のネイティブコマンドではありません。私はそれが 'ON CMD TOOLBOX'または' GLOBALON CMD TOOLBOX'を使ってあなたのCMMスクリプトのどこかで定義されていると思います。あなたがTOOLBOXコマンドに基づいて解決策を望むなら、あなたはその定義も掲示しなければならないと思います。 – Holger

答えて

1

問題の説明のために、既存の自動化スクリプトがブレークポイントAまたはBにヒットしたかどうかを検出できると仮定しています。これは、2つのブレークポイントのアドレスを含む二PRACTICEマクロによって反射される。

LOCAL &address_bp_a &address_bp_b 

二つの追加PRACTICEマクロブレークポイントトラックが最初にトリガされる:

LOCAL &bp_a_first &bp_b_first 

&bp_a_first=FALSE() 
&bp_b_first=FALSE() 

スクリプトプログラムの実行及び監視ブレークポイントを開始します最初にトリガされます。これは、他のブレークポイントがヒットした場合のループで発生します。

WHILE !(&bp_a_first||&bp_b_first) 
(
    Go 
    WAIT !STATE.RUN() 

    IF Register(PC)==&address_bp_a 
    (
    &bp_a_first=TRUE() 
) 
    ELSE IF Register(PC)==&address_bp_b 
    (
    &bp_b_first=TRUE() 
) 
) 

IF &bp_a_first 
(
    PRINT "Breakpoint A was hit first" 
) 
ELSE IF &bp_b_first 
(
    PRINT "Breakpoint B was hit first" 
) 
関連する問題