11 Strace 命令与 Linux 中的示例

Strace 是一个非常强大的调试命令行实用工具,它通过监视特定程序的系统调用和信号来帮助解决问题。 如果我们没有可用的源代码,可以使用 strace 来分析程序如何与系统交互。 在本文中,我们将讨论一些重要的 strace 命令,用于对 Linux 中的程序和进程进行故障排除和调试。

安装

strace 实用工具的安装是一个简单明了的过程。 使用以下命令根据您的 Linux 发行版安装应用程序。

Debian/Ubuntu

$ sudo apt install strace

红帽/CentOS

$ yum install strace

通过运行以下命令验证安装

$ strace -V

输出:

1.使用 strace 跟踪 Linux 命令系统调用

Strace 在跟踪 Linux 命令系统调用时很有帮助。 在这个 example一个简单的命令 密码 用于追踪。

$ strace pwd

输出:

2. 重定向文件中的跟踪日志

可以使用 strace 命令将系统调用跟踪日志重定向到文件,如下所示:

$ strace -o pwd-log.txt 密码

使用 cat 命令查找文件的内容为:

$ cat pwd-log.txt

3. 使用 strace 打印系统调用摘要而不是常规输出。

使用带有选项 -c 的 strace 可以打印日志摘要。 在这个 example,给出了 linux 命令 pwd 的摘要。

$ strace -c pwd

输出:

4. 使用 strace 跟踪特定的系统调用

带有选项 -e 和跟踪类型(读、写)的 strace 命令可用于跟踪特定的系统调用。 在这个 example,正在跟踪命令 pwd 的 write 系统调用。

$ strace -e trace=write pwd

输出:

5. strace 命令打印每个系统调用的时间戳。

带有选项 -r 的 strace 命令可用于打印每个系统调用的所有相对时间戳。

$ strace -r pwd

输出:

6. 使用进程id进行跟踪

如果系统中已经有任何进程在运行,则可以使用带有选项 -p 和进程 ID 的 strace 命令来跟踪系统调用。 在这个 examplenginx的进程id用于追踪

句法

$ strace -p <process id>
$ strace -p 12842

按 ctrl+c 可以停止跟踪。

7.strace命令打印调试输出

带有选项 -d 的 Strace 命令可用于打印调试输出。 在这个 example,一个简单的 Linux 命令 pwd 用于跟踪。

$ strace -d pwd

输出:

8. strace 命令打印系统调用所花费的时间。

带有选项 -T 的 Strace 命令给出了系统调用所花费的时间:

$ strace -T pwd

输出:

9.strace命令打印指令指针

带有选项 -i 的 Strace 命令打印指令指针。 在这个 example,一个简单的 Linux 命令 pwd 用于跟踪。

$ strace -i pwd

输出:

10. strace命令根据特定条件跟踪系统调用

strace 命令可用于根据内存、进程、CPU 等特定条件跟踪系统调用。在此 example,与内存管理相关的系统调用正在跟踪一个简单的 Linux 命令 pwd。

$ strace -q -e 内存密码

输出:

11、strace命令跟踪信号相关的系统调用

Signal- 相关的系统调用可以通过在命令中定义跟踪类型来跟踪。 在这个 example nc -v -n 本地主机 80 用于跟踪与信号相关的系统调用。

$ strace -e trace=signal nc -v -n 127.0.0.1 80

输出:

结论

在本文中,我们了解了什么是 strace 实用工具以及何时可以使用它。 此外,我还介绍了一些重要的 strace 命令来解决和调试系统调用和进程。