Linux 提供了丰富的调试工具来对服务和应用程序进行故障排除。 Linux strace 命令是一个对开发人员有益的工具。 strace 命令是一种调试和故障排除工具,可拦截并记录进程发出和接收的系统调用。它提供了从头到尾的复杂的二进制序列。
在本教程中,我们将深入研究 Linux strace 命令并演示一些示例用法。
strace 命令采用以下语法:
大多数现代 Linux 发行版默认都附带 strace 实用程序。但是,如果您的系统由于某种原因未安装 strace,请按照以下步骤进行安装。
如果您运行的是基于 Debian/Ubuntu 的系统,请执行:
要验证 strace 是否已安装,您可以检查其版本,如下所示。
现在让我们看一些示例用法。
在其最基本的格式中,strace 命令将跟踪并显示系统调用、参数(用方括号或括号括起来)以及可执行调用。
在下面的示例中,我们可以看到运行脚本 hello.sh, call 的参数被放在第一行的括号中。
在最后一行,您可以看到命令的退出状态,在本例中为 0。这意味着命令已成功执行,没有任何错误。退出代码 -1 表示执行期间遇到错误。

如果您想获取系统调用的数量,请使用 -c 选项进行计数,如下所示。
从上面的输出中,您可以看到进行的系统调用的数量,包括进行的调用。
此外,您可以选择使用 -e 选项查看使用 strace 进行的系统调用的性质,后跟系统调用的性质。在所示的代码片段中,我们显示了写入和读取系统调用。
您可以通过指定调用类型来限制 strace 显示网络系统调用。这里。 trace=network表示我们打算获取网络命令ping 8.8.8.8 -c 4的网络调用。

对于与系统相关的调用,请使用以下命令中所示的参数。该命令打印 ping 8.8.8.8 -c 4 命令的信号调用者。

要提取每个系统调用的时间戳,请使用 -r 选项,如以下命令所示。
正如您所看到的,每个系统调用都会打印一个相对时间戳。捕获并记录连续系统调用之间的时间差。
此外,您可以使用 -T 选项打印每个系统调用所花费的持续时间,如下所示。所花费的时间显示在最后一列中,如图所示。

要打印系统调用的实际或准确时间,请调用 -t 选项,如图所示。实时或挂钟时间打印在第一列中。

要打印每个系统调用的指令指针,请使用-i选项。
最后,strace 命令提供了将输出保存到文本文件的选项,如图所示。
这里,sample_output.txt是输出文件,而https://cn.linux-console.net/hello.sh是我们正在跟踪其系统调用的命令。

Strace 命令是一个方便且功能强大的命令行实用程序,可帮助调试应用程序、命令和进程,特别是在您没有可用源代码的情况下。它是软件开发人员和系统管理员的首选工具。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/5168.html