[ad_1]
Strace 是一个非常强大的调试命令行实用工具,它通过监视特定程序的系统调用和信号来帮助解决问题。 如果我们没有可用的源代码,可以使用 strace 来分析程序如何与系统交互。 在本文中,我们将讨论一些用于对 Linux 中的程序和进程进行故障排除和调试的重要 strace 命令。
安装
strace 实用工具的安装是一个简单易行的过程。 使用以下命令根据您的 Linux 发行版安装应用程序。
Debian/Ubuntu
$ sudo apt install strace
红帽/CentOS
$ yum install strace
通过运行以下命令验证安装
$ strace -V
输出:
1.使用strace跟踪Linux命令系统调用
Strace 在跟踪 Linux 命令系统调用时很有帮助。 在这个例子中,一个简单的命令 密码 用于跟踪。
$ strace pwd
输出:
2. 将跟踪日志重定向到文件中
系统调用跟踪日志可以使用 strace 命令重定向到一个文件,如下所示:
$ strace -o pwd-log.txt 密码
使用 cat 命令查找文件内容为:
$ cat pwd-log.txt
3. 使用strace 打印系统调用摘要而不是常规输出。
使用带有选项 -c 的 strace 可以打印日志摘要。 在此示例中,提供了 linux 命令 pwd 的摘要。
$ strace -c pwd
输出:
4. 使用 strace 跟踪特定的系统调用
带有选项 -e 和跟踪类型(读、写)的 Strace 命令可用于跟踪特定的系统调用。 在此示例中,正在跟踪命令 pwd 的 write 系统调用。
$ strace -e trace=write pwd
输出:
5. strace 命令打印每个系统调用的时间戳。
带有 -r 选项的 Strace 命令可用于打印每个系统调用的所有相关时间戳。
$ strace -r pwd
输出:
6.使用进程ID进行跟踪
如果系统中已经有任何进程在运行,则可以使用带有选项 -p 的 strace 命令以及进程 ID 来跟踪系统调用。 本例中使用nginx的进程id进行跟踪
句法
$ strace -p <process id>
$ strace -p 12842
按 ctrl+c 可以停止跟踪。
7.strace命令打印调试输出
带有选项 -d 的 Strace 命令可用于打印调试输出。 在这个例子中,一个简单的 Linux 命令 pwd 用于跟踪。
$ strace -d pwd
输出:
8. Strace 命令打印系统调用所花费的时间。
带有选项 -T 的 Strace 命令给出了花费在系统调用上的时间:
$ strace -T pwd
输出:
9、strace命令打印指令指针
带有 -i 选项的 Strace 命令打印指令指针。 在这个例子中,一个简单的 Linux 命令 pwd 用于跟踪。
$ strace -i pwd
输出:
10.根据特定条件跟踪系统调用的strace命令
strace 命令可用于根据内存、进程、CPU 等特定条件来跟踪系统调用。在本示例中,针对一个简单的 Linux 命令 pwd 跟踪与内存管理相关的系统调用。
$ strace -q -e 内存密码
输出:
11. 跟踪信号相关系统调用的strace命令
可以通过在命令中定义跟踪类型来跟踪与信号相关的系统调用。 在这个例子中 nc -v -n 本地主机 80 用于跟踪与信号相关的系统调用。
$ strace -e trace=signal nc -v -n 127.0.0.1 80
输出:
结论
在本文中,我们了解了什么是 strace 实用工具以及何时可以使用它。 此外,我还介绍了一些用于对系统调用和进程进行故障排除和调试的重要 strace 命令。
[ad_2]