Strace是一个CLI实用程序,用于检查系统中的错误 因为 允许监视系统调用 由某个程序使用以及它接收到的所有信号。 公用事业 允许用户监视和 (从4.15版开始) 干预程序与核心之间的交互过程包括正在进行的系统调用,弹出窗口和过程状态更改
linux内核的一个称为ptrace的功能使它的操作成为可能。 它类似于其他Unix系统上可用的truss应用程序。 Cygwin程序提供了类似的实用程序。 它最常见的用途是与要跟踪的程序一起启动它,该程序会打印出它执行的系统调用的列表。
找出某个程序失败的原因很有用或因为它报告了某些情况,例如程序正在尝试访问一个不存在的文件或该文件没有读取权限的文件。
在从Strace中脱颖而出的特性中,以下特性脱颖而出:
- 能够指定要跟踪的syscall名称过滤器(使用-e trace =选项):按名称,例如clone,fork,vfork; 使用预定义的组之一,例如%ipc或%file; 或(自版本4.17开始)使用正则表达式语法,例如clock_ *。
- 指定要跟踪的路由列表(例如,-P /etc/ld.so.cache)。
- 指定应转储I / O的文件描述符列表
- 计算执行时间和系统调用计数
- 打印相对或绝对时间戳
- 修改指定系统调用的返回码和错误代码,并在执行后注入信号
- 有关文件描述符(包括套接字)的信息提取。
- 堆栈跟踪打印,包括(自版本4.21起)需求符号(-k)。
- 按系统调用返回状态过滤
- strace支持解码某些ioctl命令类的参数,例如BTRFS_ *,V4L2_ *,DM_ *,NSFS_ *,MEM *,EVIO *,KVM_ *,以及其他一些参数。
由于strace仅详述系统调用, 它不能用于检测像GNU Debugger(gdb)之类的代码调试器一样多的问题。 但是,它比代码调试器更易于使用,并且对于系统管理员来说是极为有用的工具。 研究人员还使用它来生成系统调用跟踪,以供以后重播。
关于新版本的Strace 5.3
最近发布了新版本的strace 5.3,其中 试用版的代码许可从BSD更改为LGPLv2.1 +和GPLv2 +。
同样在突出的变化之内 通过创建seccomp过滤器支持过滤系统调用 (“ –Seccomp-bpf”)以及返回码(“ -e status = ...”)。
在此新版本的公告中引人注目的另一个变化是,开发人员添加了 支持pidfd_open和clone3解码系统调用, 以及对io_cancel,io_submit,s390_sthyi和syslog系统调用的改进解码。
同样在广告中突出显示了 ioctl命令列表与Linux 5.3内核同步
其他变化 广告中提到的是:
- 改进的NETLINK_ROUTE协议解码
- 解码的网络链接属性UNIX_DIAG_UID和WDIOC_ * ioctl命令
- 常量列表AUDIT_ *,BPF_ *,ETH_ *,KEYCTL_ *,KVM_ *,MAP_ *,SO_ *,TCP_ *,V4L2_ *,XDP_ *和* _MAGIC已更新
如何在Ubuntu及其衍生产品上安装strace 5.3?
可以在Ubuntu存储库及其衍生版本中找到Strace实用程序,但可以 到此新版本,它尚未包含在存储库中。 通过执行以下命令,可以完成通过存储库的安装:
sudo apt install strace
现在 对于那些想要安装此新版本的用户,应下载源代码并进行编译 在您的系统上。
他们使用以下命令下载源代码:
git https://gitlab.com/strace/strace.git
他们输入:
cd strace
他们编译为:
./configure && make && make install
最后,关于使用,您可以在网上找到一些指南。