"Nobody can write perfect code, since errors can creep in from
anywhere. Hence we need some way to debug the programs. One such
way is to use ptrace() system call. Debugging programs like gdb are
dependent on this system call. This call gives one process control
over another process. The process under control can be run
step-by-step and its contents can be read and modified, i.e. you
can change the core image of it. The code for this call is
available in directory /arch/i386/kernel/ptrace.c..."