10个用于对Linux进程进行故障排除和调试的Strace命令
嘻嘻发布于2020-07-17
最后更新于2020年7月7日
浏览文章目录
strace是一个功能强大的命令行工具,用于在类似Unix的操作系统(例如Linux)中调试和排除故障。它捕获并记录一个进程进行的所有系统调用以及该进程接收的信号。
它显示每个系统调用的名称以及括在圆括号中的参数以及其标准错误的返回值。您也可以选择将其重定向到文件。在本文中,我们将解释10个strace命令示例,用于对Linux系统中的程序和进程进行故障排除和调试。
如何安装
$ sudo apt install strace #Debian/Ubuntu
# yum install strace #RHEL/CentOS
# dnf install strace #Fedora 22+
跟踪Linux命令系统调用
$ strace df -h
跟踪Linux进程PID
如果某个进程已经在运行,则可以通过简单地传递其PID来跟踪它,如下所示:这将在屏幕上显示继续输出,以显示该进程正在进行的系统调用,要结束该进程,请按[Ctrl + C]
$ sudo strace -p 3569
获取Linux进程摘要
使用-c标志,可以生成每个系统调用的总时间,调用和错误的报告,如下所示。
$ sudo strace -c -p 3569
系统调用期间打印指令指针
-i选项在程序进行每个系统调用时显示指令指针。
$ sudo strace -i df -h
显示每个跟踪输出时间
$ sudo strace -t df -h
在系统调用中打印命令花费的时间
要显示程序在每个系统调用的开始和结束之间的时间差,请使用-T选项。
$ sudo strace -T df -h
仅跟踪特定的系统调用
在下面的命令中,trace = write被称为限定表达式,其中trace是限定符(其他包括signal,abbrev,verbose,raw,read或write)。在这里,write是限定符的值。
$ sudo strace -e trace=write df -h
根据特定条件跟踪系统调用
让我们看一下如何跟踪与给定事件类别有关的系统调用。此命令可用于跟踪涉及过程管理的所有系统调用。
$ sudo strace -q -e trace=process df -h
将跟踪输出重定向到文件
要将发送到标准错误的跟踪消息写入文件,请使用-o选项。这意味着仅命令输出将打印在屏幕上,如下所示。
$ sudo strace -o df_debug.txt df -h
显示Strace的一些调试输出
要显示strace工具的调试信息,请使用-d标志。
$ strace -d df -h
有关更多信息,请参见strace手册页。
$ man strace