A couple of useful blog posts: How to code debuggers is really long and detailed, and explains how ptrace works Writing a minimal debugger has an example of a basic debugger.