0

我正在使用以下 DTrace 脚本来跟踪 bash 的读写系统调用:

syscall::write:entry,
syscall::read:entry
/execname == "bash"/
{

}

它成功匹配了 2 个探针,但无论我输入什么,我都只看到读取调用。没有报告写调用。当 shell 回显到屏幕时,我期待收到 write 调用。

脚本是错误的,还是我对 bash 的工作原理有错误的假设?

我在 OSX Mountain Lion 下运行

4

1 回答 1

1

在“写”之后尝试使用通配符。这将列出匹配的探针:

sudo dtrace -l -n 'syscall::write*:entry'

这可能会为您提供您期望的输出:

syscall::write*:entry,
syscall::read*:entry
/execname == "bash"/
{

}

正在使用的呼叫可能是write_nocancel.

于 2013-04-06T14:24:04.667 回答