当前位置:网站首页 > 技术博客 > 正文

strace命令详解




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 命令是一个方便且功能强大的命令行实用程序,可帮助调试应用程序、命令和进程,特别是在您没有可用源代码的情况下。它是软件开发人员和系统管理员的首选工具。

版权声明


相关文章:

  • 我的世界java版本大全2025-01-24 19:30:00
  • spring aspectj aop2025-01-24 19:30:00
  • 什么是数据库的事务处理2025-01-24 19:30:00
  • 抓包packet capture2025-01-24 19:30:00
  • 深度神经网络通俗理解2025-01-24 19:30:00
  • 对称密码算法和非对称密码算法2025-01-24 19:30:00
  • 滑动验证代码2025-01-24 19:30:00
  • 方舟生存进化神器大全_神器位置_攻略-4399方舟生存进2025-01-24 19:30:00
  • @aspect注解与@pointcut2025-01-24 19:30:00
  • pthread_cond_wait2025-01-24 19:30:00