Everything
2.8 プログラムの停止(ブレーク)

この節では,実行中のプログラムを停止する方法について説明します。

CS+では,次のブレーク機能を使用して任意の箇所でプログラムを停止させることができます。

(1)

強制ブレーク機能

強制的にプログラムの実行を停止する機能です。

(2)

ハードウエア・ブレーク機能

デバッグ・ツールが,ハードウエアの資源を使用してプログラム実行中にブレーク条件を逐次確認し,条件を満たした際にプログラムを停止させる機能です。

なお,ハードウエア・ブレーク・イベントには,任意の箇所でプログラムの実行を停止させる“実行系”と,任意の変数などに指定したアクセスがあった際にプログラムの実行を停止させる“アクセス系”があります。

備考 1.

【IECUBE】
ハードウエア・ブレーク・イベント(実行系)には,指定したアドレスの命令実行前にブレークする“実行前ブレーク”と,命令実行後にブレークする“実行後ブレーク”があります。CS+では,ハードウエア・ブレーク・イベントを設定する際,まず“実行前ブレーク”の資源を使用し,資源がなくなり次第,“実行後ブレーク”の資源を使用します(「2.15.7.1 有効イベント数の制限」参照)。そのため,ユーザが実行前/実行後のどちらかを選択することはできません。

備考 2.

【E1】【E20】【EZ Emulator】
ハードウエア・ブレーク・イベント(実行系)は,指定したアドレスの命令実行後にブレークする“実行後ブレーク”となります。

備考 3.

【シミュレータ】
ハードウエア・ブレーク・イベント((実行系)は,指定したアドレスの命令実行前にブレークする“実行前ブレーク”と,命令実行後にブレークする“実行後ブレーク”を選択することができます(「2.8.1.3 【シミュレータ】の場合」参照)。

(3)

ソフトウエア・ブレーク機能(【シミュレータ】以外)

指定したアドレスの命令コードを一時的にブレーク用の命令に書き換え,その命令を実行した際にプログラムを停止させる機能です。

注意 1.

スタンバイ・モード(HALT/STOP)中に強制ブレークを行った場合,カレントPC値はスタンバイ・モード命令以降の次命令のアドレスとなります。
また,使用するデバッグ・ツールによって,次のように動作が異なります。

-

【シミュレータ】以外
強制ブレークによりスタンバイ・モードを解除します。

-

【シミュレータ】
強制ブレークによりスタンバイ・モードを解除しません。
スタンバイ・モードが解除されているように見えますが,スタンバイ・モードが解除されているか否かは,メイン・ウインドウのステータス・バー上のCPU状態で確認してください。

注意 2.

【E1】【E20】【EZ Emulator】
ブレーク時にターゲット・システムの電圧を下げないようにしてください。ブレーク中に低電圧検出回路(LVI),またはパワーオン・クリア(POC)によるリセットが発生した場合,CS+の不正動作や通信エラーの原因となる場合があります。
なお,ターゲット電源OFFのエミュレーション中でのブレークもこれに該当します。

備考

実行中のプログラムが停止すると,その原因(ブレーク要因)がメイン・ウインドウステータスバーに表示されます。