systemtap

时间:2018-12-21 03:30:09

标签: linux debugging linux-kernel systemtap

我正在学习系统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

我知道调用是针对函数入口的,是上面针对入口和出口的

1 个答案:

答案 0 :(得分:3)

来自File Error:data may have been lost while giving hyperlinks

  

.function变体在名称的开头附近放置一个探针   函数,以便将参数用作上下文变量。

     

.return变体在从   命名函数,因此返回值可用作$ return   上下文变量。输入参数也可用,尽管   函数可能已更改其值。

...

  

.inline的{​​{1}}修饰符过滤结果以仅包括   内联函数的实例。 .function修饰符选择   相反的子集。

因此.call修饰符是仅从结果中获取“调用”(如此)。