linux - 如何使用 SystemTap 在 VFS 上探测文件打开和关闭

标签 linux vfs systemtap

我看到了使用 probe syscall.open.return { } 的 SystemTap 脚本示例 但是有一些应用程序不调用系统调用 那么我如何探测在 VFS 上打开的文件

最佳答案

如果您知道要探测 vfs 打开操作,请执行以下操作:

# stap -L 'kernel.function("vfs_*")'
[...]
kernel.function("vfs_open@fs/open.c:862") $path:struct path const* $filp:struct file* $cred:struct cred const*
[...]

# stap -e 'probe kernel.function("vfs_open") { /* ... */ }'

... 可以包括打印上下文变量、调用进程的标识、回溯、task_dentry_path(task_current(), $path->dentry, $path->mnt)

关于linux - 如何使用 SystemTap 在 VFS 上探测文件打开和关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32230768/

相关文章:

java - 在java程序中执行bash命令

android - 如何跟踪在 Linux 内核中调用 memcpy() 的时间?

linux - 列出进程以有效方式访问的所有文件

c - 为什么 _do_fork() 的 kretprobe 只返回一次?

c - 包装 abort() 系统调用时的奇怪行为

mysql - 如何解析MySQL慢查询日志中最近24小时的条目

c - 如何使用简单的 Daemon C 代码在 Ubuntu 16.10 中启动 systemctl 服务

c - Linux 内核是否重用具有重复挂载点的 dentry 结构?如果是这样,怎么办?

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

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