【问题标题】:The third exercise of section 2.3 "Exercises" for the official systemtap tutorial官方systemtap教程第2.3节“练习”的第三个练习
【发布时间】:2013-12-25 04:59:38
【问题描述】:

问题描述:

清单:socket_trace.stp

probe kernel.function("*@net/socket.c").call{
    printf("%s -> %s\n", thread_indent(1), ppfunc())
}
probe kernel.function("*@net/socket.c").return {
    printf("%s <- %s\n", thread_indent(-1), ppfunc())
}

通过从第一个探测中删除 .call 修饰符来更改列表。注意函数入口和函数返回现在不再匹配了。这是因为现在第一个探针将匹配普通函数入口和内联函数。尝试将 .call 修饰符放回去并添加另一个探针,仅用于探针 kernel.function("*@net/socket.c").return 您可以在探针处理程序中使用什么 printf 语句来很好地显示内联函数条目在 .call 和 .return 线程缩进输出之间?

我不知道如何显示函数返回探针处理程序中发生了内联函数调用(如果有的话)?有人可以帮忙吗?提前致谢。

【问题讨论】:

    标签: function return call inline systemtap


    【解决方案1】:
    probe kernel.function("*@net/socket.c").inline {
        printf("%s -- %s\n", thread_indent(0), ppfunc())
    }
    

    【讨论】:

    • 一般来说,除了发布代码之外,最好解释一下您的解决方案为何有效。
    • 在上下文中,哪一部分不是不言自明的?
    • 你的解决方案和我的一样。但是,问题 desc 要求“仅为探针 kernel.function("*@net/socket.c").return 添加另一个探针”,这让我很困惑......
    • 我修正了教程的措辞。 sourceware.org/git/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    • 2022-12-07
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    相关资源
    最近更新 更多