Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

SLAX デバッガ、プロファイラ、コールフロー

SLAX デバッガ、プロファイラ、コールフローの概要

Junos OS CLI(コマンドライン インターフェイス)と libslax ディストリビューションには、SLAX スクリプトの実行をトレースするために使用される SLAX デバッガ(sdb)が含まれています。SLAX デバッガを使用すると、スクリプトの実行手順を実行し、定義されたブレークポイントでスクリプトの実行を一時停止し、任意の時点でスクリプト変数の値を確認できます。

SLAXデバッガ操作とコマンド構文はGNU Projectデバッガ(GDB)と類似しています。sdb コマンドの多くは、可能な限り GDB コマンドに従います。 表 1 は、SLAX デバッガ コマンドと各コマンドの簡単な説明を示しています。

SLAX デバッガには、スクリプトのアクティビティとパフォーマンスに関する情報を報告できるプロファイラが含まれています。デバッガを起動すると自動的に有効になるプロファイラは、スクリプトが終了するまでスクリプトの実行を追跡します。どの時点でも、プロファイリング情報を表示またはクリアし、プロファイラを一時的に無効または有効にすることができます。SLAX デバッガ callflow コマンドを使用すると、スクリプトのレベルを入力または終了するときに情報データを出力できます。

表 1:SLAX デバッガ コマンド

コマンド

説明

ブレーク[loc]

現在の実行ラインでスクリプトにブレークポイントを追加します。オプションで [file:]line またはテンプレート名を指定して、その位置にブレークポイントを作成します。

コールフロー[オン|オフ]

コールフロートレーシングを有効または無効にします。または off 値をon明示的に指定できます。値を省略すると、コールフローのオンとオフが切り替わります。

[] にloc進みます

次のブレークポイントに達するまでスクリプトを実行し続けます。ブレークポイントが定義されていない場合は、スクリプト全体が実行されます。オプションで、[file:]line またはテンプレート名を指定します。オプションの引数を含めると、ブレークポイントまたは指定された行番号またはテンプレート名(どちらか先)に達するまでスクリプトを実行し続けます。

[] をnum削除

1 つまたはすべてのブレークポイントを削除します。ブレークポイントは、作成されると順番に番号が付けます。すべてのブレークポイントを削除するには、オプションの引数を省略します。指定したブレークポイントのみを削除する引数としてブレークポイント番号を含めます。コマンドで現在アクティブなブレークポイントを info 表示します。

完了

現在のテンプレートの実行を完了します。

ヘルプ

ヘルプメッセージを表示します。

情報 [プロファイル|プロファイル ブリーフ|ブレークポイント]

現在のスクリプトに関する情報を表示します。既定のコマンドは、スクリプト内のすべてのブレークポイントを一覧表示します。オプションで または profile brief 引数をprofile指定して、プロファイリング情報を表示します。

リスト [loc]

現在のスクリプトの内容を一覧表示します。オプションで、[file:]line またはスクリプトの一部が一覧表示されるポイントのテンプレート名を指定します。出力には、ファイル名、行番号、コードが含まれます。

次に

次の命令を実行し、関数またはテンプレート呼び出しをステップオーバーします。

オーバー

次の命令を実行し、任意の関数またはテンプレート呼び出しまたは命令階層をステップオーバーします。

印刷<xpath>

XPath 式の値を印刷します。

プロファイル [レポート | レポート ブリーフの|||クリア]

プロファイラを有効または無効にします。プロファイラはデフォルトで有効になっています。

プロファイル情報を clear クリアするためのオプションを含めます。現在のスクリプトの report プロファイリング情報を表示するには、 または report brief オプションを含めます。

終了

デバッグ・モードを終了します。

リロード

スクリプトを再ロードします。

実行

スクリプトの実行をスクリプトの先頭から再起動します。

ステップ

次の命令を実行し、関数またはテンプレート呼び出しまたは命令階層にステップインします。

どこ

テンプレートコールのバックトレースを表示します。

SLAX デバッガ、プロファイラ、およびコールフローの使用方法

SLAX デバッガの呼び出し

libslax ディストリビューションの Junos OS CLI および SLAX プロセッサーには、SLAX スクリプトの実行をトレースするために使用される SLAX デバッガ(sdb)が含まれています。

SLAX デバッガーを呼び出すと、コマンド ライン プロンプトが (sdb) に変わり、デバッグ モードであることを示します。例えば:

Junos OS CLI から SLAX デバッガを使用する場合、設定で有効になっている op スクリプトでのみデバッガを使用できます。Junos OS を実行しているデバイスで CLI から SLAX デバッガを呼び出すには、運用モード コマンドを op invoke-debugger cli 発行し、op スクリプト名を含め、必要なスクリプト引数を指定する必要があります。

次の例では、2 つのパラメーターinterfaceを持つ op スクリプト ge-interfaces.slax の SLAX デバッガを呼び出しますprotocol。値は、両方の引数に提供されます。

SLAX プロセッサーを使用するときに SLAX デバッガを呼び出すには、 または -d オプションをslaxproc付けて コマンドを--debug発行します。スクリプト ファイルと、入力ファイルまたは出力ファイルを指定します。入力ファイルが必要ない場合は、 オプションを-E使用して空の入力文書を示します。または --input 引数の-i値が「-」の場合、または入力オプションまたは入力ファイルを含まない場合は、標準入力が使用されます。標準入力を使用する場合は、Ctrl+dを押してファイルの終わりを知らせます。一般的な構文は次のとおりです。

次の例では、空の入力ドキュメントと出力ファイル script1-output.xml を使用してスクリプト script1.slax の SLAX デバッガを呼び出します。

SLAX デバッガ(sdb)の使用

SLAX デバッガのヘルプ メッセージを表示するには、(sdb)プロンプトで コマンドを発行 help します。単一のコマンドのヘルプメッセージを表示するには、 を発行 help commandします。 command は、より多くの情報を必要とするsdbコマンドです。例えば:

スクリプトをデバッグするプロセスは、スクリプトによって異なります。ここでは、一般的なアウトラインを示します。

  1. デバッグ・モードに入ります。
  2. コマンドを使用してスクリプトにブレークポイントを break 挿入します。

    実行中、デバッガは定義されたブレークポイントで一時停止します。

    ブレークポイントの場所には、現在のスクリプトのテンプレート名または行番号、またはコロンで区切られたファイル名と行番号を指定できます。引数を含めなかった場合は、現在の実行行にブレークポイントが作成されます。ブレークポイントは、作成時に順番に番号が付けます。ブレークポイントのリストを表示するには、 コマンドを info breakpoints 発行します。ブレークポイントを削除するには、 コマンドを delete num 発行し、ブレークポイント番号を指定します。すべてのブレークポイントを削除するには、引数を指定せずに コマンドを delete 実行します。

    次の例では、3 つのブレークポイント、1 行目は 7 行目、2 番目のブレークポイントは 25 行目、3 つ目の点は「3」という名前のテンプレートを作成します。

  3. たとえば、デバッガプロンプトで 、 finishnextover、および step のコマンドをcontinue発行することで、スクリプトの実行を増分します。
  4. プログラムが実行する変数の値を確認して、期待値を持っていることを確認します。
  5. スクリプトの内容を任意の時点で再ロードし、スクリプトの実行を最初から再開するには、 コマンドを reload 発行します。

SLAX プロファイラの使用

SLAX デバッガには、スクリプトのアクティビティとパフォーマンスに関する情報を報告できるプロファイラが含まれています。デバッガを起動すると自動的に有効になるプロファイラは、スクリプトが終了するまでスクリプトの実行を追跡します。どの時点でも、プロファイリング情報を表示またはクリアし、プロファイラを一時的に無効または有効にすることができます。

プロファイラにアクセスするには、SLAX デバッガ プロンプト(sdb)で コマンドを発行 profile し、任意のオプションを含めます。profile コマンド構文は次のとおりです。

表 2 は、profile コマンド オプションを示しています。追加のオプションなしで コマンドを発行すると profile 、プロファイラのオンとオフが切り替わります。

(sdb) プロンプトで コマンドを help profile 発行すると、プロファイラのヘルプにアクセスできます。

表 2:プロファイル コマンド オプション

オプション

説明

クリア

プロファイリング情報のクリア

オフ

プロファイリングを無効にする

プロファイリングを有効にする

レポート [概要]

レポート・プロファイリング情報

プロファイラを有効にし、レポートを印刷するには、次の手順にしたがっています。

  1. デバッグ・モードに入ります。プロファイラはデフォルトで有効になっています。
  2. スクリプトの実行手順を実行するか、スクリプト全体を実行します。
  3. スクリプト実行中の任意の時点で、プロファイリング情報を表示します。

    この オプションは brief 、有効な情報がないため、ヒットしなかった行を表示しないように sdb に指示します。オプションを brief 省略すると、ダッシュが表示されます。

    以下のサンプル出力は、 オプションの 有無に関するプロファイル レポートを brief 示しています。この例のソース コード データは、表示目的で切り捨てられます。

プロファイル レポートには、以下の情報が含まれています。

  • Lineソースファイルの行番号。

  • Hits-この行が実行された回数。

  • User—この回線の処理に費やされた「ユーザー」時間のマイクロ秒の数。

  • U/Hit— ヒット当たりの「ユーザー」時間の平均マイクロ秒数。

  • System—この回線の処理に費やされた「システム」時間のマイクロ秒。

  • S/Hit— ヒット当たりの「システム」時間の平均マイクロ秒数。

  • Source-ソースコード行。

この情報は、コードの実行中にどれだけの時間が費やされているかを示すだけでなく、どの行が実行されているかを示すこともできます。これは、実行が期待値に一致しないスクリプトをデバッグするのに役立ちます。

コールフローの使用

SLAX デバッガ callflow コマンドを使用すると、スクリプトのレベルを入力または終了するときに情報データを出力できます。

スクリプトのコールフローを有効にし、コールフローデータを表示するには、

  1. デバッグ・モードに入ります。
  2. callflow SLAX デバッガ プロンプト(sdb)で コマンドを発行します。
  3. スクリプトの実行手順を実行するか、スクリプト全体を実行します。

    コールフローは、さまざまなレベルのスクリプトに出入りする情報を出力します。各出力行は、フレームの命令、ファイル名、および行番号を参照します。