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

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

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

(1)

強制ブレーク機能

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

(2)

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

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

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

なお,ハードウエア・ブレーク・イベント(実行系)を設定すると,指定したアドレスの命令実行前にプログラムがブレークします(実行前ブレーク)。

備考

ハードウエア・ブレーク・イベント(アクセス系)を使用する場合では(「2.9.5.1 ブレーク・イベント(アクセス系)を設定する」参照),次の場合のみ“実行後ブレーク”となります。

-

コンテキスト・メニューの[ブレークの設定]→[読み込みブレークを設定]/[読み書きブレークを設定]の選択によるブレーク・イベントの設定において,データ条件を設定した場合

-

コンテキスト・メニューの[ブレークの設定]→[書き込みブレークを設定]/[読み書きブレークを設定]の選択によるブレーク・イベントの設定において,リードモディファイライト系の命令のライト・アクセスを検出した場合

(3)

ソフトウエア・ブレーク機能【Full-spec emulator】【E1】【E20】

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

ソフトウエア・ブレーク・イベントを設定すると,指定したアドレスの命令実行前にプログラムがブレークします(実行前ブレーク)。

注意

命令コードをブレーク用の命令に書き換えるため,ソフトウエア・ブレーク・イベントの設定/削除を行うたびに,次のタイミングでメモリの書き換えが行われます。

-

プログラムの実行開始時([デバッグ]メニュー→[ブレークせずに実行]の選択を含む)

-

デバッグ・ツールと切断時

注意 1.

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

-

【Full-spec emulator】【E1】【E20】
強制ブレークによりスタンバイ・モードを解除します。

-

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

注意 2.

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

備考 1.

マルチコア対応版を対象とした“プログラムの実行制御”,または“イベントの発生”については,「2.7 コア(PE)の選択」も参照してください。

備考 2.

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