JP1/Advanced Shell

[目次][用語][索引][前へ][次へ]


6.2.4 ブレークポイントを設定する(breakコマンド)

ブレークポイントを設定するコマンドは,breakコマンドです。breakコマンドの短縮形は"b"です。

設定したブレークポイントには,1から順に番号が割り当てられます。番号の割り当てはウォッチポイントと共通です。実行中のジョブ定義スクリプトがブレークポイントに到達すると実行を停止し,停止位置のブレークポイント情報を表示します。breakコマンドの形式を次に示します。

行番号を指定する場合
 
break[ [ジョブ定義スクリプトファイル名:]行番号

breakコマンドの引数に行番号を指定すると,指定した行にブレークポイントを設定します。

関数名を指定する場合
 
break 関数名
 

breakコマンドの引数に関数名を指定すると,指定した関数にブレークポイントを設定します。

ジョブステップ名を指定する場合
 
break -s [ジョブ定義スクリプトファイル名:]ジョブステップ名
 

-sオプションを指定し,ジョブステップ名を指定すると,ジョブステップ名が定義されている行にブレークポイントを設定できます。

引数に”:”を使用すれば,ジョブ定義スクリプトファイル名を指定してブレークポイントを設定できます。ただし,関数名を指定する場合はそのとき有効になっている1個の関数が対象となるため,ファイル名を指定する必要はありません。

breakコマンドを実行した場合の動作を次に示します。

breakコマンドの後ろに引数を指定しない場合
現在停止中の行にブレークポイントを設定します。ただし,ジョブ定義スクリプトが実行されていないときは,1行目以降で最初に停止できる行にブレークポイントを設定します。設定したブレークポイントの情報を表示します。

breakコマンドの後ろに引数を指定した場合
指定した引数によって動作が異なります。詳細を次に示します。
  • 行番号
    引数に指定した行にブレークポイントを設定します。設定したブレークポイントの情報を表示します。指定した行がない場合,エラーとなります。
  • 関数名
    引数に指定した関数にブレークポイントを設定します。設定したブレークポイントの情報を表示します。ブレークポイントの位置は,関数定義内で最初に停止できる行になります。指定した関数がない場合,エラーとなります。
  • -s ジョブステップ名
    引数に指定したジョブステップにブレークポイントを設定します。設定したブレークポイントの情報を表示します。指定したジョブステップがない場合,エラーとなります。
  • ジョブ定義スクリプトファイル名
    指定するファイル名には,バッチジョブを実行するコマンドに指定したファイルまたはスクリプト拡張コマンドの#-adsh_scriptに指定したファイルを指定してください。指定したファイル名をブレークポイント設定の対象とします。また,ファイル名の指定を省略すると,カレントファイルをブレークポイント設定の対象とします。

注意事項
  • ジョブ定義スクリプトファイル名の指定は,最後に入力された”:”の前までの文字列をファイル名と見なします。
  • 行番号は0以上の整数を入力してください。先頭に「+」は付けません。
  • 行番号の指定時にint型の範囲を超えた数値を入力した場合,int型の上限値に丸めて扱います。
  • 同じ名称のジョブステップが複数存在する場合,それらすべてにブレークポイントを設定します。
  • 設定できるブレークポイントとウォッチポイントの番号を合わせて上限は999です。合計数が上限の999に達してから新たにブレークポイントまたはウォッチポイントを設定したい場合は,デバッガをいったん終了してください。上限値に達した場合,deleteコマンドでブレークポイントやウォッチポイントを削除しても,設定できません。
  • 停止できるコマンドが1つ以上含まれている行であれば,ブレークポイントを設定できます。1行に複数の停止できるコマンドがある場合,各コマンドの実行前に停止します。
  • 行番号の指定で,停止できないコマンドだけで構成される行を指定した場合,警告メッセージが出力され,次に停止できるコマンドがある行にブレークポイントが設定されます。
    次に停止できるコマンドがない場合は,エラーメッセージが出力されます。
  • 関数の内部に停止できるコマンドが1つも定義されていない状態で関数名を指定すると,関数定義の終了以降の行で停止できるコマンドがある行にブレークポイントを設定します。また,関数定義と同じ行に停止できるコマンドがある場合,そのコマンドが関数内のコマンドかどうかに関係なく,関数定義のある行にブレークポイントを設定します。
  • ジョブステップを定義するスクリプト拡張コマンドを複数行に分けて記述している場合,ジョブステップ指定で設定するブレークポイントの行番号は,先頭のスクリプト拡張コマンドが記述されている行番号になります。
  • 外部スクリプトに対するブレークポイントの設定は,その外部スクリプトを呼び出す側のジョブ定義スクリプト中で,その外部スクリプトをスクリプト拡張コマンド#-adsh_scriptに指定して呼び出したときにだけ可能です。#-adsh_scriptに指定していない外部スクリプト内では停止できません。
  • 同一の行に設定できるブレークポイントの数は1個です。ブレークポイントを設定済みの行には設定できません。
  • デバッグ実行中のジョブ定義スクリプトが次に示すどちらかの状態の場合は,breakコマンドに引数を指定しないで実行しないでください。
    ・ジョブ定義スクリプト終端(EOF)で停止している
    ・trapコマンドのactionを実行中に停止している

使用例
ジョブ定義スクリプトの8行目にブレークポイントを設定してジョブ定義スクリプトを実行すると,8行目の「funcA」の実行前で停止します。
 
1: funcA(){
2:   echo "funcA"
3:   num=10
4: }
5:
6: val=1
7: num=2
8: funcA
9: echo $num
 
 
(adshdb) break 8
KNAX7018-I Breakpoint "1": filename="test.ash" line=8
(adshdb) run
…
KNAX7018-I Breakpoint "1": filename="test.ash" line=8
KNAX7032-I Stop in the script "test.ash".
8: funcA
Current: funcA
(adshdb)
 

[目次][前へ][次へ]


[他社商品名称に関する表示]

All Rights Reserved. Copyright (C) 2011, 2012, Hitachi, Ltd.