Kernel
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。我懷疑我在編譯時錯過了一些東西。
我意識到這是編譯核心時有關 gcc 的問題。我應用了下面的更新檔並修復了。