gpt4 book ai didi

linux-kernel - ftrace 是否允许将系统调用参数捕获到 Linux 内核,还是只允许捕获函数名称?

转载 作者:行者123 更新时间:2023-12-04 05:24:34 25 4
gpt4 key购买 nike

目标是检查任何进程传递给特定系统调用(例如 exec、open 等)的参数。

来自 official documentation ,没有描述记录函数参数的能力(主要看“函数”跟踪器,因为我不需要图表)。

如果我真的可以在 ftrace 的框架内做到这一点,我想确保我不会忽视某些东西并浪费时间使用更奇特的东西。

最佳答案

我对 ftrace 的经验有限,虽然我已经将它用于函数堆栈跟踪和延迟问题。 (有更多经验的人可能会建议)使用 trace-cmd 的体验几乎相同。和 kernelshark .

但是,如果您想在内核空间中跟踪系统调用、函数参数、内核 API 和返回值等,更好的选择是使用 systemtap .它有一个广泛的列表 Samples & Doc这对于函数调用跟踪、传递的参数值等很有用。您可能需要查看一些示例并根据您的要求调整它们。见 general/para-callgraph-verbose.stpprocess/sleeptime.stp


一般/para-callgraph-verbose.stp - 带有详细参数的调用图跟踪
关键词:TRACE CALLGRAPH

打印定时的每线程微秒定时调用图,并带有打印精美的函数参数和返回值。第一个参数命名要跟踪的函数探测点。可选的第二个参数命名触发器函数的探测点,它的作用是仅对当前线程嵌套在触发器中时发生的那些函数启用跟踪。

stap para-callgraph-verbose.stp 'kernel.function("*@fs/proc*.c")' \
'kernel.function("vfs_read")' -c "cat /proc/sys/vm/* || true"

流程/strace.stp - 跟踪系统调用
关键词:_BEST PROCESS SYSCALL

当应用于单个进程或层次结构(通过 -c/-x)或整个系统(没有 -c/-x)时,该脚本松散地模拟了 strace。可以使用 -G 设置一些输出配置参数。
stap strace.stp -c "sleep 1"



请注意,您需要安装正确版本的 debug kernelkernel-devel rpms/deb for stap正常工作。为此,只需使用 stap-prep并根据您使用的风格安装显示的依赖项。

关于linux-kernel - ftrace 是否允许将系统调用参数捕获到 Linux 内核,还是只允许捕获函数名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27608752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com