我正在使用以下DTrace脚本来跟踪bash的读写系统调用:
syscall::write:entry,
syscall::read:entry
/execname == "bash"/
{
}
它成功匹配2个探测器,但无论我键入什么,我只看到读取调用。没有写入调用报告。当shell回到屏幕时,我期待得到写入调用。
脚本是错误的,还是我对bash如何工作的错误假设?
我在OSX Mountain Lion下运行
答案 0 :(得分:1)
在“写入”后尝试使用通配符。这将列出匹配的探针:
sudo dtrace -l -n 'syscall::write*:entry'
这可能会让你得到你期望的输出:
syscall::write*:entry,
syscall::read*:entry
/execname == "bash"/
{
}
正在使用的呼叫可能是write_nocancel
。