我试图通过clang-13编译自己的内核,并在此基础上运行systemtap。我已经启用了CONFIG_DEBUG_INFO、CONFIG_DEBUG_KERNEL和所有其他默认调试信任,包括CONFIG_KPROBES、CONFIG_UPROBES。另外,我还禁用了CONFIG_RANDOMIZE_BASE。为了编译和安装,我运行了make -j8 bindeb-pkg && sudo dpkg -i ../*.deb。从下面的屏幕截图中可以看到,安装了dbg包,并且sha256确认vmlinux匹配,所以systemtap应该可以访问它的符号。然而,似乎并非如此,因为系统挖掘失败了。
此外,我用clang-13编译了最新的系统点击,如下所示:make -j8 CC=clang-13 CXX=clang++-13 CFLAGS="-Wno-error" CXXFLAGS="-Wno-error"。
系统点击版本是4.7/0.170,上面写着tested kernel versions: 2.6.32 ... 5.15.0-rc7。我可能漏掉了什么东西。

发布于 2022-02-19 13:16:59
stap中的跟踪点是通过咀嚼内核头(有时是源)来识别的。您可以检查stap是否更详细地找到它们,例如:
stap -k -p2 --poison-cache --vp 04 -e 'probe ....'如果它正常工作,您将看到许多与"tracequery“相关的编译器调用,并且您可以看到$TMPDIR下搜索的剩余部分(由于-k选项)。
https://stackoverflow.com/questions/71001652
复制相似问题