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"); }'
每当进程 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"); }'