Vue ライブラリー関数
C言語やFORTRAN言語、あるいは母国語で書かれたプログラムとは異なり、Vueで書かれたスクリプトは、AIX®システム・ライブラリやユーザ・ライブラリによって提供されるサブルーチンにはアクセスできません。 しかし、Vue は動的トレース・プログラムに役立つ、独自の特殊な内部関数ライブラリーをサポートしています。
- トレース固有の関数
- get_function
- 現行プローブを囲む関数の名前を戻します。 get_function 関数は、interval、systrace、BEGIN、および END 節から呼び出されると、空のストリングを返します。
- タイム・スタンプ
- 現在のタイム・スタンプを戻します。
- diff_time
- 2 つのタイム・スタンプの時間差をマイクロ秒またはミリ秒で検出します。
- トレース収集関数
- printf
- 変数と式の値をフォーマットして印刷します。
- trace
- データをフォーマットしないで印刷します。
- stktrace
- スタック・トレースをフォーマットして印刷します。
- リスト関数
- リスト
- リスト変数をインスタンス化します。
- append
- 新しい項目をリストに追加します。
- sum、max、min、avg、count
- リスト変数に適用可能な集約関数。
- C ライブラリー関数
- atoi、strstr
- 標準の文字列関数。
- 一時トレースをサポートする関数
- start_tentative、end_tentative
- 一時トレースの開始と終了を示すインディケーター。
- commit_tentative、discard_tentative
- 一時トレースのデータをコミットまたは廃棄します。
- その他の関数
- exit
- Vue スクリプトを終了します。
- get_userstring
- ユーザー・メモリーから文字列 (またはデータ) を読み取ります。
- ptree
- プローブしているプロセスのプロセス・ツリーを表示します。
Vue 文字列関数は、ポインター変数ではなく、文字列型の変数にのみ適用できます。 strcpy や strcat などの標準の文字列関数は、言語の構文自体でサポートされているため、Vue では必要ありません。
ProbeVue コンパイラーは、 Vue 関数に渡されるパラメーターのデータ型を検証します。
printf 関数の場合、フォーマット文字列に指定されたフォーマット指定子ごとに、printf 関数に引数が提供されているかどうかを検査するための妥当性検査が行われます。 フォーマット指定子の合計数と printf 関数に渡される引数の合計数は等しくなければなりません。 これに加え、渡された引数の型が、フォーマット文字列のフォーマット指定子として指定された実際の型と互換性があるかどうかを突き合わせるための妥当性検査も行われます。 これらの検査に失敗すると、Probevue はエラー・メッセージをスローします。
例:
printf(“hello world %s, %d\n”, str);%dには引数が渡されないので、コンパイラーからのエラー・メッセージをスローします。 同様に、Printf(“The total count of elements is %d\n”, str);でもエラー・メッセージがスローされます。その理由は、指定されたフォーマットが %d であるのに対し、渡された引数 str 変数が文字列であるためです。その他の機能の関数
ただし、次のように指定した場合、
printf (“The total count of elements is %lld\n”, i);(ここで、i は int 型の変数です) エラー・メッセージはスローされません。なぜならば、変数 i は、要求されたフォーマット指定子の互換型だからです。 そのため、厳密な型の検査は行われませんが、互換型の検査が行われます。Vue 節の述部セクションに関数を入れることはできません。