SystemTap is a free and open source software that provides infrastructure to simplify the gathering of information about the running Linux system. This tutorial explains how to use SystemTap with your Linux based system. From the article:
SystemTap is a tool designed to allow you to probe the Linux kernel for debugging purposes. It lets you hook any kernel function (yes, any C function defined anywhere in the kernel) and log the argument values, or other system state. Scripts are written in a special language designed to prevent you from doing anything that could break your system.
But it turns out you can do more than just read: With the -g flag (for “guru mode”, in which you accept responsibility for your actions), you can not just read, but modify. Moreover, you can inject raw C code, escaping the restrictions of SystemTap’s normal language.
SystemTap’s command-line tool, stap, compiles your script into a Linux kernel module and loads it. The module, on load, will find the function you want to probe and will overwrite it with a jump to your probing code. The probe code does what you specify, then jumps back to the original function body to continue as usual. When you terminate stap (e.g. via ctrl+C on the command line), it unloads the module, restoring the probed function to its original state.
- Read more:How to Monkey-Patch the Linux Kernel