ubuntu - kprobes 在 Ubuntu 中不起作用

标签 ubuntu ubuntu-13.10 systemtap

我正在尝试从 Systemtap 运行标准示例脚本之一。
procmod_watcher.stp 使用 kprobes 来监视 fork、exec 等。
但是当我尝试运行这个脚本时,我得到了一个错误。

semantic error: while resolving probe point: identifier 'kprobe' at /usr/share/systemtap/tapset/linux/nd_syscalls.stp:967:27
    source: probe nd_syscall.execve = kprobe.function("do_execve")

果然:stap -L 'kprobe.function("do_execve")'什么都不返回。
怎么会这样?

我正在使用 Ubuntu 已按照以下说明进行操作:
Systemtap on Ubuntu @sourceware

我还尝试编译我自己的内核并确保通过配置启用 Kprobes、debug_info 和所有其他必需项。
我犯了同样的错误。

我已经在 Fedora 上尝试过相同的脚本,它几乎是开箱即用的。但是我只有一个开启了fedora的虚拟机,并且想继续使用ubuntu一段时间。

我需要做什么才能在 ubuntu 的 systemtap 中启用 kprobes?

最佳答案

kprobe.function探针依靠 systemtap 读取 System.map函数列表文件。跑

stap -vv -L 'kprobe.function("do_execve")'

查看 stap 在哪里寻找该文件;它可能在提示“内核符号表......不可用”。安排放一个System.map符号链接(symbolic link),stap 应该找到它和 do_execve在其中发挥作用。我们可以扩展 stap 的搜索路径,在其原始位置找到文件;欢迎指点。或者如果问题是权限,
sudo chmod a+r /boot/System.map*

这是为了解决 https://wiki.ubuntu.com/Security/Features 中被误导的部分。 - 参见 https://sourceware.org/bugzilla/show_bug.cgi?id=15172

关于ubuntu - kprobes 在 Ubuntu 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23196278/

相关文章:

linux - 使用 shell 脚本从 postgreSQL 检索数据并通过邮件发送

c++ - 'asm' 中的操作数约束不一致

systemtap - 如何使用 systemtap 从用户空间探测访问返回值

ubuntu - vim netrw 不起作用

python - 如何在 Ubuntu 中分离进程

mysql - 无法在 Ubuntu 上安装 libjpeg-turbo8-dev

linux - Ubuntu 在输入密码后无法启动

c - 如何在 GDB 中为 open(2) 系统调用返回 -1 设置断点

linux-kernel - 检查 Linux 内核调试选项

python - 在 ubuntu 14.04 上安装 Scrapy 失败