この節では,実行中のプログラムを停止する方法について説明します。
CS+では,次のブレーク機能を使用して任意の箇所でプログラムを停止させることができます。
強制的にプログラムの実行を停止する機能です。
デバッグ・ツールが,ハードウエアの資源を使用してプログラム実行中にブレーク条件を逐次確認し,条件を満たした際にプログラムを停止させる機能です。
ハードウエア・ブレーク・イベントには,任意の箇所でプログラムの実行を停止させる“実行系”と,任意の変数などに指定したアクセスがあった際にプログラムの実行を停止させる“アクセス系”があります。
備考 1. | 【E1】【E20】【Full-spec emulator】
ハードウエア・ブレーク・イベント(実行系)には,指定したアドレスの命令実行前にブレークする“実行前ブレーク”と,命令実行後にブレークする“実行後ブレーク”があります。CS+では,ハードウエア・ブレーク・イベントを設定する際,まず“実行前ブレーク”の資源を使用し,資源がなくなり次第,“実行後ブレーク”の資源を使用します(「2.19.7.1 有効イベント数,有効チャネル数の制限」参照)。 |
備考 2. | 【シミュレータ】
ハードウエア・ブレーク・イベント(実行系)を設定すると,指定したアドレスの命令実行前にプログラムがブレークします(実行前ブレーク)。 |
(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.9 コア(PE)の選択」も参照してください。 |