Now make it work for other common CPUs (aarch64, RISC-V).
Make it work for other OSes (FreeBSD has ptrace, for example).
Make sure it handles signal and thread trampolines, calls through the VDSO, and handwritten assembler that does not have function prologues. Handle C++ constructors and destructors of objects in static storage running before/after main().
Have it intercept signals. Have it follow the child or the parent after forking. Have it handle multiple threads.
Make it work with coredumps.
Make it work on core dumps from a foreign CPU architecture (big-endian PowerPC, for example).
Make it work with debug symbols in separate files from the executable.
Make it work with binaries compiled from languages other than C.
You're going to be busy for the next 20 years or so.