サービス概説

BREAK SVCは走行中プログラムの実行を中断して、オペレーターに通知する、アセンブラー・プログラムのデバッグ機能です。
中断したプログラムのPSWおよびGPR(汎用レジスター)の内容は、メッセージでTSO端末またはコンソールのいずれかに通知されます。
実行中プログラムがTSOで実行されている場合、メッセージはログオン中のTSO端末に送られます。バッチ空間で実行中のジョブまたはSTCタスクの場合、メッセージはオペレーター・コンソールに送られますが、別のプログラム製品である「SV(Storage Viewer)」のBMON(Break Monitor)機能がアクティブな時は、コンソールへのメッセージ出力の代わりに、ブレーク情報をBMON(Break Monitor)に通知します。これによって中断プログラムのデバッグを、SVパネルで対話的に行うこともできます。

BREAK SVCはメッセージの通知と共に、オペレーターからの応答を待ち受けます。
端末に表示されたリプライプロンプト(>>>)(コンソールの場合はリプライメッセージ)にコマンドを応答することで、実行中断時のレジスター内容を表示したり、プログラムが実行している空間内のメモリー内容の表示や書き換えを行うこともできます。ブレークモニターがアクティブな時は、リプライ応答の代わりに、SVパネルにコマンドを入力します。

SVCモジュール(SVCBREAK)

BREAK SVCを利用して、プログラムの実行を中断するためには、SVC命令を発行します。標準のSVC番号は「202」です。
BREAK SVCはアセンブラー言語プログラムからのみ呼び出すことができます。BREAK SVCはオブジェクトモジュールの形式で提供されます。

環境

SVCBREAKの呼出し側についての要件は、次のとおりです。
最低限の許可問題プログラム状態および任意のPSWキー。
タスク指名可能単位モードタスク・モード。
仮想記憶間モードPASN=HASN=SASN
AMODE24ビットまたは31ビット・モード。
ASCモード基本モード。
割込み状況入出力割込みおよび外部割込みのときに割込み可能である。
ロック要件なし(ロックをかけない)。


プログラミングの要件

なし。

制約事項

なし。

パフォーマンス上の含意

なし。

入力レジスター情報

SVC命令を出す前に、呼出し側はどのレジスターにも情報を入れる必要はありません。


出力レジスター情報

制御が呼び出し側に戻るとき、汎用レジスター(GPR)には以下のものが入っています。
出力レジスター情報
  GPR  内容
0〜15呼び出し時の値のまま変更されません。


戻りコード/理由コード/ABENDコード

BREAK SVCは戻りコードおよび理由コードを返しません。
また自らABENDすることもありません。


インストール


操作方法


応答コマンド

G [o] コマンド

プログラムの実行を再開します。PSWが示す命令アドレスから-2バイトの位置にある命令が、BREAK SVC命令のままであれば、PSWが示す命令アドレスから実行を再開します。書き換わっている場合は、PSWが示す命令アドレス-2バイトの位置から実行を再開します(書き換えられた命令からの再実行)。

D [ump] コマンド

ブレークしたプログラムのアドレス空間内のメモリー領域の内容をダンプします。
D   address   [length]

addressにダンプを開始するメモリーのアドレス、lengthにダンプする長さを指定します。長さの省略値は32バイトです。指定したアドレスの仮想ストレージが存在しない場合は、エラーメッセージが表示されます。ダンプの途中で有効な仮想ストレージの終わりに達した時は、そこまでのメモリー内容が表示されます。


A [lternate] コマンド

ブレークしたプログラムのアドレス空間内のメモリー領域の内容を書き換えます。
A   address   newdata

addressに書き込みを行うメモリーのアドレス、newdataに新しいデータを16進文字で指定します。指定したアドレスの仮想ストレージが存在しない場合や、プロテクトされている領域の場合は、エラーメッセージが表示されます。

再開後のプログラムの動きを変える目的で、デバッグ中プログラムの領域内容を書き換えることができます。またループの途中にBREAK SVCを埋め込んだ場合など、BREAK SVC命令をNOPR命令に書き換えることにより、ループ内でのブレーク動作を解除することができます。