SLAX デバッガ、プロファイラ、コールフロー
SLAX デバッガ、プロファイラ、コールフローの概要
Junos OS CLI(コマンドライン インターフェイス)と libslax ディストリビューションには、SLAX スクリプトの実行をトレースするために使用される SLAX デバッガ(sdb)が含まれています。SLAX デバッガを使用すると、スクリプトの実行手順を実行し、定義されたブレークポイントでスクリプトの実行を一時停止し、任意の時点でスクリプト変数の値を確認できます。
SLAXデバッガ操作とコマンド構文はGNU Projectデバッガ(GDB)と類似しています。sdb コマンドの多くは、可能な限り GDB コマンドに従います。 表 1 は、SLAX デバッガ コマンドと各コマンドの簡単な説明を示しています。
SLAX デバッガには、スクリプトのアクティビティとパフォーマンスに関する情報を報告できるプロファイラが含まれています。デバッガを起動すると自動的に有効になるプロファイラは、スクリプトが終了するまでスクリプトの実行を追跡します。どの時点でも、プロファイリング情報を表示またはクリアし、プロファイラを一時的に無効または有効にすることができます。SLAX デバッガ callflow
コマンドを使用すると、スクリプトのレベルを入力または終了するときに情報データを出力できます。
コマンド |
説明 |
---|---|
ブレーク[loc] |
現在の実行ラインでスクリプトにブレークポイントを追加します。オプションで [file:]line またはテンプレート名を指定して、その位置にブレークポイントを作成します。 |
コールフロー[オン|オフ] |
コールフロートレーシングを有効または無効にします。または |
[] にloc進みます |
次のブレークポイントに達するまでスクリプトを実行し続けます。ブレークポイントが定義されていない場合は、スクリプト全体が実行されます。オプションで、[file:]line またはテンプレート名を指定します。オプションの引数を含めると、ブレークポイントまたは指定された行番号またはテンプレート名(どちらか先)に達するまでスクリプトを実行し続けます。 |
[] をnum削除 |
1 つまたはすべてのブレークポイントを削除します。ブレークポイントは、作成されると順番に番号が付けます。すべてのブレークポイントを削除するには、オプションの引数を省略します。指定したブレークポイントのみを削除する引数としてブレークポイント番号を含めます。コマンドで現在アクティブなブレークポイントを |
完了 |
現在のテンプレートの実行を完了します。 |
ヘルプ |
ヘルプメッセージを表示します。 |
情報 [プロファイル|プロファイル ブリーフ|ブレークポイント] |
現在のスクリプトに関する情報を表示します。既定のコマンドは、スクリプト内のすべてのブレークポイントを一覧表示します。オプションで または |
リスト [loc] |
現在のスクリプトの内容を一覧表示します。オプションで、[file:]line またはスクリプトの一部が一覧表示されるポイントのテンプレート名を指定します。出力には、ファイル名、行番号、コードが含まれます。 |
次に |
次の命令を実行し、関数またはテンプレート呼び出しをステップオーバーします。 |
オーバー |
次の命令を実行し、任意の関数またはテンプレート呼び出しまたは命令階層をステップオーバーします。 |
印刷<xpath> |
XPath 式の値を印刷します。 |
プロファイル [レポート | レポート ブリーフの|||クリア] |
プロファイラを有効または無効にします。プロファイラはデフォルトで有効になっています。 プロファイル情報を |
終了 |
デバッグ・モードを終了します。 |
リロード |
スクリプトを再ロードします。 |
実行 |
スクリプトの実行をスクリプトの先頭から再起動します。 |
ステップ |
次の命令を実行し、関数またはテンプレート呼び出しまたは命令階層にステップインします。 |
どこ |
テンプレートコールのバックトレースを表示します。 |
SLAX デバッガ、プロファイラ、およびコールフローの使用方法
SLAX デバッガの呼び出し
libslax ディストリビューションの Junos OS CLI および SLAX プロセッサーには、SLAX スクリプトの実行をトレースするために使用される SLAX デバッガ(sdb)が含まれています。
SLAX デバッガーを呼び出すと、コマンド ライン プロンプトが (sdb) に変わり、デバッグ モードであることを示します。例えば:
sdb: The SLAX Debugger (version ) Type 'help' for help (sdb)
Junos OS CLI から SLAX デバッガを使用する場合、設定で有効になっている op スクリプトでのみデバッガを使用できます。Junos OS を実行しているデバイスで CLI から SLAX デバッガを呼び出すには、運用モード コマンドを op invoke-debugger cli
発行し、op スクリプト名を含め、必要なスクリプト引数を指定する必要があります。
user@host> op invoke-debugger cli script <argument-name argument-value>
次の例では、2 つのパラメーターinterface
を持つ op スクリプト ge-interfaces.slax の SLAX デバッガを呼び出しますprotocol
。値は、両方の引数に提供されます。
user@host> op invoke-debugger cli ge-interfaces interface ge-0/2/0.0 protocol inet sdb: The SLAX Debugger (version ) Type 'help' for help (sdb)
SLAX プロセッサーを使用するときに SLAX デバッガを呼び出すには、 または -d
オプションをslaxproc
付けて コマンドを--debug
発行します。スクリプト ファイルと、入力ファイルまたは出力ファイルを指定します。入力ファイルが必要ない場合は、 オプションを-E
使用して空の入力文書を示します。または --input
引数の-i
値が「-」の場合、または入力オプションまたは入力ファイルを含まない場合は、標準入力が使用されます。標準入力を使用する場合は、Ctrl+dを押してファイルの終わりを知らせます。一般的な構文は次のとおりです。
$ slaxproc --debug [options] [script] [files]
次の例では、空の入力ドキュメントと出力ファイル script1-output.xml を使用してスクリプト script1.slax の SLAX デバッガを呼び出します。
$ slaxproc --debug -n script1.slax -o script1-output.xml -E sdb: The SLAX Debugger (version ) Type 'help' for help (sdb)
SLAX デバッガ(sdb)の使用
SLAX デバッガのヘルプ メッセージを表示するには、(sdb)プロンプトで コマンドを発行 help
します。単一のコマンドのヘルプメッセージを表示するには、 を発行 help command
します。 command は、より多くの情報を必要とするsdbコマンドです。例えば:
(sdb) help break break [loc] Add a breakpoint at [file:]line or template
スクリプトをデバッグするプロセスは、スクリプトによって異なります。ここでは、一般的なアウトラインを示します。
SLAX プロファイラの使用
SLAX デバッガには、スクリプトのアクティビティとパフォーマンスに関する情報を報告できるプロファイラが含まれています。デバッガを起動すると自動的に有効になるプロファイラは、スクリプトが終了するまでスクリプトの実行を追跡します。どの時点でも、プロファイリング情報を表示またはクリアし、プロファイラを一時的に無効または有効にすることができます。
プロファイラにアクセスするには、SLAX デバッガ プロンプト(sdb)で コマンドを発行 profile
し、任意のオプションを含めます。profile コマンド構文は次のとおりです。
(sdb) profile [options]
表 2 は、profile コマンド オプションを示しています。追加のオプションなしで コマンドを発行すると profile
、プロファイラのオンとオフが切り替わります。
(sdb) profile Disabling profiler (sdb)
(sdb) プロンプトで コマンドを help profile
発行すると、プロファイラのヘルプにアクセスできます。
オプション |
説明 |
---|---|
クリア |
プロファイリング情報のクリア |
オフ |
プロファイリングを無効にする |
に |
プロファイリングを有効にする |
レポート [概要] |
レポート・プロファイリング情報 |
プロファイラを有効にし、レポートを印刷するには、次の手順にしたがっています。
プロファイル レポートには、以下の情報が含まれています。
Line
ソースファイルの行番号。Hits
-この行が実行された回数。User
—この回線の処理に費やされた「ユーザー」時間のマイクロ秒の数。U/Hit
— ヒット当たりの「ユーザー」時間の平均マイクロ秒数。System
—この回線の処理に費やされた「システム」時間のマイクロ秒。S/Hit
— ヒット当たりの「システム」時間の平均マイクロ秒数。Source
-ソースコード行。
この情報は、コードの実行中にどれだけの時間が費やされているかを示すだけでなく、どの行が実行されているかを示すこともできます。これは、実行が期待値に一致しないスクリプトをデバッグするのに役立ちます。
コールフローの使用
SLAX デバッガ callflow
コマンドを使用すると、スクリプトのレベルを入力または終了するときに情報データを出力できます。
スクリプトのコールフローを有効にし、コールフローデータを表示するには、