我正在学习系统Tap实用程序以调试Linux内核。
这是示例代码:
probe module("e1000").function("e1000_get*") {
printf("%s\n", ppfunc())
}
probe module("e1000").function("e1000_get*").return {
printf("%s \n", ppfunc())
}
两者之间有什么区别
probe module("e1000").function("e1000_get*")
和探针module("e1000").function("e1000_get*").call
我知道调用是针对函数入口的,是上面针对入口和出口的
答案 0 :(得分:3)
来自File Error:data may have been lost while giving hyperlinks systemtap:
.function
变体在名称的开头附近放置一个探针 函数,以便将参数用作上下文变量。
.return
变体在从 命名函数,因此返回值可用作$ return 上下文变量。输入参数也可用,尽管 函数可能已更改其值。
...
.inline
的{{1}}修饰符过滤结果以仅包括 内联函数的实例。.function
修饰符选择 相反的子集。
因此.call
修饰符是仅从结果中获取“调用”(如此)。