How to trace just system call events with ftrace without showing any other functions in the Linux kernel?

后端 未结 2 1548

For example, to monitor all mkdir calls made, the best I could come up with was:

#!/bin/sh
set -eux

d=debug/tracing

mkdir -p debug
if ! mountp         


        
2条回答
  •  余生分开走
    2020-12-10 21:42

    In addition, it's worth mention another concise way to gain such info. One can do something like:

    stap -e 'probe syscall.mkdir { printf("%s[%d] -> %s(%s)\n", execname(), pid(), name, argstr) }'
    

    The output:

    systemd-journal[318] -> mkdir("/var/log/journal/c8d2562a041649cdbfd1ac5e24dbe0db", 0755)
    systemd-journal[318] -> mkdir("/var/log/journal/c8d2562a041649cdbfd1ac5e24dbe0db", 0755)
    mkdir[4870] -> mkdir("wtf", 0777)
    ...
    

    Another way:

    stap -e 'probe kernel.function("sys_mkdir") { printf("%s[%d] (%s)\n", execname(), pid(), $$parms) }'
    

    The output:

    systemd-journal[318] (pathname=0x55b74f7ab8b0 mode=0x1ed)
    systemd-journal[318] (pathname=0x55b74f7ab8b0 mode=0x1ed)
    mkdir[8532] (pathname=0x7ffcf30af761 mode=0x1ff)
    ...
    

    You can customize the output as you like.

    P.S. Systemtap is based on kprobes. Architecture doc will help to understand its internals.

    More about the SystemTap.

提交回复
热议问题