dtrace:同时在多个库上使用 pid 提供程序

dtrace: use pid provider on multiple libraries simultaneously

每当进程 12345 在 libx 中调用任何函数时,都会触发此 dtrace 脚本。

dtrace -q -n 'pid12345:libx::entry { printf("probe fired"); }'

但我真正想要的是检测几个库中的函数调用,例如 libx、liby 和 libz...类似:

dtrace -q -n 'pid12345:libx,liby,libz::entry { printf("probe fired"); }'

有谁知道使用 pid 提供程序或任何其他提供程序是否可行?

谢谢!

我想我找到了自己问题的答案,但欢迎任何其他建议。我找到的解决方案是添加多个逗号分隔的探针:

dtrace -q -n 'pid12345:libx::entry, pid12345:liby::entry, pid12345:libz::entry { printf("probe fired"); }'

您可以在探针描述中使用globbing,例如

dtrace -q -n 'pid12345:lib[xyz].so::entry { printf("probe fired"); }'