Contained WithinFind More DocumentationFeatured Support Resources | Download this book in PDF (2302 KB)
第 41 章 バージョン管理第 39 章安定性では、DTrace 機能を使って、自作の D プログラムの安定性属性を確認する方法を学びました。適切な安定性属性を持つ D プログラムを作成したあと、このプログラムを特定の「バージョン」の D プログラミングインタフェースに結合できます。D インタフェースのバージョンとは、D コンパイラから提供される型、変数、関数、定数、およびトランスレータから成る特定のセットに適用される、ラベルのようなものです。特定のバージョンの D プログラミングインタフェースへの結合を指定すると、次回以降のバージョンの DTrace でこのプログラムを再コンパイルする際、新しいバージョンの D プログラミングインタフェースで定義されるプログラム識別子と、今回ユーザーが定義したプログラム識別子の衝突が起こらなくなります。持続的なスクリプト (第 15 章スクリプトの作成を参照) としてインストールする D プログラムや、階層化ツールで使用したい D プログラムには、バージョンの結合を指定します。 バージョンとリリースD コンパイラは、「バージョン文字列」を使って、特定のソフトウェアリリースに対応する型、変数、関数、定数、およびトランスレータから成るセットにラベルを付けます。バージョン文字列は、10 進整数をピリオドで区切った形式の文字列です。メジャーリリースは「x」、マイナーリリースは「x.y」、マイクロリリースは「x.y.z」の形式をとります。バージョンを比較するときは、バージョン文字列の整数を左から順に比較します。一番左の整数の値が大きいほうが新しいバージョンです。一番左の整数の値が同じである場合は 1 つ右の整数、この整数の値も同じである場合はもう 1 つ右の整数が比較されます。バージョン文字列の一部が指定されていない場合、その部分にはゼロが入っているものと解釈して比較されます。 DTrace のバージョン文字列は、Sun のインタフェースのバージョンの標準的な命名法に従って決定されます。attributes(5) を参照してください。D プログラミングインタフェースに変更が加えられると、バージョン文字列が更新されます。以下の表に、DTrace のバージョン文字列と、このバージョン文字列で表される DTrace ソフトウェアリリースの意味をまとめます。 表 41–1 DTrace リリースバージョン
通常、D プログラミングインタフェースの新しいバージョンでは、以前のバージョンで提供されていた機能の上位集合が提供されます。ただし、削除された「廃止」インタフェースは例外です。 バージョン管理オプションデフォルトでは、dtrace -s または dtrace -P、-m、-f、-n、-i などを指定してコンパイルした D プログラムは、D コンパイラが提供する最新の D プログラミングインタフェースバージョンに結合されます。現在の D プログラミングインタフェースのバージョンを確認するには、dtrace -V コマンドを実行します。
特定のバージョンの D プログラミングインタフェースに結合したい場合は、適切なバージョン文字列に version オプションを設定します。その他の DTrace オプションと同じく (第 16 章オプションとチューニング可能パラメータを参照)、バージョンオプションを設定するときは、コマンド行で dtrace -x を実行します。
#pragma D オプション構文を使って、D プログラムソースファイルにオプションを設定することもできます。 #pragma D option version=1.0
BEGIN
{
trace("hello");
}
#pragma D option 構文を使ってバージョン結合を要求する場合は、この指令を D プログラムファイルの最上部、その他の宣言やプローブ節よりも前に置く必要があります。バージョン結合引数が有効なバージョン文字列でない場合、または D コンパイラから提供されていないバージョンを参照している場合、エラーメッセージが出力され、コンパイルは失敗します。このため、バージョン結合機能を使えば、古いバージョンの DTrace 上で D スクリプトが実行された場合に、わかりやすいエラーメッセージを出して失敗させることもできます。 D コンパイラは、プログラムの宣言や節をコンパイルする前に、インタフェースのバージョンに合った D 型、関数、定数、およびトランスレータから成るセットを、コンパイラ名前空間にロードします。したがって、プログラム内で定義されている変数、型、およびトランスレータに加えて、このプログラムからアクセスできる識別子、型、およびトランスレータから成るセットも、ユーザーが指定したバージョン結合オプションによって制御されます。バージョン結合されていると、プログラムのソースコード内の宣言と矛盾する (したがってコンパイルエラーの原因となる) 識別子やトランスレータの定義が含まれるような新しいインタフェースが、D コンパイラによってロードされることはありません。将来のバージョンの DTrace が提供するインタフェースと矛盾しない識別子名を選択する方法については、「識別子名とキーワード」を参照してください。 プロバイダのバージョン管理DTrace プロバイダが提供するインタフェース (プローブとプローブ引数) は、D コンパイラが提供するインタフェースとは異なり、D プログラミングインタフェースや、先ほど説明したバージョン結合オプションの影響を受けません。使用可能なプロバイダインタフェースは、オペレーティングシステムカーネル内の DTrace ソフトウェアにコンパイル済みの計測機能をロードするときに決定されます。これらは、使用している命令セットアーキテクチャ、オペレーティングプラットフォーム、プロセッサ、Solaris システムにインストールされているソフトウェア、および現在のセキュリティ権限によって異なります。D コンパイラと DTrace ランタイムは、D プログラム節内のプローブを検査し、D プログラムから要求されたプローブが使用できない場合はエラーメッセージを返します。これらの機能は、D プログラミングインタフェースのバージョンとは異なる概念に基づいています。これは、DTrace プロバイダが、D プログラム内の定義と矛盾するインタフェースをエクスポートしないからです。言い換えると、D では、プローブを有効化することはできても定義することはできず、プローブ名は、その他の D プログラム識別子とは別の名前空間に格納されます。 配布される DTrace プロバイダは、Solaris リリースによって異なります。該当するリリース用の『Solaris 動的トレースガイド』を参照してください。このマニュアルの各プロバイダごとの章には、変更点や新機能の説明も含まれます。Solaris システム上で使用できるプロバイダとプローブについて調べるには、dtrace -l を使用します。プロバイダは、DTrace の安定性属性を使って、インタフェースにラベルを付けます。ユーザーは、DTrace の安定性報告機能 (第 39 章安定性を参照) を使って、D プログラムで使用されているプロバイダインタフェースが将来の Solaris リリースでも引き続き提供されるか、あるいは変更されるかを判断できます。 |
||||||||||||||