是否可以使用DTrace查看传递给strncpy的参数?

是否可以使用DTrace查看传递给strncpy的参数?

问题描述:

我知道我可以编写一个interposer来观察传递给strncpy库调用的参数,但看起来这应该很容易处理DTrace。是否可以使用DTrace查看传递给strncpy的参数?

这里的工作变型(仅在Mac上测试):


#!/usr/sbin/dtrace -s 
pid$target::strncpy:entry 
{ 
    printf("%s(%X, %s, %lld)\n", 
     probefunc, 
     arg0, 
     copyinstr(arg1), 
     arg2); 
} 

copyinstr因为字符串来自于用户空间到内核是必需的。