linux-kernel - 如何知道我当前正在处理的系统调用的名称?

标签 linux-kernel stack-trace system-calls

我正在尝试通过在 avc_audit() 函数中打印一些信息来调试 SELinux。我需要的信息是当前的pid和系统调用。 pid 很简单:get_current()->pid,但我找不到一种方法来获取我正在处理的当前系统调用。

我已经查看了 get_wchan(),但它仅适用于等待进程。我可以像 get_wchan() 那样检查堆栈,但有更好的方法吗?

最佳答案

在代码中调用 dump_stack(),这将为您提供系统日志中的堆栈跟踪,这应该可以帮助您确定调用了哪个系统调用。有更好的方法来跟踪内核中的系统调用、systemtap、ftrace 等。您可能需要开始研究 process/strace.stp

关于linux-kernel - 如何知道我当前正在处理的系统调用的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27740234/

相关文章:

c - Linux 内核 : how to traverse physical pages in mem_map from user space using/dev/mem?

c - 我怎样才能为 ioctl 选择一个好的魔法/类型数字?

c - 为什么在内核模式下执行回调函数不好?

c - "alignment trap"错误信息中各项的含义是什么?

fork() 的输出困惑

ptrace 是否可以导致被跟踪进程在不访问可执行系统调用指令的情况下执行系统调用?

python - linux中看似没有正常系统调用,python如何判断PID?

c# - Azure Functions v1 中的 HTTP 触发器如何返回异步堆栈跟踪?

javascript - SpiderMonkey 堆栈跟踪中的函数名称

jsf - Facelets 自定义错误页面 - 自定义/包装异常消息/堆栈跟踪