2.0.2-1 (2024年12月6日)
新機能:
-
カーネル・バージョン6.10以降のトランスレータが追加され、(少なくとも) 6.12カーネルまでトランスレータがサポートされます。
-
fexitプローブに基づくFBT returnプローブで、戻り値が報告されるようになりました。
-
print()アクションは、その引数の型情報が拡張されました。
-
トレースの開始後に検出されたUSDTプローブ(プローブ指定または-Zオプションでのワイルドカードの使用による)がサポートされるようになりました。
-
USDTプローブの引数型のサポートが実装されました(変換された型および引数マッピングを含む)。
-
dtprobedのマニュアル・ページを追加しました。
-
rawfbtプロバイダが実装されました。これは、kprobesを通じて利用可能なすべての関数のトレースに使用できる新しいプロバイダです。これには、コンパイラの最適化の結果である<func>.<suffix>関数名が含まれます。
バグ修正:
-
BPFアセンブラ・ソースは「通常」のアセンブラ構文で記述されるため、-masm=normalオプションがBPF gcc呼出しに渡されます。
-
bpf_helper_defs.hの解析は、バージョンの変更に対してより寛容になりました。
-
カーネル・モジュールでBPFからCTFへの変換が機能します。
-
DTraceは、void関数の戻り値の取得を試行しなくなりました。
-
stddev()集計関数の桁上がり計算が修正されました。
-
clear()アクションでは、呼び出した集計だけがクリアされるようになりました。
-
ERRORプローブの起動により、実行によってエラーがトリガーされたプローブのプローブ引数が破損していました。
-
ERRORプローブの起動では、常に正しいプローブIDが報告されるとはかぎりません。
-
ERRORプローブ・プログラムの再配置が早すぎたため、一部の値が正しくありませんでした。
-
バッファ・サイズの計算が修正されました。
-
キャストではlvalue immutableがレンダリングされなくなりました。
-
1つのELFオブジェクト内で複数のUSDTプロバイダが機能するようになりました。
-
自身の捕捉のサポートが改善されました。
-
umod/usym/uaddrアクションが改善されました。
-
様々なメモリー・リークが解決されました。
ユーザーに認識される変更:
-
USDTプローブをサポートするヘッダー・ファイル(sdt.hなど)が/usr/lib64/dtrace/include/sysに移動されました。pkg-configのサポートが追加され、ライブラリおよびヘッダー・ファイルのインストール・パスを取得するための便利な方法が提供されています。
-
root権限を必要とするモードで実行する場合に、DTraceで適切なエラー・メッセージが表示されるようになりました。
-
dtraceおよびdtprobedのマニュアル・ページでより適切なマークアップが使用されるように更新されました。
内部変更:
-
@[mod()]や@[sym()]などのキーが、可能なかぎり統合されるようになりました。
-
トレース・データの消費では、反復ごとに1つのレコード・セットのみが処理されるようになり、不足の問題が回避されます。
-
不要コードの様々なパーツが取り除かれます。
-
プローブと句の関連付けが、文レベルで動作するようになりました。これは、トレース・プログラムの構造をより正確に反映し、トレース開始後のプローブの検出をサポートするために必要です。
-
EPIDの概念は非推奨になりました。「epid」ビルトイン変数の値は、下位互換性のために引き続き生成されます。この値にはセマンティックな意味はなく、特定のプローブのインスタンスごとに一意であるという要件を満たしています。
-
BPFトレース・プログラムで、トレースがすでに開始された後に、検出されたプローブで使用できる句を含めることができるようになりました。
-
pidプローブ、USDTプローブ、およびis-enabled USDTプローブの内部実装は、基礎となるuprobeの単一のトランポリンに統合(および簡素化)されています。
-
DTrace (特にdtprobed)はlibsystemdに依存しなくなりました。引き続き、そのアクティビティ・ステータスをsystemdに報告できます。
テストスイートの変更:
-
多くのテスト・ケースが、オプション機能に依存せず、より予測可能な動作になるように調整されました。
-
テストスイート全体でのbashとgawkの使用が、より一貫性を持つようになりました。
ビルド時:
-
配布で柔軟なファイル・システム・レイアウトを使用するように、すべてのインストール・パスを構成できます。
-
valgrindのサポートはオプションになりました。
既知の問題点:
-
(50,000を超える)大量のプローブを有効にすると、BPFプログラムを保持するために大量のメモリーが消費され、カーネル内でOOMキラーがトリガーされる可能性があります。