Systemtap 无法解析探测点,尽管它显示在探测列表中

Systemtap 无法解析探测点,尽管它显示在探测列表中

我正在尝试使用 systemtap 调试 netfilter synproxy 模块。

这是我试图添加的探测点。

# stap -l 'module("ipt_SYNPROXY").statement("*")' | grep send_client_synack
module("ipt_SYNPROXY").statement("synproxy_send_client_synack@net/ipv4/netfilter/ipt_SYNPROXY.c:72")

这就是 stap 脚本的样子

probe module("ipt_SYNPROXY").statement("synproxy_send_client_synack@net/ipv4/netfilter/ipt_SYNPROXY.c:72"){

//some code

}

当我尝试运行它时出现以下错误

semantic error: no line records for net/ipv4/netfilter/ipt_SYNPROXY.c:72 [man error::dwarf]

semantic error: resolution failed in DWARF builder

semantic error: while resolving probe point: identifier 'module' at netfilter.stp:915:7
        source: probe module("ipt_SYNPROXY").statement("synproxy_send_client_synack@net/ipv4/netfilter/ipt_SYNPROXY.c:72"){
                      ^

semantic error: no match

我尝试了一些其他探测点,并意识到并非所有探测点都会出现此错误。例如下面的探头工作正常

probe module("ipt_SYNPROXY").statement("ipv4_synproxy_hook@net/ipv4/netfilter/ipt_SYNPROXY.c:314"){
    //some code
}

我自己编译的内核版本4.14.128。我怀疑我在编译时错过了一些东西。

答案1

我意识到这是编译内核时关于 gcc 的问题。我应用了下面的补丁并修复了。

https://lkml.org/lkml/2015/4/23/605

相关内容