Tip
Sherlock (debugger) is ready with basic funtionalities like breakpoint, backtrace, single-step, info, print (inspect), etc. Checkout the sherlock directory for more.
I have also written a series of blog on some of the core concepts used in building the debugger. You can find it on my blog site: Writing a Debugger form Scratch
Warning
This project is not to be used in production environments. It is intended for educational purposes only. It is my personal project to learn about system programming, tracing, and debugging on Linux x86_64 systems.
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.
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.
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
Sherlock in useFor PID attachment mode you will need
sudoprivileges.
