我知道我可以编写一个内插器来观察传递给strncpy库调用的参数,但看起来这对DTrace来说应该很容易.
这是一个工作变体(仅在Mac上测试):
#!/usr/sbin/dtrace -s
pid$target::strncpy:entry
{
printf( "%s( %X, %s, %lld )\n",
probefunc,
arg0,
copyinstr(arg1),
arg2 );
}
Run Code Online (Sandbox Code Playgroud)
copyinstr
因为字符串来自userland到内核,所以是必需的.