【问题标题】:dtrace: use pid provider on multiple libraries simultaneouslydtrace:同时在多个库上使用 pid 提供程序
【发布时间】:2015-07-28 15:41:34
【问题描述】:

每当进程 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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢罗伯特。非常有用。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-27
      • 1970-01-01
      • 1970-01-01
      • 2020-04-17
      • 2021-04-22
      • 1970-01-01
      相关资源
      最近更新 更多