In 2013, I designed a tool that traces function calls. It is quite similar to strace and ltrace, but instead of tracing syscalls or library calls, it traces every function call made from the executable. This tool was covered in Chapter 2, The ELF Binary Format, but it is quite relevant to the topic of ptrace. This is because it is completely dependent on ptrace and performs some pretty wicked dynamic analysis using control flow monitoring. The source code can be found on GitHub: