A.7. strace 的更改
Red Hat Developer Toolset 11.0 带有 strace 5.13。
自以前的 Red Hat Developer Toolset 发行版本以来,添加了或修改了以下功能:
行为更改
修改后的
% 进程类包含与进程生命周期(计算、执行和终止)关联的系统调用:-
新调用:
kill、tkill、tgkill、pidfd_send_signal、rt_sigqueueinfo -
删除了调用:
arch_prctl和unshare
-
新调用:
改进
-
新的
-n(--syscall-number)选项打印系统调用号。 -
新的
--secontext[=full]选项会显示 SELinux 上下文。 -
系统将实施 poke 注入,并添加了两个新选项:--
inject=SET:poke_enter=和--inject=SET:poke_exit=。 - 在 IBM POWER 构架中,添加了系统调用向量(SCV)ABI 支持。
-
libdw- 为非原生分配启用基于堆栈的追踪。 - netlink 数据以更结构化的方式打印。
-
以下系统调用的解码已实现:
close_range、epoll_pwait2、faccessat2、landlock_add_rule、landlock_create_ruleset、landlock_restrict_self、mount_setattr和process_madvise。 -
对以下系统调用的解码已被改进:
io_uring_setup、membarrier、perf_event_open、pidfd_open。 -
实现了
GPIO_*和TEE_*ioctl命令的解码。 -
以下
ioctl命令的解码已实现:fs_IOC_FS[gs]etXATTR, fs_IOC_[gs]etFLAGS, fs_IOC32_[gs]etFLAGS, lOOP_CONFIGURE, sIOCADDMULTI,sIOCDMULTI,SIOCGIFENCAP,SIOCOUTQNSD,SIOCSIFENCAP,SIOCSIFHWBROADCAST,UBI_IOCRPEB 和 UBI_IOCSPEB、V4L2BUF_TYPE_META_CAPTURE,V4L2_BUF_TYPE_META_OUTPUT和VIDIOC_QUERY_EXT_CTRL. -
实施了
NT_PRSTATUS和NT_FPREGSETregsets,并实现了Pabrt_GETREGSET和Pabrt_SETREGSETptrace请求。 -
以下
ptrace请求的regs参数已被实施:PDIB_GETREGS、PDIB_GETREGS64、、PSYS_SETREGSPDIB_SETREGS64、PSYS_GETFPREGS和P Wright_SETFPREGS。 -
实施了
IPC_INFO和MSG_INFOmsgctl系统调用命令的struct msginfo参数。 -
实现了 MSG_STAT 和
MSG_STAT_ANY参数的解码。msgctl系统调用命令的struct msqid_ds -
实施了
IPC_INFO和SEM_INFOsemctl系统调用命令的struct seminfo参数的解码。 -
实施了
IPC_SET、IPC_STAT、SEM_STAT 和参数的解码。SEM_STAT_ANY semctl 系统调用参数的struct semid_ds -
已实现
IPC_INFOshmctl系统调用命令struct shminfo参数的解码器。 -
实现了
SHM_INFOshmctl系统调用命令struct shm_info参数的解码。 -
实现了 SHM_STAT 和
参数的解码。SHM_STAT_ANYshmctl系统调用命令的struct shmid_ds -
IFLA_BRPORT_*netlink 属性的解码已更新,以匹配 Linux 5.12 内核。 -
以下常量列表已更新:
*_magic, aLG_* , audit_*,bpf_*, btrFS_*, cap_*, close_RANGE_*, dev, fANCONF_*, eth_*_*,fAN_*iflA_*,iNET_DIAG_*,iorING_*, ipv6_* , ip_*,kEXEC_*, keyCTL_* , key_*, kvm_*, kvm_*,lOOP_*,mdbA_*, memBARRIER_CMD_*,mPOL_*,ms_*, mtD_*, nda_*, nFT_MSG_*nlMSGERR_*,nt_*, pr_*, ptp_PEROUT_*, p eligible_*, res,OLVE_*, rTAX_*, rtA_* , rtc_*, rtc_*rtc_*,rtm_*,rtNH_*,rtPROT_*,sctp_*, seGV_*, so_*, statX_* , st_*, sys_*,tca_*, tca_*TRAP_*、UFFDIO_*、UFFD_*、UFFD_* 和V4L2_*。 -
ioctl命令列表已更新,以匹配 Linux 5.13 内核更新中的这些列表。 随着 RHEA-2022:4635 公告的发布,strace 现在可在实际 SELinux 上下文和从 SELinux 上下文数据库中提取的定义之间显示不匹配。
使用
不匹配参数扩展 strace 的现有--secontext选项。这个参数可让您只打印预期的上下文以及实际不匹配的上下文。输出用双感叹号(!!)分隔,第一个是实际上下文,然后是预期上下文。在下面的示例中,full,mismatch参数打印预期的完整上下文以及实际的上下文,因为上下文的用户部分不匹配。但是,在使用单独的mismatch时,它只检查上下文的类型部分。预期的上下文不会打印,因为上下文的类型部分匹配。Copy to Clipboard Copied! Toggle word wrap Toggle overflow SELinux 上下文不匹配通常会导致与 SELinux 相关的访问控制问题。系统调用 traces 中打印的不匹配可显著加快 SELinux 上下文正确性的检查。系统调用 traces 也可以解释有关访问控制检查的特定内核行为。
程序错误修复
-
修正了
SIOCGIFINDEX、SIOCBRADDIF和SIOCBRDIFioctl命令的解码。 -
clock_gettime64、clock_settime64、clock_adjtime64和lock_getres_time64系统调用添加到%clocktrace 类。 -
statx系统调用添加到%fstat跟踪类中。 -
在以前的版本中,strace 在网络接口名称打印中使用不足的缓冲区大小。这导致在试图显示需要引用的打印接口名称时导致断言,例如:
-xx模式中的名称大于 4 个字符。随着 RHEA-2022:4635 公告的发布,这个程序错误已被解决。