linux-kernel – ftrace是否允许捕获Linux内核的系统调用参数,或
目标是检查任何进程传递给特定系统调用(例如exec,open等)的参数.
从official documentation开始,没有描述记录函数参数的能力(主要看“函数”跟踪器,因为我不需要图形). 如果我能在ftrace的框架内实际做到这一点,我想确保我不会忽视某些东西并浪费时间使用更具异国情调的东西. 解决方法
我对ftrace的经验有限,尽管我已经将它用于函数堆栈跟踪和延迟问题. (具有更多经验的人可能会建议)使用trace-cmd和kernelshark的体验非常相似.
但是,如果要在内核空间中跟踪系统调用,函数参数,内核API和返回值等,则更好的选择是使用systemtap.它有一个广泛的Samples & Doc列表,它适用于函数调用跟踪,参数值传递等.您可能需要查看一些示例并根据您的要求进行调整.请参阅general / para-callgraph-verbose.stp和process / sleeptime.stp “ general / para-callgraph-verbose.stp – 带有详细参数的Callgraph跟踪 打印一个定时的每线程微秒定时调用图,包括漂亮打印的函数参数和返回值.第一个参数命名函数探针指向跟踪.可选的第二个参数为触发器函数命名探测点,这些触发器函数仅用于跟踪当前线程嵌套在触发器中时发生的那些函数. stap para-callgraph-verbose.stp 'kernel.function("*@fs/proc*.c")' 'kernel.function("vfs_read")' -c "cat /proc/sys/vm/* || true" process / strace.stp – 跟踪系统调用 当应用于单个进程或层次结构(通过-c / -x)或整个系统(不带-c / -x)时,脚本会松散地模拟strace.可以使用-G设置一些输出配置参数. stap strace.stp -c "sleep 1" “ 请注意,您需要安装正确版本的调试内核和kernel-devel rpms / deb才能使stap正常工作.为此,只需使用stap-prep并根据您所使用的风格安装显示的依赖项. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |