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 命令来解决和调试系统调用和进程。