#!/usr/bin/env stap # Show all the systemcalls that an executable makes. # Usage: stap -c progname all_syscalls.stp OR # ./all_syscalls.stp -c progname global indent, indent_str probe begin { indent = 0 for (i=0; i<20; i++) { if (i == 0) indent_str[0] = "" else indent_str[i] = indent_str[i-1] . " " } } probe kernel.function("sys_*") ?, kernel.function("sys32_*") ?, kernel.function("compat_sys_*") ? { if (pid() == target()) { printf("%s%s\n", indent_str[indent], pp()) indent++ } } probe kernel.function("sys_*").return ?, kernel.function("sys32_*").return ?, kernel.function("compat_sys_*").return ? { if (pid() == target()) { if (indent) indent-- } } probe end { printf("\n") }