2.7.3 プログラムをステップ実行する

次のいずれかの操作を行うと,現在のアドレス(カレントPC値で示されるアドレス)から,ソース・レベル単位(ソース・テキスト1行分),または命令レベル単位(1命令分)でプログラムをステップ実行したのち,自動的に停止します。

プログラムの停止後は逐一各パネルの内容が自動的に更新されるため,ステップ実行は,プログラムの実行遷移をソース・レベル単位/命令単位でデバッグする場合に有効な実行方法です。

なお,ステップ実行を行う際の実行単位は,次に示すようにエディタ パネルにおける設定に依存します。

 

-

ツールバーの ボタンを無効にしている場合(デフォルト)

ソース・レベル単位によるステップ実行を行います。

ただし,逆アセンブル パネルにフォーカスがある場合,またはカレントPC値で示されるアドレスに行情報が存在しない場合は,命令レベル単位によるステップ実行を行います。

-

ツールバーの ボタンを有効にしている場合

命令レベル単位によるステップ実行を行います。

 

備考

ボタンは,エディタ パネルを混合表示モードに設定している場合のみ有効となります(「CS+ エディタ編」参照)。

 

ステップ実行には,次の種類があります。

 

2.7.3.1 関数内にステップ・インする(ステップ・イン実行)

2.7.3.2 関数をステップ・オーバする(ステップ・オーバ実行)

2.7.3.3 関数内でリターンが完了するまで実行する(リターン・アウト実行)

 

注意 1.

ステップ実行中は,設定されているブレークポイント/ブレーク・イベント/アクション・イベントを発生しません。

注意 2.

ステップ実行でスタンバイ・モード(HALT/STOP)に移行する命令を実行した場合,スタンバイ・モード命令以降の次命令で停止します。
また,使用するデバッグ・ツールによって,次のように動作が異なります。

-

【シミュレータ】以外
ステップ実行ではスタンバイ・モードに移行しません。

-

【シミュレータ】
ステップ実行でスタンバイ・モードに移行します。
スタンバイ・モードが解除されているように見えますが,スタンバイ・モードが解除されているか否かは,メイン・ウインドウのステータス・バー上のCPU状態で確認してください。

注意 3.

【シミュレータ】以外

-

ステップ実行中は,割り込みが禁止されます。また,フェイルセーフ・ブレーク【IECUBE】を発生しません。

-

ソース・レベル単位でステップ実行を行う場合,CS+は,PSWレジスタのNP/EP/IDフラグを基に割り込み処理中か否かを判断します。このため,多重割り込みを使用している場合で,上記レジスタやフラグを変更した場合は,リターン実行が正常に行われない場合があります。

注意 4.

【シミュレータ】
ステップ実行中に割り込みハンドラに飛ぶことがあります。