A.5. strace の変更点

Red Hat Developer Toolset 10.0 には strace 5.7 が同梱されています。

以下の機能は、Red Hat Developer Toolset の以前のリリース以降に追加または変更されています。

動作の変更

  • %process クラスに、プロセスのライフサイクル (再作成、実行、終了) に関連するシステムコールが含まれるようになりました。

    • killtkilltgkillpidfd_send_signalrt_sigqueueinfo が追加されました。
    • arch_prctl および unshare が削除されました。
  • 不明なトレースに関するメッセージは、strace の quietness 設定 -q (--quiet) の対象になるようになりました。
  • 新しい警告が追加されました。これは、-A (--output-append-mode) オプションが -o (--output) なしで使用されたり、 -S (--summary-sort-by) オプションが -c/-C (--summary-only/--summary) なしで実行されたときに起こります。

改良

  • short オプションはすべて長いオプションエイリアスを持つようになりました。この変更により、以下の改善が行われています。

    • -I (--interruptible) オプションに人間が判読できる設定を使用する機能。
    • -e quiet (--quiet) オプションのエイリアス) を使用して特定のメッセージをサイレンスにする機能 (-q オプションのエイリアス)。これには、パス解決メッセージや、execve によって置き換えられるプロセスに関するメッセージなど、以前に非表示にできないメッセージが含まれます。
    • -y オプションのエイリアスである -e decode-fds (--decode-fds) 修飾子を使用して選択した柔軟なデータ (FD) デコード機能を指定する機能。
    • 絶対タイムスタンプ、相対タイムスタンプ、およびシステムコール時間の出力の精度を設定する機能。--absolute-timestamps--relative-timestamps--syscall-times オプションをそれぞれ使用します。
  • システムコールのリターンステータスフィルタリングは、-e status=set オプションとそのエイリアスを使用して実装されています。

    • この -z (--successful-only) オプションでは、システムコールの出力が成功したシステムコールのみに制限されます。
    • この -Z (--failed-only) オプションでは、システムコールの出力が失敗したシステムコールのみに制限されます。
  • PID (プロセス ID) 名前空間変換の --pidns-translation オプションが追加されました。この改善により、Fedora bug BZ#1035433 に対応しています。
  • seccomp-BPF を使用して、フィルターされたシステムコールのトレースのみを停止できるようになりました。この機能を有効にするには、--seccomp-bpf オプションを使用します。
  • -D (--daemonize) オプションへの 2 つの拡張機能が実装されました。これらは、strace 別のプロセスグループ (-DD または --daemonize=pgroup) およびセッション (-DDD または --daemonize=session) に移動します。
  • システムコールの改ざん式の when= サブ表現における間隔指定が実装されました。
  • -U (--summary-columns) オプションを使用して、呼び出しサマリー出力で表示される列のセットを選択できるようになりました。
  • すべてのサマリー列でソートできるようになりました。
  • システムコール数の統計が強化されました。オーバーヘッドがコールごとに適用されるようになりました。
  • コールサマリーの出力で、最小および最大呼び出し時間に関する情報を表示できるようになりました。
  • システムコールの遅延インジェクションおよびオーバーヘッド値は、時間測定単位接尾辞とともに提供でき、IEEE 754 の浮動小数点形式で提供できるようになりました。詳細は、strace の man ページの「Time specification format description」セクションを参照してください (scl enable devtoolset-10 - man strace コマンドで利用可能)。
  • -yy (--decode-fds=pidfd) モードでのプロセスファイル記述子に関連付けられた PID の出力が実装されました。
  • シンボルツーアドレスキャッシュを実装することで、libdw-based スタックトレース出力のパフォーマンスが向上しました。
  • システムクロックの変更に関するシステムコールの追跡を行うための -e trace=%clock オプションが追加されました。
  • プロセス認証情報に関連するシステムコールを追跡するために、-e trace=%creds オプションが追加されました。
  • 以下のシステムコールのデコードが実装されました。clone3fsconfigfsmountfsopenfspickopen_treeopenat2move_mountpidfd_getfd、および pidfd_open
  • 以下のシステムコールのデコードが改良されました。arch_prctlbpfcloneinotify_initio_cancelio_submitio_uring_registerio_uring_setupkeyctl、mbind perf_event_openprctls390_sthyi、 sched_getattrsched_setattrset_mempolicysyscall、および syslog
  • 以下の ioctl コマンドによるデコードが実装されました。PTP_CLOCK_GETCAPS2PTP_EXTTS_REQUEST2PTP_PEROUT_REQUEST2 PTP_ENABLE_PPS2PTP_SYS_OFFSET2RTC_VL_READ、および WDIOC_*
  • HIDIOCGRAWUNIQ() ioctl コマンド番号出力が実装されました。
  • NETLINK_ROUTE netlink プロトコルのデコードが強化されました。
  • 以下の netlink 属性のデコードが実装されています。IFLA_*TCA_ACT_FLAGSTCA_STATS_PKT64、および UNIX_DIAG_UID
  • 以下の定数の一覧が更新されました。AT_*AUDIT_*BPF_*BTRFS_*CAN_*CLONE_*ETH_*FAN_*GRND_*IFLA_*IORING_*IPPROTO_*KEXEC_*KEY_*KEYCTL_*KVM_*LWTUNNEL_*MADV_**_MAGICMAP_*MPOL_*MREMAP_*MSG_*P_*PERF_*PPC_PTRACE_*PR_*PTP_*RTM_F_*SCHED_*SCTP_*SECCOMP_*SO_*STATX_*TCP_*TIPC_*UFFDIO_*V4L2_*、およびXDP_*
  • strace の man ページと、strace --help コマンドの出力が強化されました。

バグ修正

  • statx システムコールが %fstat トレースクラスに追加されました。
  • getdents および getdents64 システムコールのデコードは、ディレクトリーエントリーが多数返される場合に修正されました。
  • openat2 システムコールのパストレースが修正されました。
  • VIDIOC_* ioctl 出力フォーマットのさまざまなマイナーな修正が加えられました。
  • strace がスタックトレースの libdw バックエンドを使用するように設定されている場合、スタックトレースプリントは初期のシステム呼び出しに対して修正されています。この改善により、Fedora bug BZ#1788636 に対応しています。
  • NDA_LLADDR netlink neighbor table 属性のデコードが修正されました。
  • BPF_PROG_LOAD BPF システムコールコマンドのデコードが修正されました。
  • evdev ioctl ビットセット のデコードが修正されました。