【发布时间】:2010-11-03 21:04:29
【问题描述】:
如何监控进程的系统调用?
【问题讨论】:
-
糟糕,我无意中选择了“属于 uservoice.com” - 意在选择 serverfault.com
-
我一直在监控系统调用,同时诊断程序中的问题。我认为没有理由将此问题归咎于服务器故障。这是一个关于调试技术的问题。
标签: unix debugging monitoring system-calls
如何监控进程的系统调用?
【问题讨论】:
标签: unix debugging monitoring system-calls
查看strace
在最简单的情况下,strace 会运行指定的命令直到它退出。它拦截并记录进程调用的系统调用和进程接收到的信号。每个系统调用的名称、它的参数和它的返回值都打印在标准错误或使用 -o 选项指定的文件中。
跟踪中的每一行都包含系统调用名称,后面是括号中的参数及其返回值。
【讨论】:
strace 相对偏向 Linux,尽管它现在似乎可以在其他平台上运行。 SunOS 有一个类似的(和更早的)truss 实用程序,由 Solaris 继承;我相信 truss 也可以在 BSD 上运行,它们有自己的 ktrace 实用程序。我从未使用过它们,但我听说 Irix 和 Tru64 分别有 par 和 trace,它们都具有相同的用途。