我已经尝试过这些,但它们都产生“空”输出文件:
trace-cmd record -p function_graph -g munmap -F ls
trace-cmd record -p function_graph -g sys_enter_munmap -F ls
trace-cmd record -p function_graph -g sys_enter -F ls
我已经尝试过这些,但它们都产生“空”输出文件:
trace-cmd record -p function_graph -g munmap -F ls
trace-cmd record -p function_graph -g sys_enter_munmap -F ls
trace-cmd record -p function_graph -g sys_enter -F ls
首先,您需要获得正确的函数名称 - 例如,用于跟踪open
系统调用的函数名称是sys_open
.
要以“正确”的方式执行此操作,必须function_graph
在内核中获得支持。在 x86 架构上,这取决于 CC_OPTIMIZE_FOR_SIZE 被禁用,但在 x86_64 上则不然。
就我而言,我没有费心编译自定义内核来禁用 CC_OPTIMIZE_FOR_SIZE,我只是做了
trace-cmd record -p function --func-stack
并包括各种看起来像是可以通过添加几个-l
选项来调用的函数。这足以弄清楚我想知道什么。