This project was not build using any LLMs. Only the Makefile and some parts of the README.md were generated using LLMs.
The purpose of this project is to create a suite of tracing and debugging tools for Linux x86_64 systems. The tools are inspired by popular existing tools like strace, ltrace, and gdb, but are implemented from scratch to provide a deeper understanding of how these tools work under the hood.
These projects will accompany a series of blog posts that will explain the implementation details and the concepts involved in building them. I will also try to do a kernel study to understand how the Linux kernel supports these functionalities.
This repository contains source code for the following tracers:
watson: A system call tracer for Linux x86_64, inspired bystrace.irene: A library call tracer for Linux x86_64, inspired byltrace.sherlock: A debugger for Linux x86_64, inspired bygdb.
For notes and other information, please open the individual directories, which contain their own README.md files.
Note: At this point only
watsonandireneare functional.sherlockis still under development.
The binary will be created in the build directory in the root of the project.
You can either build the tracers individually or all at once. For building all at once, run:
make allTo build individual tracers, use:
make watson
make irene
make sherlockOr you can also open the individual directories and run make there.
To run the programs - ./build/<tracer> --help
For PID attachment mode you will need
sudoprivileges.